Registriert: Sa Aug 18, 2007 18:47 Beiträge: 694 Wohnort: Köln
Programmiersprache: Java
Bei der Normalen interessiert nur die Rotation, die Translation in der 4. Spalte der Matrix wird nicht gebraucht. Deshalb wird mit mat3(xxx) der Rotationsteil 'herausgeschnitten' und auf die Normale angewendet.
_________________ Es werde Licht. glEnable(GL_LIGHTING); Und es ward Licht.
Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Mein nächstes Problem, die Seiten des Würfels, welche eigentlich im Schatten sein müssten wird voll angeleuchtet. Ich dachte ich könnte diese Problem mit folgenden Befehlen lösen. Die Rückseite der Dreiecke wird nicht mehr gezeichnet, dies ist richtig, aber auf die Farbe hat es leider keine Einfluss.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Dann zeigen die Normalen wahrscheinlich genau in die falsche Richtung. Also statt von ihr weg, zeigen sie zu der Lichtquelle hin. Wenn das Backface-Culling korrekt funktioniert, ist das schonmal gut. Vertausche mal bei der Berechnung der Normalen die Parameter des Kreuzproduktes bzw. negiere die Normalen.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Genau.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Die Vertexdaten sehen gut aus.
Was mir allerdings gerade aufgefallen ist: Hiermit
Code:
vec3 LightPosition =vec3(10.0,0.0,0.0);
setzt du die Lichtquelle nach rechts (es sei denn, deine Projektionsmatrix ist irgendwie invertiert). Auf dem Bild sieht es aber so aus, als würde das Licht von links scheinen. Da deine Normalen aber offenbar korrekt sind, setze mal hier ein Minus vor das dot():
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.