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...