Gå til innhold

Anbefalte innlegg

Forhåpentligvis er det noen der ute som har vært borti det. Personling har jeg slått hode litt mot veggen i ren frustrasjon i det siste. Konseptet er jo "alt for enkelt", men likevel får jeg bogus data når jeg loader inn mappet.

 

Jeg har laget meg et .RAW bilde i photoshop og lagret det fra den.

 

Koden under laster inn bildet:

std::ifstream ifs;
ifs.open("heightap.raw", std::ios::binary); 

 

Grunnen til at jeg holder meg til RAW formatet er at jeg har lyst til å prøve dette, så i første omgang har jeg ikke lyst til å rote så veldig med filtypers header.

 

Videre følger koden som setter inn verdiene mine i vertices, har markert linja som ikke fungerer.

for(int z=0; z < NUM_VERTSX; ++z)
{
for(int x=0; x < NUM_VERTSX; ++x)
{
vertices[x + z * NUM_VERTSX].Pos.x = (float)x * CELL_WIDTH;
vertices[x + z * NUM_VERTSX].Pos.z = (float)z * CELL_HEIGHT;
vertices[x + z * NUM_VERTSX].Pos.y = ifs.get(); //<-- Linja som ikke funker!
vertices[x + z * NUM_VERTSX].Color = D3DXVECTOR4(1.0, 1.0f, 1.0f, 0.0f);
vertices[x + z * NUM_VERTSX].Tex.x = x / (float)NUM_VERTSX;
vertices[x + z * NUM_VERTSX].Tex.y = z / (float)NUM_VERTSY;
}
}

 

Koden her er resultatet av masse googlesøk og tutorials. Har feks vært innom Chad Vernons tut, men han har bygget opp et litt komplekst "objektorientert" rammeverk, og jeg har lyst å eventuelt bygge mitt eget når jeg får de små "byggeklossene" på plass.

 

For de som ikke er helt med på DirectX og hva det er men har bedre kunnskap om C++ så er det jeg prøver å gjøre er å hente ut verdien pixel for pixel i bildet jeg laster opp. .RAW bildet er i gråskala. Hvitt er 255 og svart er da 0. Høyden på kartet jeg prøver å lage kjører igjennom bildet(.RAW) linje for linje og setter høyden til noden lik "høyden"(hvor mye hvitt) av pixelen.

 

Jeg har en litt eldre versjon av koden, hvor jeg getter filas innhold og plasserer den i char* str, når jeg da getter fila og slenger det på str får jeg 65536 (256 * 256, bildets dimensjoner) med 'Í'.

 

Så noen... hjelp!

Lenke til kommentar
Videoannonse
Annonse

Funksjonen er jo simpel nok, men etter det jeg kan se, er alt riktig, med unntak av at verdien av pixelen er 0 til 255 (som Giddion nevner)

Av erfaring vet jeg at det kan lønne seg å brke 16-bit integer eller 16-bit flyttall til heightmaps, da 255 variasjoner ofte er litt lite.

 

btw er det visst ikke bare jeg som bruker Z som innover og Y som oppover :D

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...