Normals einer Face erstellen



  • Hallo,
    ich bin gerade dabei, die mit meinem Obj + Mtl Loader importierten Normals einzusetzen.
    Nun aber erstmal etwas zu der Logik:

    Die Angaben zu den Faces sind in meinem Beispiel so aufgebaut:

    f Vertex1/Texture1/Normal1 Vertex2/Texture2/Normal2 Vertex3/Texture3/Normal3

    Ich habe also für jeden Vertex einen Normal Vektor oder ?

    Wenn ich jetzt aber mittels glNormal3f 3 Werte für die Normal der Face angeben muss, welchen nehme ich dann, oder wie berechne ich diesen aus den 3 Normalen Vektoren der 3 Vertices ?

    Ach und nochmal zum Verständnis: Ein Normal Vektor ist doch einfach ein Vektor der senkrecht von einer Fläche weg zeigt oder ? Und wie sieht das dann für einen Vertex aus ?

    Gruß
    silent12



  • silent12 schrieb:

    Ich habe also für jeden Vertex einen Normal Vektor oder ?

    Ja. Du gibst für jeden Vertex eine Normale an.

    Üblicherweise berechnet man erstmal die Normale für ein Dreieck. Die Normale für einen Vertex ist dann der gemittelte Vektor der Normalen aller angrenzender Dreiecke. Das kannst Du Dir aber hier sparen, weil in Deinem Obj-File bereits die Normalen per Vertex angegeben sind und eine Rückrechnung auf Faces keinen Sinn macht.



  • Ich habe jetzt also die 3 Normal Vektoren der 3 Vertices und jetzt muss ich diese noch in meine Face einbauen.

    Also einfach per glNormal3f(NormalVertex1, NormalVertex2, NormalVertex3)
    oder wie ?

    Gruß
    silent12



  • Ein Aufruf von glNormal für jeden Aufruf von glVertex.

    (Der vollständigkeit wegen: Es gibt schnellere Möglichkeiten Geometrie zu rendern (Vertex Arrays, Vertex Buffer Objects) als tausende von glVertex aufrufen.


Log in to reply