Wie manipulieren Spiele programmgesteuert 3D-Modelle?

8

Der Titel sagt alles. Ein Künstler macht ein 3D-Modell eines Charakters. Wie verwendet ein Programmierer das Modell, um den Charakter herumlaufen zu lassen?

Praxeolitisch
quelle
4
Dies scheint eine "Erste-Hilfe" -Frage zu sein und zeigt keinen Forschungsaufwand. Es könnte auch zu weit gefasst sein, wenn man die Tatsache berücksichtigt, dass verschiedene Spieleentwickler es unterschiedlich machen würden.
Gnemlock
3
Durch Lesen von Scheitelpunkten Bewegungsinformationen aus einer Animationsdatei einiger Art. Keine schwarze Magie beteiligt. Der Programmierer codiert die Bewegung meistens nicht, sondern eine Funktion zum Lesen der Bewegung, die bereits aus einer Datei entworfen wurde. Und ein ausgefallener Code zum Interpolieren zwischen Animationen für reibungslose Bewegungen. Es kann keine endgültige Antwort geschrieben werden, da viele Variationen der Methode existieren.
Rlam12
2
Du hast es so ziemlich verstanden. Während Sie natürlich alles im Code tun können, würde sich im Spielestudio ein Bürgerkrieg bilden.
rlam12
4
Dort eine +1, um die -1 zu kompensieren. Das ist eine anständige Frage.
Vaillancourt
2
Hier kommen Animationsebenen und -mischungen ins Spiel. In diesem Vortrag über Animation in Uncharted erhalten Sie einen guten Überblick darüber, wie mehrere Animationen und inverse Kinematiken kombiniert werden können . Es gibt Spiele, die ihre Animation rein prozedural ausführen , wie Overgrowth , aber Animationen, die von einem Animator erstellt oder von einem Darsteller aufgenommen wurden, sind üblicher.
DMGregory

Antworten:

12

Es gibt mehrere Möglichkeiten, dies zu tun:

Der erste und beliebteste Weg besteht darin, ein Skelett für das Modell zu erstellen und dieses Skelett dann zu verwenden, um sich um die Eckpunkte des Modells zu bewegen. Dies wird normalerweise auch vom Künstler durchgeführt, da er enthalten muss, welche Bereiche von welchem ​​Knochen betroffen sind.

Wenn die Animation fertig ist, speichert der Künstler sie in einer Datei (zum Beispiel ist das COLLADA-Dateiformat bei Programmieranfängern sehr beliebt, da es für Menschen lesbar ist, aber weil es auf XML basiert, ist es groß, sodass größere Spielefirmen Dateien verwenden wie .fbx).

Das Skelett besteht aus Knochen. Der Künstler kann definieren, welche Scheitelpunkte verschoben werden müssen, indem er ihnen ein Gewicht gibt. Je höher das Gewicht, desto mehr Bewegung wird erzeugt, wenn der bestimmte Knochen bewegt wird. Für jeden Knochen gibt es eine separate Gewichtstabelle, sodass derselbe Scheitelpunkt von mehreren Knochen beeinflusst werden kann

Der zweite Weg heißt Morphing. Es ist älter, wird aber noch heute verwendet, da kein Skelett erforderlich ist. Daher ist es besser für Dinge wie das Gesicht eines Modells oder wenn Sie die einzelnen Scheitelpunkte verschieben müssen. Anstatt ein Skelett zu erstellen, erstellt der Künstler die Zustände, in denen sich das Modell befinden kann. Anschließend lädt das Programm in jeden Frame und interpoliert zwischen ihnen im Vertex-Shader.

Im wahrsten Sinne des Wortes kann jedes Modellformat eine Animation auf diese Weise in Form mehrerer separater Dateien (wie in OBJ-Dateien) speichern, aber einige können sie nativ in einer Datei verarbeiten (eine der bekanntesten zwischen Anfängern ist die von id Software .md2-Format).

Die dritte Methode, etwas zu animieren, heißt prozedurale Animation. Es ist nicht weit verbreitet, weil es nicht zu humanen Bewegungen führt. Es kann verwendet werden , wenn Animieren Wasser oder Gras oder andere natürliche Objekte, die ein Muster in seiner Bewegung hat.

Die vierte und wohl komplexeste sind muskelbasierte Animationen. Zum Beispiel verwendete GTA IV diese Engine , die die Bewegung mithilfe einer defensiven KI und einer Skelettstruktur berechnet. Es basiert auf der ersten Technik, erfordert jedoch nicht, dass der Künstler den Körper animiert. Es ist wie Ragdoll, aber mit besseren Bewegungen.

Der fünfte Weg ist Ragdoll. Sie wissen das wahrscheinlich, es gibt sogar Spiele, die fast ausschließlich darauf beruhen, wie der berüchtigte Ziegensimulator, aber die meisten Spiele verwenden ihn für tote Charaktere. Dies erfordert auch, dass der Künstler ein Skelett erstellt, aber das Bewegen der Gelenke erfolgt mit Algorithmen. Diese Algorithmen berücksichtigen maximale Winkel und ziehen.

Bálint
quelle
Gute Antwort. Können Sie etwas näher erläutern, wie ein Skelett zum Verformen eines 3D-Modells verwendet werden kann? Welche zusätzlichen Daten ermöglichen es, einen Satz interner Skelettkoordinaten in eine Verformung von Modellscheitelpunkten umzuwandeln? Es ist nicht erforderlich, eine Implementierung bereitzustellen;), aber welche Informationen in der Ausgabe des Künstlers machen dies möglich? Wenn es einen guten Wikipedia-Artikel gibt, der dies beschreibt, würde es ausreichen, nur den Titel zu streichen.
Praxeolitic
@Praxe hinzugefügt, lassen Sie mich wissen, wenn Sie etwas anderes brauchen
Bálint
Das vierte, über das Sie gesprochen haben, ist für mich völlig neu. Sehr interessant. Schade, dass der Euphoria-Motor proprietär und wahrscheinlich teuer ist. Wenn sie eine Art automatisches Lernen verwendeten, um es zu entwickeln, ist der Datensatz sicher groß und schwer zu bekommen.
Hatoru Hansou
@ Hatoru verwendet es wahrscheinlich ein Lernprogramm mit vorberechneten Daten
Bálint
7

Animierbare 3D-Modelle werden mit einem Skelett geliefert (entweder der Modellierer oder der Animator führt diesen Modellierungsschritt aus, da er sich in einem Niemandsland befindet).
Das Skelett besteht aus Knochen, die relativ zueinander positioniert sind, und jeder Knochen wird auf eine Reihe von Eckpunkten des 3D-Modells abgebildet, wobei die Einflusswerte zwischen 0 und 1 liegen (0,2, 0,5 usw.).
Wenn dies erledigt ist, erstellt der Animator eine Animation, die je nach Format eine separate Datei sein oder in der Datei des Modells selbst gespeichert werden kann.
Animationen sind im Grunde eine Reihe von Anweisungen für jeden Knochen, die ihnen sagen, wann und wie viel sie sich bewegen oder drehen müssen.
Durch Verschieben der Knochen verschieben Sie indirekt die Scheitelpunkte des Modells.

Dies ist eine sehr heruntergekommene Erklärung, und es gibt viele verschiedene Möglichkeiten, grundlegende und fortgeschrittenere Animationen zu erstellen, von denen einige vollständig programmatisch sind. Heutzutage werden Sie jedoch nicht viele animierte Modelle in einem Spiel ohne Skelett finden (N64-Modelle hatten keine Ich glaube, Skelette, stattdessen arbeiteten die Modellstücke als Skelett.

Brian H.
quelle
1
Leichte Ausnahme von der Zeile "Heutzutage gibt es in einem Spiel ohne Skelett kein animiertes Modell mehr": Einige einfache Animationseffekte werden über Vertex-Shader verarbeitet. Zum Beispiel wird animierte Ausrüstung in Destiny auf diese Weise erstellt . Der Geist der Antwort bleibt jedoch bestehen - wenn Sie ein Modell sehen, das eine komplexe animierte Bewegung in einem Spiel ausführt (insbesondere wenn es sich um einen Charakter oder eine Kreatur handelt), ist es sicher, dass ein Skelett darunter liegt.
DMGregory
@ DMGregory bearbeiten meine Antwort
Brian H.