Seite 1 von 1

Berechnen der Flächen Position in der Lightmap

Verfasst: 04.05.2009, 09:48
von vrCAT
Hallo ich hoffe Ihr könnt mir helfen, ich bin schon seit einigen Tagen auf der suche nach einem Algorithmus zur Positionierung der Flächen eines Raumes auf der Lightmap so das sie Optimal ausgenutzt wird.

Solltet ihr dafür Pappers oder Tutorials im Netz kennen dann würde ich mich freuen wenn Ihr diese mitteilen könntet.

Re: Berechnen der Flächen Position in der Lightmap

Verfasst: 04.05.2009, 10:41
von Jörg
UV-Unwrapping waere ein Stichwort zum Suchen.

Das uvatlas-tool aus dem DX SDK kann das auch.

Re: Berechnen der Flächen Position in der Lightmap

Verfasst: 04.05.2009, 13:53
von glassbear

Re: Berechnen der Flächen Position in der Lightmap

Verfasst: 05.05.2009, 17:15
von dowhilefor
selber machen wäre wohl binpacking. Guter artikel dazu.

Re: Berechnen der Flächen Position in der Lightmap

Verfasst: 12.05.2009, 12:37
von vrCAT
Super Danke das hat mir schon sehr weitergeholfen. Nun kommt die technische Umsetzung und ich habe wieder ein Problem. Ich arbeite mit OpenGLES jedoch derzeit im Editor mit OpenGL also alle Funktionen vorhanden.
Mein Problem ist nun aber das wenn ich die Lightmap erzeuge und ich die Luminanz der Pixel eintragen möchte das wohl was nicht stimmt.

Code: Alles auswählen

lightmap[0] = 255;
lightmap[1] = 255;
lightmap[2] = 255;
Mit diesem Codeschnipsel sollte ich eigentlich in der Lage sein in der Lightmap an Position (0,0) einen Weißen wert zu setzen. Jedoch erscheint er auf der verwendeten Texture eher auf Position(1,1). Nach dem ich den Byte-Array als Texture für OpenGL übergeben habe.

Code: Alles auswählen

glGenTextures(1, &texID);
glBindTexture(GL_TEXTURE_2D, texID);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TEXTURE_SIZE, TEXTURE_SIZE, 0, GL_RGB, GL_UNSIGNED_BYTE, lightmap);

Woran kann das liegen? Bin schon arg am verzweifeln da ich dazu noch nicht's passendes im Netz gefunden habe.

Re: Berechnen der Flächen Position in der Lightmap

Verfasst: 13.05.2009, 23:01
von Zudomon
Wenn man sich Texturkoordinaten anschaut, dann ist ein Texturintervall immer zwischen 0 - 1. Wenn eine Textur nun 4 Horizontale Texel hat, dann könnte man meinen, das die Texturkoordinaten dafür 0, 0.25, 0.5 und 0.75 wären. Dem ist aber nicht so, denn es muss beachtet werden, dass in der Texelmitte gesampelt werden muss. Also musst du auf alle Texturkoordinaten in diesem Fall immer 0.125 drauf rechnen.

Verallgemeinert gilt also, dass auf alle Texturkoordinaten ein halber Texel draufgerechnet werden muss:
u' = u + 0.5 / TexturWidth;
v' = v + 0.5 / TexturHeight;

Vielleicht löst das dein Problem...