Ist es sinnvoller, jeden Frame eines animierten Objektes in eine extra Displaylist zu kompilieren und dann eine Displaylist nach der anderen aufzurufen, oder das Objekt uncompiliert zu lassen und die Koordinaten der einzelnen Vertices während der Laufzeit zu ändern? :blink:
Hat von euch eigentlich schon mal jemand mit bones gearbeitet? Gibts da irgendwo ein Tut?
ich würde für jeden Bone eine eigene DisplayList (o.ä) machen, und diese dann für jedes Frame mit einer Matrix verändern... also du speicherst du jedem Bone für jedes Frame eine Matrix, und multiplizierst die dann beim Rendern einfach dementsprechend
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wenn du auf Bones basierende Animationen implementieren willst, dann lass die Sache mit den Displaylisten am besten ganz sein, denn das zu kombinieren dürfte prinzipiell gar nicht funktionieren. Bei skelettaler Animationen sind die Vertexe eines Meshes ja an Joints (= Bones) gebunden die dann das Skelett dieses Modelles binden.Und bei jedem Fortschreiten der Animationen müssen die Vertexpositionene ja anhand der neuen Position des Knochens zu dem sie gehören neu berechnet werden, und da die Vertexdaten von Displaylisten ja statisch sind, kann man diese dafür nicht verwenden. Wenn du also mit skeletaler Animation arbeiten willst, dann empfehle ich dir das <span style='color:blue'>Milkshape3D-Format</span>, welches mit jener arbeitet, recht weit verbreitet und auch gut dokumentiert ist und die Nutzung von Vertexarrays, deren Daten sich ja dynamisch verändern lassen.
Hier gibst ein Tut das den programmiertechnischen Aspekt des MS3D-Formates abdeckt (C++) : <a href='http://rsn.gamedev.net/tutorials/ms3danim.asp' target='_blank'>http://rsn.gamedev.net/tutorials/ms3danim.asp</a> Und hier gibts ein etwas allgemeineres Tut das auch auf das Basteln der Animation eingeht : <a href='http://home.planet.nl/~monstrous/tutskel.htm' target='_blank'>http://home.planet.nl/~monstrous/tutskel.htm</a>
Das mit den Matrizen die Aya erwähnt hat kann man deshalb auch nur bei Animationen anwenden die z.B. auf Keyframes (siehe 3DS-Format) basieren, bei skelettaler Animation geht das nicht.
SoS, ich bin mir ganz sicher, dass man bei skelettal animations mit matrizenmultiplikation weiterkommt, du must für jeden Knochen den du im Baum herabsteigst die Matrix einmal pushen und an den Angelpunkt gehen. Drehen wie gewünscht, nächster Knochen im Baum, pushen,... das funktioniert einwandfrei, sit glaub sogar im Redbook beschrieben.
Bei der skelettalen Animation wird doch auch für jeden Knochen eine Matrix ausgerechnet. Und da Knochen alle irgendwie aneinander hängen müssen die Matrizen auch multipliziert werden. Nur das Problem ist, daß jeder Vertex mit einer oder mehreren unterschiedlichen Matrizen multipliziert wird. Man kann die Berechnung über ein Vertex Program ausführen, indem man zu jedem Vertex als Attribute die Nummer der Matrizen speichert und im Vertex Program selber dann den Vertex mit den Matrizen multipliziert. Das einzige was man dann zur Animation ändern muß sind Matrizen, die als Vertex Program Parameter gespeichert sind. Dann könnte man das ganze auch in einer DisplayListe speichern.
Mitglieder in diesem Forum: 0 Mitglieder und 11 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.