Ich möchte ein Modell (z. B. ein Mensch, Gehen) in OpenGL animieren. Ich weiß, es gibt Sachen wie Skelett-Animation (mit kniffligen Mathe), aber was ist das ....Wie animiert man ein 3D-Modell (Mesh) in OpenGL?
- ein Modell in Blender erstellen
- erstellen ein Skelett für das jeweilige Modell in Blender
- Jetzt tun ein wandelndes Animation in Blender mit diesem Modell und Skelett
- einige „Schlüsselbilder“ dieser Animation nehmen und jedes „Keyframe“ als ein einziges Modell (zum Beispiel als OBJ-Datei)
- Machen Sie eine OBJ-Datei loader für OpenGL exportieren (um Vertex-, Textur-, Normal- und Gesichtsdaten zu erhalten)
- Verwenden Sie ein VBO, das animierte Modell in OpenGL zu zeichnen (und einige kniffligen Ideen bekommen, wie das aktuelle „Keyframe“ ändern/Modell in der VBO ... vielleicht etwas mit
glMapBufferRange
Ok, ich weiß, diese Idee ist nur ein kleines Skript, aber lohnt es sich weiter zu schauen? Was ist ein gutes Konzept, um die "keyFrame"/Modelle in der VBO zu ändern?
Ich kenne dieses Speicherproblem, aber mit kleinen Modellen (und nicht zu viel Animationen) könnte es getan werden, denke ich.
ehrlich zu sein, auf einem Vertex-Level in diesem Keyframe tweening Implementierung ist wahrscheinlich eine Menge mehr Aufwand, als implementieren ein Skelettanimationssystem zu entwickeln. Skelettanimation wurde nicht in den "alten" Tagen gemacht, weil CPUs die Pferdestärken fehlten, um all diese zusätzlichen Vertextransformationen durchzuführen. Aber die heutigen GPUs knacken diese zusätzliche Matrix und Interpolation für das Frühstück und es ist auch viel weniger Code in GLSL. – datenwolf
@datenwolf Ich stimme dir auf die Performance-Sachen zu, aber ich bin anderer Meinung über die Leichtigkeit der Implementierung von Skelettanimation. Vertex-Tweening ist 'für i verts [i] = lerp (t, vorheriger [i], nächster [i])}' Im Vergleich zu einer Hierarchie von Quaternionen, mit Beziehungen und Längen, (dieser Teil nicht zu schlecht), aber dann müssen Sie Scheitelpunkte mit Knochengewichten verknüpfen. Es sind einfach mehr Daten zu verwalten. –
Danke für die schnelle Antwort! – user2602528