OpenGL calculates Normals per Vertex???



  • Hallo,

    heute morgen wurde ich von einer Person darauf hingewiesen, das OpenGL den Prozess zum ermitteln der Normalen pro Vertex übernehmen kann. Ich dachte eigentlich immer, OpenGL kann es nicht!!!

    Karsten.



  • ermitteln der Normalen pro Vertex

    fragt sich nur was das _genau_ heißen soll...
    Direct3D kann Vertex-Normalen selbst _normalisieren_ (auf Länge 1 skalieren), aber das ist nicht sinnvoll, da es lahm ist.



  • Normalen per Vertex == Smooth Shading.



  • Karsten K schrieb:

    Normalen per Vertex == Smooth Shading.

    und was will OpenGl das als Klakulationsgrundlage benutzen? Automatische alle Vertices die aufeinander liegen?
    Kann ich mir schwer vorstellen.



  • Ja genau deshalb habe ich mich ja auch gewundert. Aber irgendwie stelle ich mir den Aufruf dann so vor:

    glCalcNormals ( x_Value, y_Value, z_Value );
    

  • Mod

    illuminator schrieb:

    ...da es lahm ist.

    auf einer karte mit TnL ist normalisieren forfree.

    Karsten K schrieb:

    Aber irgendwie stelle ich mir den Aufruf dann so vor:...

    😮
    irgendwie ist diese zeile Code ziemlich sinnfrei sofern du dazu kein stückchen docu/kommentar schreibst.

    Man weiß garnicht ob das jetzt pervalue paramter oder per referenz sind (oder pointer?), man weiß nicht ob die funktion für diesen einen punkt den du übergibst die normalen errechnen oder in den 3 werten die durchschnitsnormale des ganzen meshes ausrechnet?

    rapso->greets();



  • Sorry, mein Fehler:

    Mit der Funktion soll die Normale für den Punkt errechnet werden, welchen ich letztendlich an die Funktion übergebe.

    glBegin(GL_TRIANGLE);
       glCalcNormal(Value_x1, Value_y1, Value_z1); 
       glVertex3f(Value_x1, Value_y1, Value_z1);
    
       glCalcNormal(Value_x2, Value_y2, Value_z2); 
       glVertex3f(Value_x2, Value_y2, Value_z2);
    
       glCalcNormal(Value_x3, Value_y3, Value_z3);    
       glVertex3f(Value_x3, Value_y3, Value_z3);
    glEnd();
    

    So, ich hoffe das Problem ist jetzt verdeutlicht ... 🤡. Last Question: Stellt OpenGL nun eine solche Funktion/Prozedur zum Berechnen der Punktenormalen zur Verfügung oder nicht?????

    ➡ Karsten.



  • glBegin(GL_TRIANGLE);
    glCalcNormal(Value_x1, Value_y1, Value_z1);
    glVertex3f(Value_x1, Value_y1, Value_z1);

    glCalcNormal(Value_x2, Value_y2, Value_z2);
    glVertex3f(Value_x2, Value_y2, Value_z2);

    glCalcNormal(Value_x3, Value_y3, Value_z3);
    glVertex3f(Value_x3, Value_y3, Value_z3);
    glEnd();

    Punktnormale? Das macht doch keinen Sinn. Woher soll den "glCalcNormal" wissen wo das Trinagle hinzeigt, bevor es alle drei Punkte des Dreiecks kennt??



  • gut, dann ist ja somit die Frage beantwortet.


Anmelden zum Antworten