Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Bösewicht

unregistriert

1

05.08.2012, 00:46

3D Animationstechniken

Hallo liebe Community :)

Ich frage mich seit längerem, wie die einzelnen Animationen in modernen Computerspielen erstellt werden.

Also meine Fragen sind konkret:
  1. Wie werden Animationen kombiniert (Laufen mit Angreifen verbinden etc.) Es werden doch sicherlich nicht Beispielsweise die Beine und Hüfte und der Oberkörper einzeln modelliert.
  2. Ich kenne von Animationstechniken her nur Keyframes und Motion Capturing (Obwohl letzteres ja auch Keys benutzen sollte denke ich). Wie sieht das in modernen Spielen denn aus, immer noch viel Keys oder wird teilweise auch physik berechnet etc.
  3. Was gibt es noch wichtiges beim Animationsdesign, irgendwelche wichtigen Begriffe, die man unbedingt kennen sollte etc.

Wie ihr vllt. merkt, kenne ich mich nicht sonderlich gut mit dem Thema aus :)

Danke schonmal!

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

05.08.2012, 10:49

Skeletale Animation, das oft auch mit Motion Capturing gefüttert wird. Ich habs noch nicht verstanden und nicht jedes Tutorial ist wirklich brauchbar ^^ Aber hier mal ein Einblick: http://content.gpwiki.org/index.php/Open…ic_Bones_System

Und sonst kannst du dir natürlich ausdenken was du willst. Vielleicht erfindet ja mal jemand was einfaches neues.

Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

3

05.08.2012, 10:52

1. Wie bei Texturen werden die Animationen überblendet. Das funktioniert auch mit Interpolation, ist nur etwas komplexer. Für Rotationsinterpolation werden eigentlich immer Quaternionen und Slerp-Interpolation (spherische lineare Interpolation über eine Bogenstrecke auf einer 4D-Einheitskugel) verwendet, damit die Interpolation so ist, wie man sie haben will (gleichbleibende Geschwindigkeit über einer interpolierte Strecke)

2. State-of-the-Art wird Motion Capturing sein. Per Tracking aufgenommene Animationen werden auf das Bone-Skelett übertragen und dann kann man zwischen den Animationen überblenden. Jedem einzelnen Vertex des Meshes wird dann eine Gewichtung für die Bones zugeordnet, so dass dann die Vertexpositionen entsprechend der Bones interpoliert werden. Hinzu kommt dann vielleicht noch physikalisch ein Ragdoll-System. Bei günstigeren Sachen werden die Animationen sicherlich mit Keyframes gemacht. Da sind die Stichworte forward kinematic und inverse kinematic.
Starre Körper werden dann über die Berechnungen im Programm gemacht. Dafür braucht man ja keine extra Animation.

3. Motion Capturing, Motion Tracking, Forward/Inverse Kinematic, Pose, Bones, Keyframe, Keyshapes. Die meisten Begriffe hast du eigentlich schon selbst genannt.

4

05.08.2012, 12:25

Ansich speichern die Animationskeys ja nur eine Transformation des Knochens. Diese Keys kann man jetzt auf vielfältige Weise generieren:

Forward Kinematic: Man setzt jede einzelne Transformation in einem Modellierungsprogramm von Hand, d.h. man dreht einzelne Knochen, bis die Pose stimmt.
Inverse Kinematic: Man hat Knochenketten und bestimmt nur den Endpunkt. Man sagt also, an welchem Ort im Raum beispielsweise die Hand sein soll und das Modellierungsprogramm rechnet die Transformationen für die Armknochen aus. Cool wird es, wenn man das im Spiel in Echtzeit berechnet, so kann ein Charakter zum beispiel genau die Treppenstufen einer unregelmäßigen Treppe finden oder zielgerichtet nach Objekten greifen.
Motion Capturing: Man filmt einen Schauspieler und versucht dessen Skelett zu rekonstruieren. Dann übernimmt man dessen Transformationen und passt sie evtl. noch ein wenig an die des Charakterskelettes an.
Ragdoll: Jeder Knochen entspricht einem Objekt (z.B. Zylinder oder Kugel) die durch Constraints miteinander verbunden sind. Jetzt lässt man Kräfte darauf wirken und eine Physiksimulation berechnet die Bewegungen.

Einzelne Keys kann man natürlich wieder miteinander kombinieren. Im einfachsten Falle hat man eine Animation für die Beine und eine für die Arme und kann so Laufen und Schießen gleichzeitig abspielen. Wenn man etwas aufpasst kann man auch mehrere Laufanimationen ineinander überblenden, um einen schönen Übergang zwischen gehen und rennen zu bekommen. Da muss nur die ungefähre Pose und Animationsgeschwindigkeit berücksichtigt werden, naives Interpolieren zwischen einer Pose wo das Bein vorne ist und einer wo es hinten ist führt zu keinem sinnvollen Ergebnis.
Dann kann man so Dinge machen, wie Charaktere voll animieren, im Todesfall aber dem Ragdollsystem die Kontrolle überlassen, dann sacken sie halt irgendwie zusammen oder fliegen weg oder so. Cooler ist es, wenn man über die Ragdollanimationen irgendwie noch andere geblendet kriegt, damit es wenigstens ein wenig so aussieht, als würde der Charakter sterben und nicht von einem Augenblick auf den anderen komplett reglos sein. Da gibt es sicherlich eine Vielzahl an Techniken, man könnte zwischen Ragdoll und Sterbeanimation interpolieren, oder (was vermutlich besser funktioniert) dem Ragdollsolver Kräfte für jeden Bone übergeben, die die Knochen in Richtung der Sterbekeys ziehen.
Aber gerade das Kombinieren von Animationen ist das kniffelige, da es hier schnell unnatürlich aussehen kann. Und für sowas cooles wie in GTA4 (wo Passanten sich von Autos weggestoßen haben, wenn man ihnen zu nahe kam) braucht man dann wohl Middleware wie Euphoria.
Lieber dumm fragen, als dumm bleiben!

Bösewicht

unregistriert

5

05.08.2012, 20:49

Ui, vielen dank für die ganzen Antworten, hat mir schonmal gut weitergeholfen!

1. Wie bei Texturen werden die Animationen überblendet. Das funktioniert auch mit Interpolation, ist nur etwas komplexer. Für Rotationsinterpolation werden eigentlich immer Quaternionen und Slerp-Interpolation (spherische lineare Interpolation über eine Bogenstrecke auf einer 4D-Einheitskugel) verwendet, damit die Interpolation so ist, wie man sie haben will (gleichbleibende Geschwindigkeit über einer interpolierte Strecke)


Diese Interpolationen werden dann in Echtzeit berechnet oder werden die (was ja irgendwie mehr Sinn machen würde) am Ende der Modelldatei hinzugefügt?
Werden diese Berechnungsfunktionen bei den meisten gebräuchlichen 3D Grafik Engines (Ogre3D etc.) mitgeliefert, oder im Modellierprogramm als Kombinationsübergang gleich mitgespeichert (Zumindest bei bestimmten Formaten)?

6

05.08.2012, 23:36

Normalerweise wird in Echtzeit interpoliert. Ist ja auch nicht weiter schwer, a+(b-a)*t gibt dir den Punkt zwischen a und b zum Zeitpunkt t (wenn t in 0..1 liegt) bei linearer Interpolation. Für Rotationen werden halt oft Quaternionen benutzt, und dann eben SLERP (spherical linear interpolation) was auch einfach nur eine kurze Standardformel ist.
Möchte man spezielle Interpolaitonsformel benutzen kann man beispielsweise in Blender die Kurven anpassen und die Animation dann "baken" also aus wenigen keyframes sehr viele erstellen und diese dann speichern. Beim abspielen kann man dann entweder immer die nächste nehmen, oder zwischen 2 Keys linear interpolieren.
Lieber dumm fragen, als dumm bleiben!

Bösewicht

unregistriert

7

06.08.2012, 13:49

Alles klar, ich werd mich mal dran versuchen, danke :)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

08.08.2012, 08:04

Noch ein paar Anmerkungen:
Ragdoll: Jeder Knochen entspricht einem Objekt (z.B. Zylinder oder Kugel) die durch Constraints miteinander verbunden sind. Jetzt lässt man Kräfte darauf wirken und eine Physiksimulation berechnet die Bewegungen.


Dass und IK stark miteinander verbunden.

Und für sowas cooles wie in GTA4 (wo Passanten sich von Autos weggestoßen haben, wenn man ihnen zu nahe kam) braucht man dann wohl Middleware wie Euphoria.


Wieso? Eine Middleware braucht man dazu nicht.
@D13_Dreinig

Werbeanzeige