Berechnen der Flächen Position in der Lightmap

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
vrCAT
Beiträge: 4
Registriert: 04.05.2009, 09:39

Berechnen der Flächen Position in der Lightmap

Beitrag 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.
Jörg
Establishment
Beiträge: 296
Registriert: 03.12.2005, 13:06
Wohnort: Trondheim
Kontaktdaten:

Re: Berechnen der Flächen Position in der Lightmap

Beitrag von Jörg »

UV-Unwrapping waere ein Stichwort zum Suchen.

Das uvatlas-tool aus dem DX SDK kann das auch.
glassbear
Establishment
Beiträge: 324
Registriert: 08.04.2003, 18:09
Alter Benutzername: Enrico_
Echter Name: Enrico
Wohnort: San Diego
Kontaktdaten:

Re: Berechnen der Flächen Position in der Lightmap

Beitrag von glassbear »

Ein Hoch auf uns Männer... Auf die Frau, die uns HAT ( oder hat, und nicht weiß, dass sie uns hat ) ...auf die Idiotinnen ... besser gesagt VOLLPFOSTINNEN ... die uns hatten und uns verloren haben ... und auf die GLÜCKLICHEN, die das Vergnügen & Glück haben werden uns kennenzulernen!
Benutzeravatar
dowhilefor
Moderator
Beiträge: 173
Registriert: 27.02.2009, 15:44
Alter Benutzername: 6SidedDice
Echter Name: Nico Probst
Wohnort: Bochum
Kontaktdaten:

Re: Berechnen der Flächen Position in der Lightmap

Beitrag von dowhilefor »

selber machen wäre wohl binpacking. Guter artikel dazu.
Mein Gehirn besteht nur noch aus einem hash-index, ich weiss was ich kenn aber kenn nicht was ich weiss
vrCAT
Beiträge: 4
Registriert: 04.05.2009, 09:39

Re: Berechnen der Flächen Position in der Lightmap

Beitrag 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.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2253
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Berechnen der Flächen Position in der Lightmap

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