Hallo,
wie kann man eigentlich ganz leicht die Vertex-Normale eines Vertex (ein 3D Punkt mit x,y,z - Koordinaten) errechnen?
Diese Normalen brauche ich für den Einsatz von Licht in meiner Direct3D-Anwendung.
Danke,
Rapthor
.. ich merke grad, dass ein Punkt allein da nicht grad weiterhilft. Aber was wenn ich immer 3 Punkte habe, die ein Dreieck ergeben?
Es gibt dann genau 2 Normalen (lotrecht stehende Vektoren auf der Fläche): einer nach oben und einer nach unten.
Wie krieg ich die Normale berechnet?
Hallo
Da ich gerade erst begonnen habe, mit DirectX zu arbeiten, kann ich dir nicht mit Code weiterhelfen, aber rein Mathematisch gesehen würde ich das Dreieck als Ebene mit der Formel aX+bY+c*Z = d ansehen, wobei durch a,b und c die Neigung und durch d die Position der Ebene bestimmt ist. Der Normalenvektor dieser Ebene ist dann (a,b,c)t.
mfg Hitman
Es gibt Probleme, die kann man nicht lösen. Für alle anderen gibt es Visual C# .NET!
War vielleicht etwas kompliziert erklärt, wenn man sich noch nie damit auseinandergesetzt hat:
Der Normalvektor ist das Kreuzprodukt der beiden Vektoren, welche das Dreieck aufspannen. Also Vektor1 = VertexPos2 - VertexPos1 und Vektor2 = VertexPos3 - VertexPos1. Damit ist N dann Vektor1 x Vektor2 -->
Nx = Vektor1yVektor2z - Vektor1zVektor2y
Ny = Vektor1zVektor2x - Vektor1xVektor2z
Nz = Vektor1xVektor2y - Vektor1yVektor2x
Hoffe, dass ich dir damit helfen konnte...
mfg Hitman
Es gibt Probleme, die kann man nicht lösen. Für alle anderen gibt es Visual C# .NET!
Versuchs sonst mal hier (Theorie):
http://www.mathe-online.at/materialien/Andreas.Pester/files/Vectors/kreuzprodukt.htm
So, jetzt melde ich mich aber endgültig ab 🙂
Es gibt Probleme, die kann man nicht lösen. Für alle anderen gibt es Visual C# .NET!
Das Berechnen der Vertexnormalen läuft meist in drei Schritten ab:
Den 2. und 3. Punkt brauchst du nur wenn es Gouraud Shading sein soll. Bei Flatshading reicht Punkt 1.
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.