Ich versuche, normales Mapping mit LibGDX zu implementieren. Also habe ich ein paar positive Ergebnisse bekommen, wenn ich diffuse und spiegelnde Farben im Vertex Shader berechne (zumindest denke ich das).
Vertex-Shader:
%Vor%Fragment-Shader:
%Vor%Ergebnis:
Wie Sie sehen können, wird das Ergebnis korrekt gerendert. Spiegelfleck verhält sich wie von vielen Beispielen. Aber ich muss Specular Color im Fragment-Shader implementieren, um ein beeindruckenderes Bild zu erhalten. Also habe ich hier ein Beispiel von gefunden und jetzt versuche ich es zum Laufen zu bringen.
Vertex-Shader:
%Vor%Fragment-Shader:
%Vor%Ergebnis:
Spiegelfleck ist falsch. Ich dachte es passiert wegen falscher Matrixberechnung. Wenn es wahr ist, warum funktionieren die ersten paar Shader richtig?
Wie bekomme ich model-view
matrix, normal
matrix und andere in LibGDX?
Also, meine Frage ist was ist falsch in den letzten paar Shadern?
Das Problem war in meinem Modell (Mesh). Nach einiger Zeit des Grabens fand ich heraus, dass mein Mesh nicht tangents
und binormals
hat. Es ist passiert, weil ich Blender 2.58
verwendet habe, das das Modell nicht in FBX
mit Tangentialraum exportieren kann. Glücklicherweise haben sie diesen Fehler in Blender 2.71
und später behoben. Wenn Sie also Ihr Modell exportieren, sollten Sie Tangent Space
-Parameter ankreuzen und die Version FBX 7.4 binary
wählen. Um sicherzustellen, dass Ihr Mesh Tangenten und Binormals enthält, können Sie fbx-converter Werkzeug, um Ihre fbx
-Datei in das g3dj
-Format anstatt in den Standard g3db
zu konvertieren, indem Sie die folgende Option verwenden:
Öffnen Sie es dann in einem Programm wie Notepad
und prüfen Sie, ob die Attribute TANGENT
und BINORMAL
Nur eins verstehe ich nicht, warum funktioniert lamberFactor
mit falschem Tangens-Attribut (eigentlich ohne es)? Höchstwahrscheinlich wird diffuse Farbe falsch berechnet, aber in meinem Beispiel (auf der Kugel) sieht es ziemlich zufriedenstellend aus. Ich hoffe, es wird jemand anderem helfen.
BEARBEITEN
Übrigens, um einen normalen & amp; In einer Model-View-Matrix verwende ich den folgenden Code:
%Vor%Tags und Links opengl shader opengl-es-2.0 libgdx glsl