irgendwie habe ich das mit dem Tangent Space noch nicht ganz gerafft.
Könnte mich mal wer aufklären, was an meiner folgenden Darstellung falsch ist, und warum man diesen Tangent Space braucht:
Also meine Vorstellung der Sache:^^
1. Die Normalenvektoren der Normalmap liegen in der x,y Ebene mit z als Höhe. Also wäre (0,0,1) volle Intensität, sprich mein "Oben" in der Normalmap
2. Der Normalenvektor des Vertex im Vertexshader sagt mir wo oben ist. Nun würde ich also die Trafo suchen, um von meinem Normalvektor des Vertex zu dem "oben" der Normalmap zu kommen(also dem (0,0,1) )
3. Diese Trafo würde ich nun auf den Richungsvektor des Lichts anwenden, damit Lichtvektor und Normalenvektoren der Normalmap im selben KS liegen. Diesen transformierten Lichtvektor würd ich nun in den Pixelshader schieben.
4. Aus Normalenvektor der Normalmap und transformierten Lichtvektor Leuchtintensität berechnen
So, was ist daran nun falsch? Überall les ich ja nun was von dem Tangen Space und das man den mit Übergeben muss und das dieser nicht in der Ebene des Dreiecks liegt usw. So recht habe ich das leider noch nicht verstanden.
_________________ __________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup
Es gibt mehr als zwei verschiedene Möglichkeiten:
Hab ich hier gepostet:
viewtopic.php?t=6182 Der Tangent, Bitangent und der Normalvektor werden dazu gebraucht um entweder die Lichquellen und den Texturspace zu transformieren oder um die Normalmap in den Worldspace zu transformieren. Wichtig ist nur das alle Lichtoperationen im gleicvhem Space durchgeführt werden.
Das tranformierender Normalmap in den Worldspace kostet 3 instructions, das transformieren einer Lichtquelle in den Texturespace kostet eine Varying.
Der Tangetvektor dient im prinzip dazu das die Normalmap richtig ausgerichtet wird, denn sonst würde sie zufällig um den normalvektor rotieren... Dabei zeit der Tangent im Worldspace in die gleiche richtung wie die x oder s koordinate auf der Textur.
Der Tangetvektor dient im prinzip dazu das die Normalmap richtig ausgerichtet wird, denn sonst würde sie zufällig um den normalvektor rotieren... Dabei zeit der Tangent im Worldspace in die gleiche richtung wie die x oder s koordinate auf der Textur.
THX da hats klick gemacht Also ist meine Beschreibung oben im Prinzip richtig, nur das ich das aus deinem Quote hier nicht berücksichtigt habe.
_________________ __________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.