Automatisierungsmöglichkeiten im Rigging

Transcription

Automatisierungsmöglichkeiten im Rigging
Automatisierungsmöglichkeiten im
Rigging-Prozess am Beispiel Autodesk
Maya
Dietmar Minichmayr
MASTERARBEIT
eingereicht am
Fachhochschul-Masterstudiengang
Digitale Medien
in Hagenberg
im September 2008
© Copyright 2008 Dietmar Minichmayr
Alle Rechte vorbehalten
ii
Erklärung
Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbstständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen
und Hilfsmittel nicht benutzt und die aus anderen Quellen entnommenen
Stellen als solche gekennzeichnet habe.
Hagenberg, am 23. September 2008
Dietmar Minichmayr
iii
Inhaltsverzeichnis
Erklärung
iii
Kurzfassung
vii
Abstract
viii
1 Einleitung
1.1 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
1
2
2 Anforderungen bei der Erstellung eines humanoiden 3D CharacterRigs
3
2.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2 Anforderungen an das 3D Charakter Modell . . . . . . . . . .
4
2.2.1 Ausrichtung und Symmetrie . . . . . . . . . . . . . . .
4
2.3 Anforderungen an die Skelettgenerierung . . . . . . . . . . . .
5
2.3.1 Allgemeine Skelettstruktur und Naming-Convention .
5
2.3.2 Ausrichtung der Joints . . . . . . . . . . . . . . . . . .
6
2.3.3 Positionierung der Joints . . . . . . . . . . . . . . . . .
9
2.3.4 Spiegeln der Joints . . . . . . . . . . . . . . . . . . . . 10
2.4 Anforderungen an die Rig-Generierung . . . . . . . . . . . . . 11
2.4.1 Forward Kinematik . . . . . . . . . . . . . . . . . . . . 12
2.4.2 Inverse Kinematik . . . . . . . . . . . . . . . . . . . . 12
2.4.3 Kontrollobjekte . . . . . . . . . . . . . . . . . . . . . . 13
2.4.4 IK/FK Switch . . . . . . . . . . . . . . . . . . . . . . 14
2.4.5 Reverse Foot . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.6 No-Flip Knee . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.7 Auto-Forearm Twist . . . . . . . . . . . . . . . . . . . 19
2.4.8 Wirbelsäule mittels IK Spline Handle . . . . . . . . . . 19
2.4.9 Squash and Stretch . . . . . . . . . . . . . . . . . . . . 19
2.4.10 Flexibilität im Rigging-Prozess . . . . . . . . . . . . . 21
iv
Inhaltsverzeichnis
3 Aktuelle Lösungen
3.1 Allgemeines . . . . .
3.2 createFBIK_skeleton
3.2.1 Workflow . .
3.3 Rig-o-matic . . . . .
3.3.1 Workflow . .
3.4 abAutoRig . . . . . .
3.4.1 Workflow . .
3.5 Advanced Skeleton .
3.5.1 Workflow . .
v
.
.
.
.
.
.
.
.
.
23
23
23
24
25
26
26
27
28
28
.
.
.
.
.
.
.
.
.
.
.
.
32
32
33
33
35
37
38
5 Evaluierung von dRiggingTool
5.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Fragebogen . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Allgemeine Fragen . . . . . . . . . . . . . . . . . . .
5.2.2 Fragen zur Installation . . . . . . . . . . . . . . . . .
5.2.3 Fragen zur Skeletterstellung . . . . . . . . . . . . . .
5.2.4 Fragen zur Rig-Erstellung . . . . . . . . . . . . . . .
5.2.5 Fragen zu Funktionen zur Animationsunterstützung
5.2.6 Fragen zur Verwendung des Tools . . . . . . . . . . .
5.3 Zusammenfassung und Ergebnis der Evaluierung . . . . . .
5.4 Analyse und Vergleich unterschiedlicher Rigging-Tools . . .
.
.
.
.
.
.
.
.
.
.
42
42
43
43
44
44
46
47
49
50
53
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Automatisierung des Rigging-Prozesses
4.1 Allgemeines . . . . . . . . . . . . . . . .
4.2 dRiggingTool . . . . . . . . . . . . . . .
4.2.1 Python vs. Mel . . . . . . . . . .
4.2.2 Architektur . . . . . . . . . . . .
4.2.3 Programmieren in Python . . . .
4.2.4 Workflow . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6 Ausblick
56
6.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.2 Automatisches Riggen und Animieren von 3D Charakteren . . 56
6.2.1 Performance Capture und Mesh-Animation . . . . . . 58
6.2.2 Exkurs: Multi-View Stereo Technik . . . . . . . . . . . 59
6.2.3 Automatisches Konvertieren einer Mesh-Animation in
eine skelettbasierende Animation . . . . . . . . . . . . 59
6.3 Skin Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.4 Muskelsimulation . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.4.1 Pose Space Deformation (PSD) . . . . . . . . . . . . . 63
6.4.2 Muskelsysteme . . . . . . . . . . . . . . . . . . . . . . 63
6.5 Character Setup Pipeline . . . . . . . . . . . . . . . . . . . . 64
Inhaltsverzeichnis
vi
7 Schlussbemerkungen
A Inhalt der CD-ROM/DVD
A.1 Diplomarbeit . . . . . . .
A.2 dRiggingTool . . . . . . .
A.3 Fragebogen . . . . . . . .
A.4 Quellen . . . . . . . . . .
A.5 Images . . . . . . . . . . .
Literaturverzeichnis
68
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
71
71
71
72
72
72
73
Kurzfassung
Die vorliegende Arbeit beschäftigt sich mit dem Rigging-Prozess für einen
zweibeinigen 3D Charakter und dessen Automatisierungsmöglichkeiten. Es
werden Anforderung an den Prozess der Erstellung eines Rigs dargestellt.
Diese Anforderungen beziehen sich dabei auf das 3D Charakter Modell, für
welches ein Rig erstellt werden soll, sowie auf den Prozess der Skelettgenerierung und den der Rig-Generierung. Aktuelle Lösungsansätze bzw. RiggingTools werden miteinander verglichen. Es wird dabei untersucht, inwieweit
diese Tools über Funktionen zur Erfüllung dieser Anforderungen verfügen.
Zwecks Darstellung des Automatisierungsprozesses und zur Darstellung der
bei der Automatisierung entstehenden Probleme und Herangehensweisen
wurde in einem eigenem Projekt dRiggingTool entwickelt.
Es handelt sich hierbei um ein Rigging-Tool, welches als praktische Grundlage dieser Arbeit dient und mittels Fragebogenanalyse einer Evaluierung
unterzogen wurde. Analysiert wurde inwieweit das Tool Anforderungen hinsichtlich Benutzerfreundlichkeit, Verständlichkeit, Flexibilität und Funktionserfüllung gerecht wird. Diese Anforderungen können somit als Qualitätsmerkmale zur Auswahl einer automatisierten Standardlösung gesehen und
zum Einsatz gebracht werden. Weiters erfolgt ein Ausblick über der dem
Rigging folgenden Arbeitsschritte, wie Skinning bzw. Muskelsimulation für
ein 3D Charakter Modell, Arbeiten zum automatischen Riggen und Animieren von 3D Charakteren sowie ein Überblick über einen effizienten Workflow
bei der 3D Charakteranimation.
vii
Abstract
The thesis at hand discusses the rigging process for a two-legged 3D character and its potential for automation. Requirements for the rigging process
are presented, in reference to the 3D character model, for which a rig should
be produced, and the processes of skeleton creation and rig generation. Related works, or more specifically, other rigging tools are compared and their
existing functionality to handle these tasks is examined. To demonstrate the
automation process and the problems related to this approach, dRiggingTool was developed by the author in an independent project and serves as a
practical basis for this thesis.
This tool was evaluated utilizing a questionnaire that analyzed how well
the tool meets standards of operation, intelligibility, flexibility and function
fulfillment. These criteria can be seen as quality characteristics for the selection of an automated standard solution. Finally, an overview is provided of
the individual work stages which have to be done after rigging (e.g. skinning
and muscle simulation for a 3D character model), in addition to works for
automatic rigging and animation of 3D characters and a description of an
efficient workflow for the 3D character creation pipeline.
viii
Kapitel 1
Einleitung
1.1
Zielsetzung
Die zentrale Fragestellung welche diese Arbeit behandeln soll liegt darin, inwieweit sich der Rigging-Prozess eines 3D Charakters automatisieren bzw.
rationalisieren lässt. Das automatisch erstellte Rig soll sich in einem späteren Arbeitsschritt einfach mittels Motion-Capture Daten animieren lassen.
Als praktische Grundlage dient dabei ein erstelltes Rigging-Tool, welches
den Prozess der Skeletterstellung und den des Riggings für einen zweibeinigen Character weitgehend automatisiert. Es soll dargestellt werden, welche
Anforderungen an ein derartiges Tool gestellt werden bzw. welche weiteren Funktionen notwendig sind, um es möglichst optimal in einen effektiven Animationsworkflow einbinden zu können. Dabei werden unterschiedliche Lösungsansätze und Applikationen untersucht und diskutiert. Außerdem
soll auch auf den Automatisierungsprozess und auf die dabei anfallenden
Problemstellungen eingegangen werden. Die 3D Software welche dabei zur
Anwendung kommt ist Autodesk Maya. Zur Implementierung können zwei
Skriptsprachen zur Anwendung kommen – Mel und Python. Somit sollen
diese beiden Sprachen auch miteinander verglichen werden.
Ein wesentlicher Bestandteil der Arbeit stellt dabei die Evaluierung des
Istzustands dar. Es soll auf bestehende Konzepte, Problemstellungen und
Anforderungen im Rigging- und Animationsprozess eingegangen werden. Dabei wird das erstellte Tool bzw. der dargestellte Workflow einer detaillierten
Analyse unterzogen.
1.2
Motivation
Da es sich in der Produktionspipeline einer Charakteranimation beim RiggingProzess um einen relativ technischen Bereich handelt, liegt es auf der Hand
diesen zu automatisieren. Die Vorteile einer Automatisierung des RiggingProzesses liegen in einer immensen Zeitersparnis und sind somit auch finanzi1
1. Einleitung
2
eller Natur. Auch können Änderungen an einem automatisch generierten Rig
relativ rasch und problemlos durchgeführt werden. Anwendungen mit einer
Fülle von Charakteren, welche ähnlichen Anforderungen besitzen, rechtfertigen es sich mit der Automatisierung des Rigging-Prozesses und der automatischen Erzeugung von Animationen zu beschäftigen. Dies vor allem in der
Hinsicht, dass die Prozessorleistung und die Nachfrage nach Assets ständig
steigt, jedoch die Erzeugung von Animationsdaten im herkömmlichen Sinn
dieser Nachfrage oft nicht mehr gerecht wird. Einsatzgebiete wären zum Beispiel im Spielebereich Computerrollenspiele und 3D Shooter. Weitere Einsatzmöglichkeiten sind Animationsfilme und technische Simulationen. In der
Praxis ist es erforderlich den Zeit und Kostenaufwand für die Verwendung
einer Standardlösung oder einer Individuallösung abzuschätzen bzw. ob eine
automatisierte Lösung sinnvoll ist.
1.3
Übersicht
Kapitel 1: Beinhaltet die Zielsetzung, zentrale Fragestellung und Motivation
zur Erstellung der Diplomarbeit.
Kapitel 2: Ziel dieses Kapitels ist es einen Einblick in den Rigging-Prozess
eines zweibeinigen Charakters zu schaffen. Dabei wird auf bestehende Konzepte, Problemstellungen und Anforderungen eingegangen.
Kapitel 3: In diesem Kapitel werden aktuelle Lösungsansätze zur automatisierten Rig-Erstellung in Autodesk Maya dargestellt.
Kapitel 4: Beschäftigt sich mit der Automatisierung des Rigging-Prozesses.
Es werden die zur Auswahl stehenden Skriptsprachen gegenübergestellt. Weiters erfolgt eine Darstellung des erstellten Rigging-Tools und seiner Architektur, Algorithmen und Arbeitsweise.
Kapitel 5: Das erstellte Rigging-Tool wurde einer Fragebogenanalyse unterzogen. Die dabei gewonnenen Ergebnisse und Erkenntnisse werden in diesem Kapitel dargestellt. Abschließend werden die untersuchten Rigging-Tools
analysiert und miteinander verglichen.
Kapitel 6: Liefert einen Ausblick über die dem Rigging folgenden Arbeitsschritte, wie Skinning und Muskelsimulation beziehungsweise beschäftigt sich mit Ansätzen zur automatischen Skelettgenerierung und Animation
sowie mit der Straffung der Animationspipeline.
Kapitel 7: Beinhaltet Schlussbemerkungen zur erstellten Arbeit.
Die vorliegende Arbeit soll einen Einblick in die Automatisierungsmöglichkeiten im Rigging-Prozess eines 3D Charakters liefern. Grundlegende Kenntnisse im Umgang mit der 3D Software Autodesk Maya werden dabei vorausgesetzt, da sich die diversen Beispiele und Anwendungsfälle auf diese Software
beziehen.
Kapitel 2
Anforderungen bei der
Erstellung eines humanoiden
3D Character-Rigs
2.1
Allgemeines
Betrachtet man den Rigging-Prozess im gesamten Workflow einer Charakter
Animation, so zeigt sich dass es sich hierbei um einen relativ technischen Vorgang handelt. Bezeichnend für die Beschreibung der Aufgaben beim Rigging
sind folgende Worte aus [9]:
Ein fertig modellierter 3D-Charakter bleibt ein lebloses Objekt,
solange ihm kein Rig zugewiesen wird. Unter der Bezeichnung
Rigging versteht man den Prozess, ein Knochengerüst und die
zugehörigen Kontrollobjekte zu erstellen und im 3D-Objekt zu
platzieren. Erst dadurch lässt sich das Modell deformieren und
somit im Folgenden eine Animation realisieren. Ein fertiges Rig
besteht nicht einfach nur aus 3D-Knochen. Entscheidend ist das
komplexe Zusammenspiel zwischen den Bestandteilen des Skeletts und den Kontrollobjekten sowie Kinematik-Funktionen und
diversen Expressions. Ziel der Arbeit des Riggers ist es, der Animationsabteilung ein fertiges Rig zu übergeben, das den Anforderungen der folgenden Prozesse standhält.
Ist es nun erforderlich, in einer Produktion diesen Prozess des Riggings
für eine große Anzahl von Charakteren zu durchlaufen, so liegt es nahe diesen
zu automatisieren. „Dies bietet Animatoren die Möglichkeit die sehr technischen Arbeitsvorgänge zu beschleunigen und sich auf den kreativeren Teil
– die eigentliche Animation – zu konzentrieren“ [25]. Ein mögliches Beispiel
wär hier eine Anwendung mit einer Unzahl an verschiedenen Charakteren
3
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
4
(Computerrollenspiel, Massenszene bei der 3D Charaktere zum Einsatz kommen etc.). Viele dieser Charaktere können mit demselben Rig ausgestattet
werden, da sich deren Meshes in deren Anatomie sehr ähnlich sind.
Untersucht man nun den Vorgang des Riggings für sich, so sieht man,
dass die Ausgangsbasis für das Rig das Mesh des 3D Charakters darstellt.
Als Einschränkung gilt, dass es sich beim 3D Charakter um einen Zweibeiner handelt. Die Erstellung des eigentlichen Rigs erfolgt in zwei Schritten.
Zunächst werden an das Mesh die Joints des Skeletts angepasst. Für die Erstellung des Rigs ist es notwendig zuerst ein Skelett zu erstellen, um dann
in einem zweiten Schritt Controller für Inverse- und Forward-Kinematik zu
erzeugen. Ein Skelett bzw. das Rig eines Zweibeiners besteht wiederum aus
mehreren Teilrigs bzw. Ästen in der Skelettstruktur, welche einen baumartigen Aufbau besitzt. Diese Bestanteile sind bei einem standardmäßigen Zweibeiner:
• Beine
• Torso
• Kopf
• Arme
• Finger
Bei der manuellen Erstellung des Rigs wird auch meist diese Reihenfolge
eingehalten. Auch ist es üblich für einen Körperteil, zum Beispiel den Beinen,
die Skelettstruktur zu erstellen und anschließend sofort das entsprechende
Teilrig zu erstellen. Im Unterschied dazu wird bei der automatischen RigGenerierung das Skelett zuerst als Ganzes erstellt.
2.2
2.2.1
Anforderungen an das 3D Charakter Modell
Ausrichtung und Symmetrie
Um ein einwandfreies Rigging zu garantieren, muss das erstellte Charakter
Modell [12] die T-Pose einnehmen und in die positive Z-Richtung schauen
(siehe Abb. 2.1). Die Füße sollten dabei den Boden berühren und die Arme
parallel zum Boden verlaufen. Das Charakter Modell sollte entlang der YZ
Ebene gespiegelt worden sein und so ein symmetrisches Modell darstellen.
Die YZ Ebene teilt somit das Modell in zwei gleiche aber spiegelverkehrte
Teile. Dies deswegen, da im Regelfall die Joints für Arme, Finger, Beine
und Augen gespiegelt werden. Nicht symmetrische Modelle bedürfen einer
nachträglichen Anpassung der Joints.
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
5
Abbildung 2.1: Charakter Modell in T-Pose aus Digital Tutors: Creating
stylized females in Maya.
2.3
2.3.1
Anforderungen an die Skelettgenerierung
Allgemeine Skelettstruktur und Naming-Convention
Da es sich beim Skelett um das eines Zweibeiners handelt, kann man von einer
allgemeinen Struktur ausgehen. Diese Struktur verfügt über einen hierarchischen Aufbau. Es ist lediglich der jeweilige Joint an das Mesh anzupassen,
wobei jedoch die Struktur unverändert bleibt. Abbildung 2.2 zeigt den Aufbau des Skeletts für einen Zweibeiner.
Dadurch dass der Skelettaufbau einer allgemeinen Struktur entspricht ist
es auch möglich, diesen in einen Algorithmus zu fassen. Um die Integration
mit Autodesk MotionBuilder zu erleichtern, ist es ratsam die Joints des Skeletts mit der MotionBuilder eigenen Naming-Convention auszustatten. Diese
Naming-Convention kann der MotionBuilder Mapping List entnommen werden [4].
Wird die Naming-Convention eingehalten, so können auch Skelette, welche mit jedweder Software erstellt wurden, zB mit Autodesk Maya, in MotionBuilder automatisch characterized werden. Unter Characterizing versteht
man das Zuordnen der Skelettstruktur bzw. der Joints des erstellten Charakters an die in MotionBuilder dafür vorgesehenen Nodes (siehe Abbildung
2.3). Entsprechen nun diese Joints einer in MotionBuilder vorgesehenen Namenskonvention so kann dieses Zuordnen automatisch ausgeführt werden.
Wird die Naming-Convention nicht eingehalten, so hat das Zuordnen in der
MotionBuilder Mapping List manuell zu erfolgen. Wird zum Beispiel der
Joint für das linke Knie mit „LeftLeg“ benannt, so erfolgt das Mapping automatisch, wäre es jedoch zum Beispiel mit „lftKnee“ benannt worden, so hätte
man es in MotionBuilder manuell dem Node für das Knie zuordnen müssen.
Um das Rig mit einem Auto-Forearm Twist ausstatten zu können, benötigt man zwischen dem Joint für den Ellbogen und dem Handgelenk noch
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
6
Head_End
Head
LeftEye
Neck
Spine3
LeftShoulder
LeftArm
Spine2
LeftForeArm
Spine1
LeftForeArmRoll
Spine
LeftHand
Hips
LeftHandThumb1..
LeftUpLeg
LeftHandIndex1..
Root
LeftLeg
LeftHandMiddle1..
LeftFoot
LeftHandRing1..
LeftToeBase
LeftHandPinky1..
LeftToeEnd
Abbildung 2.2: Hierarchischer Skelettaufbau eines Zweibeiners.
einen Joint (LeftForeArmRoll ).
2.3.2
Ausrichtung der Joints
Das Festlegen der lokalen Rotationsachse eines Joints wird in Autodesk Maya als Joint Orientation bezeichnet. Erfolgt keine Joint Orientation so wird
die lokale Rotationsachse nach dem Weltkoordinatensystem ausgerichtet. Die
linke Joint-Kette in Abbildung 2.4 zeigt eine ausgerichtete Joint-Kette, bei
der die lokale Y-Achse immer in Richtung des Child-Joints zeigt. Die Joints
der rechten Joint-Kette sind nicht ausgerichtet bzw. entsprechen einer Ausrichtung nach dem Weltkoordinatensystem.
Bei der Erstellung des Skeletts, sollte man sich im Klaren sein, was die
Ausrichtung der Joints für das Verhalten des Rigs bedeutet. In der Literatur
gibt es verschiedene Ansätze. Digital Tutors verzichtet in Character Setup in
Maya auf eine Ausrichtung der Joints [10]. Eine Ausrichtung erfolgt dort, wo
sie definitiv benötigt wird. Dies ist zum Beispiel beim Auto-Forearm Twist
der Fall, da sich hier der Split-Joint um die eigene Achse zu drehen hat. Eine
Ausrichtung der Joints nach den Child-Joints geschieht auch bei den Fingern,
damit sich diese richtig eindrehen, um sie zu einer Faust ballen zu können. Ein
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
7
Head_End
LeftEye
Head
Neck
Spine3
LeftArm LeftForeArmRoll
LeftShoulder LeftForeArm
Spine2
LeftHand
Spine1
Hips
Root
LeftUpLeg
Spine
LeftLeg
LeftFoot
LeftToeBase
LeftToeEnd
se
ch
sa
ion
tat
Ro
Rotationsachse
Abbildung 2.3: MotionBuilder Naming-Convention.
Abbildung 2.4: Joint Orientation.
zweiter Ansatz ist, die Joints des Skeletts immer nach dem jeweiligen ChildJoint auszurichten. Die Achse, welche nach dem Child-Joint ausgerichtet
wird, wird als Twisting Axis bezeichnet. In Abbildung 2.4 war dies die YAchse. Dabei kann aber auch die X oder Z Achse gewählt werden. In Art
of Rigging werden die Joints so ausgerichtet, das die X-Achse die Twisting
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
8
Twisting Axis
Abbildung 2.5: Drehung um X-Achse im Weltkkoordinatensystem.
Twisting Ax
is
Abbildung 2.6: Drehung um lokale X-Achse.
Axis ist und eine Rotation um diese Achse eine Drehbewegung darstellt. Die
Rotation um die Y-Achse stellt eine Seitwärtsbewegung und die Rotation um
die Z-Achse eine Auf- Abbewegung dar [18]. Welche Ausrichtung der Joints
man nun wählt, entscheidet sich dadurch, wie sich das fertige Rig verhalten
sollte. Abbildung 2.5 zeigt, einen Arm bei dem die Twisting Axis der XAchse im Weltkoordinatensystem entspricht. Bei einer Animation mittels
des FK-Controllers für die Schulter und Rotation um die X-Achse wird der
Arm um diese Achse gedreht.
Abbildung 2.6 zeigt ein Rig, bei dem die lokale X-Achse nach dem Joint
für den Ellbogen ausgerichtet ist. Bei einer entsprechenden FK Animation
der Schulter wird um diese Achse rotiert.
Welche Art der Ausrichtung nun gewählt wird, beeinflusst natürlich auch
die Animation des Charakters bei einer Rotation um die anderen Achsen.
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
9
Rotation um lokale Z-Achse
Rotation um lokale Z-Achse
(a)
(b)
Abbildung 2.7: Beispiel für ein Joint Setup der Hände, Daumen zeigt nach
vorne (a), Daumen zeigt nach oben (b).
Wichtig ist bei dieser Art der Ausrichtung, dass die lokale Achse des Controllers, nach dem Joint der von diesem kontrolliert wird, ausgerichtet wird.
Vergleiche dazu den Abschnitt 2.4.3.
Soll für die Animation der Finger um eine bestimmte Achse rotiert werden, zum Beispiel um die Z-Achse, so gilt zu beachten das je nach Ausrichtung der Hand auch die Joints der Finger ausgerichtet werden müssen. In
Abbildung 2.7 (a) zeigt der Daumen nach vorne das heißt im Weltkoordinatensystem in Z-Richtung. Die lokale Z-Achse der Joints für die Finger zeigt
hier ebenfalls nach vorne. In Abbildung 2.7 (b) zeigt der Daumen nach oben
als auch die lokale Z-Achse der Joints für die Finger.
2.3.3
Positionierung der Joints
Um eine optimale Kontrolle der Ellbogen mittels eines Pole Vector Constraints zu erreichen, sollte der Joint für den Ellbogen so positioniert werden,
dass sich dieser in der XY-Ansicht auf einer Linie mit den Joints für Oberarm
und Handgelenk befindet (siehe Abb. 2.8 (a)). Weiters sollte der Joint für
den Ellbogen in Z-Richtung leicht nach hinten versetzt werden (siehe Abb.
2.8 (b)). Dasselbe gilt natürlich auch für das Setup der Beine. Die Joints
für den Oberschenkel, Knie und Fußgelenk befinden sich in XY-Ansicht auf
einer Linie. In Z-Richtung wird das Knie leicht nach vorne verschoben.
Die Joints für die Wirbelsäule den Hals und Kopf sollten sich auf der
Y-Achse befinden, um die Arme und Beine später entlang der YZ-Ebene
spiegeln zu können.
Um ein gut funktionierendes Reverse Foot Rig erstellen zu können, sollten
die Joints für die Zehen und den Fußballen in der Seitenansicht parallel zur
Z-Achse verlaufen. In der Topansicht sollten die Joints für das Fußgelenk,
den Fußballen und den Zehen ebenfalls parallel zur Z-Achse verlaufen. Dies
wird in Abbildung 2.9 dargestellt.
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
10
(a)
(b)
Abbildung 2.8: : Joint Setup für Arme. Sicht von vorne (a), Sicht von oben
(b)
Ankle
Ankle
Toe
Ball
Ball
(a)
Toe
(b)
Abbildung 2.9: Beispiel für ein Joint Setup der Füße, Seitenansicht (a),
Topansicht (b).
2.3.4
Spiegeln der Joints
Soll ein Skelett für einen symmetrischen Charakter erzeugt werden, so lassen sich die Joints für die Arme, Hände, Beine und Füße auf einfache Weise
spiegeln. Im Normalfall sollten dabei die gespiegelten Joints die gegensätzliche Ausrichtung als ihr Original haben. Die lokalen Rotationsachsen welche
parallel zur Spiegelungsebene, in Abbildung 2.10 ist dies die YZ-Ebene, liegen werden bei der gespiegelten Joint-Kette invertiert. Dies ist in Abbildung
2.10 (a) der Fall. Bleibt die Ausrichtung der gespiegelten Joints gleich, so
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
(a)
11
(b)
Abbildung 2.10: gespiegelte Joints, mittels Behavior (a), mittels Orientation (b).
verändern sich auch nicht deren lokale Rotationsachsen (siehe Abb. 2.10
(b)). Wird wie in Abbildung 2.10 (a) gespiegelt, so können Animationen
der Original-Joints auf die gespiegelten Joints kopiert werden. Dies ist vor
allem nützlich für Charaktere in Computerspiele, da diese eine Menge symmetrischer und zyklischer Animationen aufweisen (Gehen, Schleichen und
Laufen) [18].
2.4
Anforderungen an die Rig-Generierung
Ist das Skelett bzw. ein Teilskelett erstellt, so kann man daran gehen das
erforderliche Rig zu erstellen. Um neben Forward Kinematik auch Inverse Kinematik verwenden zu können müssen einzelne Joint-Ketten mit IK
Handles versehen werden. Um den Charakter nicht direkt mittels Joints und
IK-Handles animieren zu müssen, werden sogenannte Kontrollobjekte verwendet. Unter einem Rig versteht man das Zusammenspiel aller Joints, IK
Handles, Gruppen, Nodes und Kontrollobjekte in einer einzigen Hierarchie.
In dieser Hierarchie sind all diese Objekte zu einem logischen einfach zu benützenden Setup zusammengefasst [22]. Die Elemente des Rigs sollten dabei
in drei Gruppen organisiert werden:
• Gruppe für das Mesh bzw. wenn erforderlich der unterschiedlichen Detailierungsgrade der Geometrie zum Beispiel Low-Res, Medium-Res,
High-Res.
• Gruppe für die Joints und deren Constraints.
• Gruppe für die Kontrollobjekte, IK-Handles und sonstigen Nodes.
Um die Verwendung des Charakters in einer anderen Szene zu erleichtern und übersichtlicher zu gestalten, können diese drei Gruppen zu einer
einzelnen Gruppe zusammengefasst werden.
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
2.4.1
12
Forward Kinematik
Wurde ein Skelett erstellt, so lässt sich dieses standardmäßig mittels Forward Kinematik animieren. Die Joints werden dabei vom obersten Element
bis zum untersten Element einer Hierarchie animiert. Wenn man zum Beispiel den Joint für den Ellbogen rotiert wird dementsprechend auch die Hand
mitrotiert. Bei Verwendung der Forward Kinematik lassen sich mit Ausnahme des Beckens (der Root-Joint kann auch transliert werden) die einzelnen
Körperteile mittels Rotation der Joints animieren.
2.4.2
Inverse Kinematik
Soll ein Charakter nach einem bestimmten Gegenstand greifen, so wird man
feststellen, dass dies mittels Forward Kinematik etwas umständlich zu realisieren ist. Man müsste zuerst die Schultern, dann den Ellbogen, dann das
Handgelenk und schließlich die Finger rotieren, um nach den Gegenstand zu
greifen. Die Hierarchie wird praktisch vom Anfang bis zum Ende durchwandert. Es gibt keine Möglichkeit die Hand am Gegenstand zu platzieren, da
der Arm dieser nicht folgt [21].
Die Lösung dieses Problems stellt die Inverse Kinematik dar. Bei dieser ist der gewünschte Endpunkt der Bewegung bekannt. Die Winkelstellungen der einzelnen Joints werden berechnet [24, S. 192–203]. Eine IKAnimation wird durch ein IK-Steuerelement (IK-Handle bzw. Endeffector )
kontrolliert (siehe Abb. 2.11). Im Gegensatz zur Forward Kinematik werden bei der Inverse Kinematik ausschließlich Translationswerte für das IKSteuerelement herangezogen. In Autodesk Maya gibt es 3 verschiedene Arten
von IK-Handles:
• Rotate Plane (RP) IK Solver – ermöglicht dem Animator die Ausrichtung der Joints innerhalb des Solvers.
• Single Chain (SC) IK Solver – ermöglicht keine Ausrichtung der Joints.
• Spline IK Solver – die Ausrichtung der Joints wird durch eine Nurbs
Kurve kontrolliert. Diese Art von IK Solvern eignet sich für die Animation von Tentakeln, Antennen, Wirbelsäulen, Schlangen etc.
Welche Animationstechnik verwendet wird hängt von den Anforderungen
an die Animation bzw. vom jeweiligen Körperteil, welches animiert werden
soll, ab. Forward Kinematik wird meist für den Oberkörper benutzt. Die Wirbelsäule, Schultern und Arme können mittels Forward Kinematik animiert
werden. Steht ein Charakter bzw. gestikuliert dieser mit seinen Händen so
lässt sich dies mittels Forward Kinematik realisieren. Soll ein Charakter jedoch seinen Hut anheben bzw. werfen, einen anderen Charakter berühren
oder einfach mit einem anderen Gegenstand interagieren, wird Inverse Kinematik benötigt. Vor allem die Arme sind daher auch mit Inverse Kinematik
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
13
Root
Knee
Joint
Bone
Effector
Abbildung 2.11: Rotate Plane IK Solver.
auszustatten. Die Wirbelsäule mittels Inverse Kinematik bzw. eines Spline
IK Solvers zu realisieren macht zwecks Vereinfachung bei der Animation
durchaus Sinn. Für die Beine und Füße wird Inverse Kinematik am häufigsten verwendet. Inverse Kinematik ist ideal um einen Walkcycle zu realisieren
bzw. um einen Charakter am Boden fortzubewegen. Soll ein Charakter jedoch schwimmen, so wird man eher Forward Kinematik für Arme und Beine
verwenden [21]. Dies verdeutlicht, das es für ein gutes Character Setup unerlässlich ist ein IK/FK Switching für Arme und Beine zur Verfügung zu
stellen (siehe Abschnitt 2.4.4).
2.4.3
Kontrollobjekte
Abbildung 2.12 zeigt ein Rig mit den dazugehörenden Kontrollobjekten.
Meist werden für diese Kontrollobjekte Nurbs Kurven verwendet, da diese
nicht gerendert werden und sich auch einfach wegschalten lassen. Es ist auch
üblich die Controller für die linke Seite blau und die rechte Seite rot zu färben. Somit sieht der Animator, unabhängig von der Kameraposition, sofort
welche Seite des Charakters er gerade bearbeitet [18]. Die Controller für die
mittleren Körperbereiche sind meist gelb oder weiß. Es ist eine gute Technik
die Shapes eines Kontrollobjekts so zu erstellen, dass sie dem zu kontrollierenden Körperteil ähneln. So kann zum Beispiel der Controller für die Füße
die Form eines Fußabdrucks besitzen. Die Hauptaufgabe der Kontrollobjekte
ist es eben die Kontrolle des Rigs zu vereinfachen.
Im Grunde gibt es drei verschiedene Arten, wie ein Kontrollobjekt ein
Rig beeinflussen kann:
• Ausrichtung eines Joints: Diese Art wird hauptsächlich für FK Controller verwendet und wird mittels Orient Constraints realisiert. Für
einen FK Controller ist wichtig, dass die lokale Rotationsachse des Kon-
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
14
Abbildung 2.12: Rig mit Kontrollobjekten.
trollobjekts nach der lokalen Rotationsachse des zu steuernden Joints
ausgerichtet ist. Wie dies bewerkstelligt werden kann, ist in [18] auf
Seite 10 beschrieben.
• Positionierung eines Joints oder IK Handles: Wird verwendet zur Kontrolle des Root Joints und für IK-Handles der Arme und Beine. Dies
wird realisiert mittels Point oder Parent Constraining der Joints oder
IK-Handels auf die Controller.
• Steuerung mittels eines benutzerdefinierten Attributs: Mittels diesen
Attributs wird ein komplexer Bewegungsablauf kontrolliert. Beispiele
sind das Ballen der Finger zu einer Faust oder die Abrollbewegung
der Füße. Realisiert wird dies mittels Expressions [32] oder Set Driven
Keys [5].
Eine Beschreibung der einzelnen Animationsbeschränkungen (Constraints)
findet sich in [5]. Nicht benötigte Attribute eines Kontrollobjekts sollten der
Klarheit wegen und um Probleme zu vermeiden nicht angezeigt werden.
2.4.4
IK/FK Switch
Wie in Abschnitt 2.4.3 erwähnt ist es für ein gutes Character Setup nötig auf jeden Fall für die Arme ein IK/FK Blending zu realisieren. Für die
Beine kann sich dies durchaus auch als nützlich erweisen. Manche Setups gehen sogar soweit, dass ein IK/FK Blending für die Wirbelsäule möglich ist.
Der „klassische“ IK/FK Switch besteht aus drei Joint-Ketten. An die erste
Kette wird die Geometrie des Charakters gebunden. Die zweite Kette ist für
das Forward Kinematik Blending zuständig und die dritte wird mittels eines IK-Handles kontrolliert. Die Mesh Joint-Kette wird dabei mittels Orient
Constraints an die IK und FK Kette gebunden. Das Blending zwischen IK
und FK wird durch die Gewichtung dieser Orient Constraints realisiert. Die
Vorgehensweise zur Erstellung des „klassischen“ IK/FK Switch kann in [18]
auf Seite 16 ff. nachgelesen werden.
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
Gruppe_Par
Gruppe_Rot
Ellbogen_FK_Ctrl
15
FK Jointkette
Ellbogen_Fk_Jnt
Schulter_Fk_Jnt
Mesh Jointkette
IK Jointkette
Abbildung 2.13: IK/FK Blending mittels drei Joint-Ketten.
Tabelle 2.1: Constraints eines FK Kontrollobjektes.
Ellbogen_FK_Ctrl Ellbogen_FK_Jnt Schulter_FK_Jnt
Gruppe_Par
ParentConstraint
Gruppe_Rot
Ellbogen_FK_Jnt
PointConstraint
OrientConstraint
Ist das FK Kontrollobjekt nach der lokalen Rotationsachse des zu steuernden Joints ausgerichtet worden, so befindet sich dieses in einer Gruppe
(Gruppe_Rot – siehe dazu Abschnitt 2.4.3). Um sich bei FK Bewegungen mitzubewegen, wird Gruppe_Rot mittels eines Point Constraints an den
Joint des Ellbogens der FK Kette gebunden. Umgekehrt steuert das FK Kontrollobjekt Rotationen des Joints mittels eines Orient Constraints. Damit der
Ellbogen Bewegungen der Schulter mitmacht, muss dieser noch hierarchisch
der Schulter untergeordnet werden. Dies wird realisiert indem Gruppe_Rot
nochmals gruppiert wird (Gruppe_Par). (Gruppe_Par) wird nun mittels eines Parent Constraints an den Joint für die Schulter gebunden. Diese Vorgehensweise für Schulter (Parent) und Ellbogen (Child) kann auch auf andere
FK Elemente angewendet werden. Mittels Set Driven Keys oder Expressions
sollte zwecks besserer Übersichtlichkeit die Sichtbarkeit der Kontrollobjekte
durch das IK_FK Blend Attribut gesteuert werden (siehe Abbildung 2.13).
Tabelle 2.1 zeigt welche Elemente durch Constraints verbunden sind.
Dies kann so verstanden werden, das die Elemente der linken Spalte Animationsbeschränkungen (Constraints) auf die Elemente der ersten Zeile erhalten.
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
16
Abbildung 2.14: klassischer vs. automatischer IK/FK Switch.
Seit Autodesk Maya Version 5.0 sind IK Handles mit einem Attribut
IK Blend ausgestattet, welches ein automatisches IK/FK Blending ermöglicht. Unglücklicherweise kommt es bei dessen Verwendung immer wieder
zu ungewünschten Effekten bzw. Rotationen. Daher scheint es sinnvoll, den
Mehraufwand zur Generierung eines klassischen IK/FK Switchs in Kauf zu
nehmen, um sich bei der Animation des Charakters viel Ärger zu ersparen.
Abbildung 2.14 zeigt ein IK/FK Blending des linken Fußes dreier Charaktere. Nur der mittlere Charakter ist mit dem „klassischen“ IK/FK Switch
ausgestattet. Die beiden anderen Charaktere verwenden den automatischen
IK/FK Switch von Autodesk Maya. Der linke Charakter „Animo“ ist dem
Walkcycle Tutorial von Digital Tutors entnommen [11]. Die beiden anderen Charaktere verwenden das Setup von dRiggingTool, wobei das Setup
des rechten Charakters mit einer älteren Version erstellt wurde, welche mit
dem automatischen IK/FK Switch ausgestattet ist. Es zeigt sich, dass nur
der mittlere Charakter, mit dem klassischen IK/FK Switch, das gewünschte
Ergebnis liefert.
2.4.5
Reverse Foot
Um das Abrollen der Füße, bzw. generell einen Walkcycle eines Charakters zu
animieren, ist es nötig das Setup mit einem Reverse Foot System auszustatten. Dabei ist die IK Joint-Kette der Beine bzw. des Fußes um dieses System
zu erweitern. Prinzipiell gibt es hier zwei Möglichkeiten der Realisierung.
• Reverse Foot System mittels Gruppen: Hierbei erfolgt eine entspre-
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
17
Abbildung 2.15: Reverse Foot System mittels Gruppen.
chende Gruppierung der IK-Handles für das Fußgelenk, Ballen und
Zehen. Um diverse Bewegungen auszuführen, wird um den Pivot der
jeweiligen Gruppe rotiert, welcher entsprechend zu positionieren ist.
Eine Beschreibung dieser Vorgehensweise findet sich in [18] Seite 18
folgende. Bei dieser Methode werden keine zusätzlichen Joints benötigt. Ein weiterer Vorteil ist, dass eine Auf- Abbewegung der Zehen
einfach zu realisieren ist (siehe Abbildung 2.15). Das Setup bei diesem
System ist einfacher realisiert, jedoch ist es etwas schwerer zu durchblicken, als jenes mittels Joints.
• Reverse Foot System mittels Joints: Dies ist die klassische Vorgehensweise. Es wird eine zusätzliche Joint-Kette bestehend aus 4 Joints erzeugt (siehe Abbildung 2.16). Die Hierarchie ist dabei RLBase_Jnt
> RLToe_Jnt > RLBall_Jnt > RLAnkle_Jnt. Die IK-Handles der IK
Joint-Kette AnkleIK, BallIK, ToeIK werden dabei dem entprechenden
Joint der Reverse Foot Joint-Kette untergeordnet. RLBase_Jnt wird
anschließend dem IK Kontrollobjekt untergeordnet. Wichtig ist, dass
dieser Joint dort positioniert wird, wo sich die Ferse des Charakters
befindet bzw. der Absatz des Schuhs den Boden berührt.
2.4.6
No-Flip Knee
Mit dieser Technik wird es dem Animator ermöglicht den Fuß zu animieren, ohne das Kontrollobjekt mitanimieren zu müssen, um ein „Flipping“ des
Knies zu verhindern. Um das Kontrollobjekt für das Knie bzw. Ellbogen
optimal zu positionieren erstellt man für dieses einen Point Constraint auf
die Joints für den Oberschenkel, Knie und das Fußgelenk. Dadurch wird das
Kontrollobjekt genau im Zentrum der Ebene, welche diese drei Joints be-
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
18
AnkleIK
RLAnkle_Jnt
ToeIK
BallIK
RLBase_Jnt
RLToe_Jnt
RLBall_Jnt
Abbildung 2.16: Reverse Foot System mittels Joints.
schreiben, positioniert. Um das Kontrollobjekt nach dieser Ebene auszurichten, erstellt man einen Aim Constraint auf den Joint für das Knie. Dadurch
erreicht man, dass die lokale X-Achse des Kontrollobjekts genau in Richtung
Knie zeigt. Die Constraints können nun gelöscht und das Kontrollobjekt entlang seiner lokalen X-Achse entsprechend positioniert werden. Anschließend
läßt sich für dieses Kontrollobjekt ein Pole Vector Constraint erstellen [29].
Bei einem No-Flip Knee wird dieses Kontrollobjekt für das Knie automatisch
mitanimiert bzw. zeigt in die Richtung des Fußes. Bei Bedarf kann auch ein
Offset eingegeben werden. Zur Realisierung gibt es zwei Möglichkeiten:
• Realisierung mittels eines Plus Minus Average Utility Nodes: Eine Beschreibung dessen findet sich in [18] Seite 13 folgende. Hierbei erspart
man sich ein Kontrollobjekt für das Knie zu erstellen. Man ist jedoch
dann nicht so flexibel in der Animation des Charakters.
• Realisierung mittels Constraints und eines Kontrollobjektes: Hierbei
wird das Kontrollobjekt gruppiert und der Pivot dieser Gruppe (Knee_
CtrlGrp) auf den RLBase_Jnt positioniert. Anschließend wird mittels
eines Point Constraints diese Knee_CtrlGrp an RLBase_Jnt gebunden. Somit verfolgt das Knie Kontrollobjekt Bewegungen des Fußes.
Soll das Knie automatisch in dieselbe Richtung wie der Fuß zeigen, so
muss die Knee_CtrlGrp zusätzlich mittels eines Orient Constraints an
RLBase_Jnt gebunden werden. Dieser Orient Constraint ist mit einem
Offset zu generieren. Für ein flexibles Setup sollten diese beiden Constraints natürlich mittels entsprechend benutzerdefinierten Attributen
des Knie Kontrollobjektes aktiviert und deaktiviert werden können.
Um die Position des Knies zum Fuß variiren zu können, kann auch ein
Attribut zur Veränderung des Offsets des Orient Constraints erstellt
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
19
werden.
2.4.7
Auto-Forearm Twist
Zur Simulation der Drehbewegung des Unterarms und um eine realistische
Verformung der Geometrie zu erhalten, sollte das Setup eines Charakters
mit einem Auto-Forearm Twist ausgestattet sein. Die Erzeugung eines solchen Setups wird in [18] Seite 21 folgende erklärt. Die Drehbewegung des
Unterarms kann dabei auch mittels einer Expression angepasst werden. Zum
Beispiel
foreArm_Jnt.rotateX = wristControl.rotateX * 0.3
bedeutet, dass sich der Unterarm ein Drittel weniger dreht als das Handgelenk, was ein realistisches Verhalten darstellt. Bei Charakteren mit langen
bzw. sehr großen Unterarmen können auch mehrere Split-Joints verwendet
werden. Dabei soll das Setup für die Drehbewegung so erstellt werden, dass
diese zum Ellbogen hin weniger wird.
Bei einem Setup mit klassischem IK/FK Switch wird die Joint-Kette
der Geometrie mit einem Split-Joint bzw. einem Auto-Forearm Twist ausgestattet . Die IK Joint-Kette bleibt unverändert. Das heißt, dass somit keine
Änderung der Positionen der Pivots des Effektors und IK-Handles nötig sind.
2.4.8
Wirbelsäule mittels IK Spline Handle
Um Bewegungen der menschlichen Wirbelsäule zu animieren verwendet man
in einem Character Setup für einen 3D Charakter normalerweise IK Spline
Handles. Hierbei werden die Rotationen der vom IK Spline Handle umschlossenen Joints mittels Control Vertices einer Kurve gesteuert. Diese Vertices
können dann wiederum mittels Cluster durch Kontrollobjekte gesteuert werden. Abbildung 2.17 zeigt ein Setup für eine Wirbelsäule. Hierbei handelt
es sich um ein relativ einfaches IK Setup für die Wirbelsäule [10].
Ein etwas komplexeres Setup für den Oberkörper unter Verwendung von
Forward und Inverse Kinematik findet sich in [22] auf Seite 97 folgende (siehe Abbildung 2.18). Hier ermöglicht eine zusätzliche FK Joint-Kette die
Steuerung des Oberkörpers mittels Forward Kinematik. Durch ein benutzerdefiniertes Attribut können mehrere FK Joints gesteuert werden und so ein
realistisches nach vorne Beugen bzw. seitwärts Beugen des Körpers ermöglichen. Die Controller der IK Kinematik sind durch Parent Constraints an die
Joints der FK Kinematik gebunden. Die Verformung der Geometrie wird bei
diesem Setup nach wie vor von den IK Joints der Wirbelsäule beeinflusst.
2.4.9
Squash and Stretch
Zur Verwirklichung des Animationsprinzips Squash and Stretch in einem 3D
Charakter, muss dieser mit einem entsprechenden Setup ausgestattet sein.
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
20
End Effector
Cluster
Nurbs Curve
Control Objects
Start Joint
Abbildung 2.17: einfaches IK Setup für die Wirbelsäule.
IK Joints
FK Joints
Abbildung 2.18: komplexes IK/FK Setup für die Wirbelsäule.
Dieses Setup kann mittels Expressions oder Utility Nodes realisiert werden.
Dabei ist die Realisierung mittels Utility Nodes zu bevorzugen, da diese Lösung in den Dependency Graph integriert ist und so die bessere Performance
besitzt. Die Erstellung eines solchen Setups für einen Rotate Plane oder Single Chain IK Handle erfordert folgende Schritte [18]:
• Ermittlung der Start- und End-Joints der IK Joint-Kette.
• Berechnung der ursprünglichen Länge der Joint-Kette.
• Erstellung zweier Group Nodes welche jeweils durch Point Constraints
an den Start-Joint und den IK Handle gebunden werden. Diese beiden
Nodes repräsentieren die Anfangs- und Endpunkt der IK Joint-Kette.
• Die aktuelle Distanz zwischen diesen beiden Group Nodes wird mittels
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
21
Programm 2.1: Beispiel für die Erzeugung eines Curve Info Nodes.
1 import maya.cmds as cmds
2 curveInfoNode = cmds.arclen('curveName', ch=True)
eines DistanceBetween Nodes ermittelt.
• Mittels eines Condition Nodes wird ermittelt ob die aktuelle Distanz
die ursprüngliche Länge der Joint-Kette übersteigt. Ist dies der Fall,
so wird die Kette gedehnt. Der Faktor um den die Joint-Kette gedehnt
werden soll beträgt aktuelle Distanz/ursprüngliche Länge der JointKette. Dieser wird mittels eines Multiply Divide Nodes errechnet.
• Die Joints der Joint-Kette werden nun um diesen Faktor in die entsprechende Richtung skaliert. Dabei ist es wichtig, dass die lokalen
Rotationsachsen der Joints ausgerichtet sind. Je nachdem in welche
Richtung <x,y,z> die Joints ausgerichtet sind wird skaliert.
Um einen Spline IK Handle zu stretchen ist lediglich ein CurveInfo Node
für die Nurbs Kurve des Spline IK Handles erforderlich. Dieser kann mittels
folgenden Python Befehls erstellt werden.
Erfolgt nun eine Translation der Kontrollobjekte welche mit den Clustern
und CVs der IK Spline Kurve verbunden sind, so verändert die Kurve ihre
Länge. Die Länge der Kurve erhält man durch das Attribut curveInfoNode.arcLength. Mittels eines Multiply Divide Nodes kann nun der Skalierungsfaktor jedes Joints des IK Spline Handles ermittelt werden. Wichtig ist dabei
natürlich wieder eine Ausrichtung der lokalen Rotationsachsen der Joints.
2.4.10
Flexibilität im Rigging-Prozess
Generell lässt sich sagen, dass für spezielle Animationsanforderungen oft spezielle Rigs notwendig sind. So musste für den Animationsfilm „Madagascar“
von PDI/Dreamworks ein Rig ohne anatomische Abhängigkeiten erstellt werden. Dadurch war es möglich einzelne Gliedmaßen separat vom Rest des
Körpers zu animieren [27]. Oft ist es auch nötig für eine Figur mehrere Rigs
zu erstellen. Für Elastigirl im Pixar Film „Die Unglaublichen“ wurden ein
normales Skelett-Rig und ein „Snake“ Rig erstellt, mit dem sie ihren Arm
dehnen und wie eine Schlange um Objekte wickeln kann [28]. Diese Ansprüche lassen sich mittels Standardrigs beziehungsweise automatisch erstellten
Rigs oft nicht bzw. nur schwer erfüllen. Dennoch können Standardrigs eine
Ausgangsbasis für eine Reihe von Anwendungsfällen darstellen. Dazu ist es
wichtig, dass die grundlegenden Anforderungen an den Rigging-Prozess erfüllt sind und das Rig keine Fehler aufweist. Auch sollte großer Wert auf
eine klare Namensgebung und Hierarchie gelegt werden. Dies erleichtert die
2. Anforderungen bei der Erstellung eines humanoiden 3D Character-Rigs
22
Erweiterbarkeit um spezielle Anforderungen. Um Probleme mit dem Rig zu
vermeiden, sollten bei den Kontrollobjekten nicht benötigte Attribute ausgeschaltet werden. Einige Flexibilitätsmerkmale für Rigging-Tools sind:
• Rig für Zweibeiner, Vierbeiner, geflügelte Charaktere etc. erstellbar.
• Möglichkeit asymmetrische Modelle zu riggen bzw. ein Skelett dafür
zu erstellen.
• Einfache und rasche Vorgehensweise beim Anpassen des Rigs an das
Mesh.
• Einstellungsmöglichkeiten für die lokale Rotationsachse der Joints.
• Variable Anzahl von Joints für die Wirbelsäule, den Nacken und Unterarm.
• Möglichkeit nur Teile des Körpers zu riggen.
• Auswahlmöglichkeit unterschiedlicher Setups. Zum Beispiel Reverse
Foot mittels Gruppen oder Joints, Footroll oder Raise Ball, Raise Toe,
Raise Heel.
• Forward und Inverse Kinematik für Arme, Beine und Torso.
• Squash and Stretch für Arme, Beine und Torso.
• Die Fähigkeit im Charaktererstellungsprozess wieder eine Schritt zurück zu gehen.
• Die Möglichkeit erstellte Zwischenstände zu speichern.
• Unterstützung bei der Erstellung gängiger Accessoires wie Zehen, Flügel, Tentakel, Schwanz, zusätzliche Objekte wie Waffen und Werkzeuge
etc..
• Unterstützung beim Rigging des Gesichts.
Kapitel 3
Aktuelle Lösungen
3.1
Allgemeines
Im folgenden Kapitel sollen einige Rigging-Tools für Autodesk Maya vorgestellt und miteinander verglichen werden. Diese Tools stellen unterschiedliche
Lösungsansätze zur automatischen Erstellung eines 3D Charakter Setups für
einen Zweibeiner dar und können allesamt kostenlos von www.highend3d.com
heruntergeladen werden. Weitere Auswahlkriterien waren Aktualität (letzte
Version nicht älter als aus 2006) und Anzahl der Downloads (mindestens
10.000). Die einzelnen Tools sind in ihrer Funktionsweise relativ unterschiedlich. Dabei erfolgt ein Vergleich hinsichtlich Workflow des Tools und hinsichtlich der zur Verfügung gestellten Funktionen und erfüllten Anforderungen für
ein Character Setup. Diese Funktionen und Anforderungen werden wiederum
in die Kategorien Installation, Skelett, Rig und Animation unterteilt (siehe
Tabelle 5.1).
3.2
createFBIK_skeleton
Aktuelle Version: V1.6.3
Skriptsprache: Mel
Downloads per 07.07.2008: 10.597
Autor: mononoke
Dieses Tool (siehe Abbildung 3.1) ermöglicht rasch und einfach ein Skelett
für einen zwei oder vierbeinigen Charakter zu erstellen. Das Skript lässt sich
sehr einfach installieren, indem man das File createFBIK_skeleton.mel in
den Autodesk Maya Skriptordner kopiert ../maya/skripts. Gestartet wird
das Programm dann mit dem Befehl source createFBIK_skeleton. Das Programm muss mittels des Source-Befehls gestartet werden, da die Prozedur
(proc createFBIK_Skeleton()) im Sourcecode nicht mit dem Zusatz global
(global proc createFBIK_Skeleton()) versehen ist.
23
3. Aktuelle Lösungen
24
Abbildung 3.1: createFBIK_skeleton
3.2.1
Workflow
Als erstes wählt man aus ob man einen Zweibeiner oder Vierbeiner erstellen
möchte. Hat man einen Vierbeiner gewählt so, lässt sich noch spezifizieren,
ob dieser Finger oder Hufen hat. Auch kann eine abgespeicherte TemplateCurve geladen werden. In einem nächsten Schritt, falls nicht Quadruped/Hoof
gewählt wurde, lassen sich die Anzahl der Finger und Zehen wählen bzw. ob
diese einen Daumen besitzen. Anschließend kann die TemplateCurve erstellt
werden, welche an das Mesh anzupassen ist. Mittels eines Mirror Buttons
wird ermöglicht Teile der TemplateCurve von links nach rechts oder umgekehrt zu spiegeln. Abschließend kann man noch auswählen, ob man Roll
Joints (Split Joints) an Armen und Beinen haben möchte und ob ein Prefix
bei der Namensgebung hinzugefügt werden soll. Das nun erstellte Skelett ist
einfach und ohne Probleme für Autodesk Maya Full Body IK und MotionBuilder verwendbar, da die Naming Conventions eingehalten wurden (siehe
Abschnitt 2.3.1).
Es lässt sich mit Hilfe dieses Tools sehr rasch und einfach ein Skelett erstellen(siehe Abbildung 3.2). Auch ist man in der Generierung sehr flexibel,
da eine Reihe von Auswahlmöglichkeiten zur Verfügung steht, wie zum Beispiel: Zweibeiner, Vierbeiner, Fingeranzahl, Zehenanzahl, Hufen, Roll Joints.
Ein weiterer Vorteil besteht darin, dass sich auch asymmetrische Charaktere
erstellen lassen. Die erstellten TemplateCurves lassen sich abspeichern und
wieder laden. Im Vergleich zu dRiggingTool beinhaltet dieses Tool im Bereich der Skelettgenerierung sicher mehr Flexibilität. Jedoch handelt es sich
hierbei um ein reines Tool zur Skeletterzeugung. Die Generierung eines Rigs
wird nicht geboten.
3. Aktuelle Lösungen
25
Abbildung 3.2: mittels createFBIK_Skeleton erstellte Skelette.
Abbildung 3.3: Rig-o-matic
3.3
Rig-o-matic
Aktuelle Version: V4.2.0
Skriptsprache: Mel
Downloads per 07.07.2008: 12.066
Autor: Jason Baskin
Dieses Tool ermöglicht es, ein Rig für ein vorher erstelltes Skelett eines Zweibeiners zu erstellen (siehe Abbildung 3.3). Die Installation geschieht indem
das Skript rigomatic.mel in den Skriptordner kopiert wird. Gestartet wird
das Programm, indem rigomatic in die Autodesk Maya Mel Command Line
eingegeben wird.
3. Aktuelle Lösungen
26
Abbildung 3.4: Auswahl der Leg Joints.
3.3.1
Workflow
In einem ersten Schritt ist ein Skelett selbst bzw. mit einem anderen Tool
zu erstellen, wobei ein Beispielskelett heruntergeladen werden kann. Dieses
Skelett besteht nur aus der linken Seite. Zur Generierung des Rigs müssen
dann die jeweiligen Joints des Teilrigs selektiert werden (siehe Abbildung
3.4). Dies erfolgt am Besten im Hypergraph: Hierarchy Window. Wahlweise
kann auch noch ein Name als Prefix eingegeben werden bzw. lässt sich auch
automatisch ein Character Set erstellen.
Der Hauptnachteil bei diesem Tool liegt darin, dass die Skelettgenerierung nicht unterstützt wird. Die Joints müssen natürlich in ihrer Anzahl,
Aufbau und Orientierung gewissen Anforderungen entsprechen. Dies zu erfüllen ist Aufgabe des Benutzers und wird nicht vom Tool übernommen. Das
Rig ermöglicht stretchy IK und FK Arme und Beine sowie einen stretchy
Torso. Es besteht die Möglichkeit einen IK oder FK Schwanz zu riggen und
auch ein Controller für die Augen wird zur Verfügung gestellt.
3.4
abAutoRig
Aktuelle Version: V2.2.3
Skriptsprache: Mel
Downloads per 07.07.2008: 11.990
Autor: Brendan Ross
Mit Hilfe dieses Tools (siehe Abbildung 3.5) kann der Benutzer schnell und
einfach ein Skelett und Rig für einen zweibeinigen Charakter erzeugen. Zur
Installation muss das File abAutoRig.mel in das Skriptverzeichnis kopiert
werden und kann dann einfach aufgerufen werden. Zusätzlich stehen auch
3. Aktuelle Lösungen
27
Abbildung 3.5: abAutoRig
Icons zur Installation zur Verfügung. Dieses Tool wurde für dRiggingTool als
Framework verwendet, wobei ein eigenes Rig und Interface erstellt wurde.
3.4.1
Workflow
Am Beginn des Workflows ist der Name für den Charakter einzugeben. Dieser
wird dann als Prefix für die Namensgebung verwendet. Nun kann daran
gegangen werden ein Skelett zu erstellen.
In einem ersten Schritt wird die Fingeranzahl eingegeben und ein Proxy
erstellt(siehe Abbildung 3.6). Das Proxy Skelett ist an das Mesh anzupassen,
wobei die rechte Seite gespiegelt wird. Es besteht auch die Möglichkeit dieses abzuspeichern. Bevor man das Skelett erzeugt, kann man noch ein oder
zwei Split Joints für die Oberschenkel bzw. Ober- und Unterarme eingeben.
Ist das Skelett erstellt, so lassen sich einzelne Teilrigs für Spine, Head/Neck,
Legs/Feet, Arms und Hands erstellen. Das Rig verfügt über alle Anforderungen, die man an ein Standardrig stellt zuzüglich stretchy IK und FK Arme
und Beine und einen stretchy Torso. Weiters verfügt diese Applikation über
eine Reihe weiterer Tools wie zum Beispiel
• einem Wire Replacer mit dem sich die Control Curves anpassen lassen;
• einem Rig Remover mit dem sich Teile des Rigs wieder entfernen lassen;
• ein Joint Orient Rotation Tool mit dem sich die Orientierung der Joints
im Nachhinein noch ändern lässt;
• Stretchy Spline from Curve, ermöglicht eine dehnbare IK Spline JointKette zu erzeugen;
3. Aktuelle Lösungen
28
Abbildung 3.6: Proxy mit abSkeletonMaker.
• Funktion, um den Charakter bzw. die ausgewählte Control Curve wieder in die Ausgangsposition zurückzubewegen.
Die Nachteile dieses Tools bestehen darin, dass keine Möglichkeit besteht
automatisch ein Character Set zu erzeugen und auch das Skin Binding an
die IK Spline Joints erfolgt nicht automatisch, indem man das Mesh und den
Root Joint des Skeletts selektiert und so das Mesh and das Skelett aneinander
bindet.
3.5
Advanced Skeleton
Aktuelle Version: V2.0.0
Skriptsprache: Mel
Downloads per 07.07.2008: 80.634
Autor: Oyvind Nostdal
Bei Advanced Skeleton handelt es sich um das umfangreichste der dargestellten Tools (siehe Abbildung 3.7). Advanced Skeleton ist eine Sammlung von
Tools für ein komplettes Character Setup. Die Installation erfolgt über ein
eigenes Setup Programm. Man bekommt ein eigenes Shelf Tab, in welchem
dann die Icons für die einzelnen Tools für das Character Setup enthalten
sind.
3.5.1
Workflow
Advanced Skeleton besteht aus folgenden Tools:
• Fit Tool: Erzeugt ein FitSkeleton für zwei oder vierbeinige Charaktere
es können auch abgespeicherte FitSkeletons hinzugefügt werden. Die-
3. Aktuelle Lösungen
29
Abbildung 3.7: Überführung des FitSkeletons in ein AdvancedSkeleton.
ses Skelett ist dann an das Mesh anzupassen. Bei diesem FitSkeleton
handelt es sich jedoch um ein Skelett mit Joints. Das Skelett besteht
aus der rechten Seite, die linke Seite wird gespiegelt.
• Advanced Skeleton: Wandelt das FitSkeleton in ein AdvancedSkeleton
um. Unter AdvancedSkeleton wird dabei das Rig verstanden. Hierzu
ist nur der Root Joint des FitSkeletons zu selektieren und der Shelf
Button zu betätigen.
• Utilities: Ist eine Set mehrerer Werkzeuge
– Rebuild: Ermöglicht den Schritt zurück zum FitSkeleton, um dieses im Nachhinein nochmals anzupassen und dann wieder in ein
AdvancedSkeleton umzuwandeln.
– Skinning:
∗ Zurückgehen in die Ausgangspose.
∗ Selektion der Joints an die die Geometrie gebunden wird.
∗ Selektion der Control Curves.
– Locking: Joints selectable oder unselectable machen.
– Boxes: Erzeugt Boxes um die Joints.
– Character Set : Dient zum Erstellen eines Character Sets.
– ControlCurves:
∗ Spiegeln der Control Curves
∗ Anpassen der Größe der Control Curves
– Limit Joints: Ermöglicht das Einschränken der Rotationsfähigkeit
von Knie und Ellbogen.
3. Aktuelle Lösungen
30
Abbildung 3.8: Mit Hilfe von Selector:biped ist eine Auswahl der Kontrollobjekte möglich.
– Baking: Zum Baken der Animation.
– Display: Dient zum Einstellen der Jointgröße.
• SelectorDesigner : Ermöglicht das Erstellen eines Interfaces für die Selektion der Controller (Kann auch ohne Advanced Skeleton verwendet
werden)
• PoserDesigner : Dient zum speichern von Posen bzw. Animations Clips.
• Help: Hilfe zu Advanced Skeleton, welche auch offline verfügbar ist.
• Selector:biped: Musterinterface zur Selektion der Control Curves eines
zweibeinigen Charakters (siehe Abbildung 3.8).
Mit Advanced Skeleton steht dem Benutzer ein sehr umfangreiches Tool
zur Verfügung. Das Rig erfüllt im Prinzip alle nötigen Anforderungen an ein
Standardrig. Stretchy IK Arme und Beine, IK/FK Blending für Arme und
Beine. Einzigartig bei diesem Rig ist auch das IK/FK Blending der Wirbelsäule, das heißt das Rig besteht aus einer IK und aus einer FK Wirbelsäule
zwischen der geblendet werden kann. Die IK Wirbelsäule kann auch noch
gedehnt werden. Anzumerken ist, das beim IK/FK Blending die Control
Curves nicht entsprechend ein bzw. ausgeblendet werden. Es besteht nur die
Möglichkeit die IK Visibility bzw. FK Visibility als gesamtes ein- oder auszuschalten das heißt die Joints der IK bzw. FK Jointketten sind ebenfalls
sichtbar bzw. unsichtbar. Dies macht dann das Ganze vielleicht etwas unübersichtlich. Auch wären mehr Bewegungsmöglichkeiten für die Finger und
Füße wünschenswert.
In Verbindung mit den restlichen Tools stellt diese Applikation sicher
eine sehr gute Gesamtlösung dar. Dies wird auch durch die Anzahl der Dow-
3. Aktuelle Lösungen
31
nloads (über 80.000) augenscheinlich. Als Nachteil kann gesehen werden,
dass das Skelett direkt an das Mesh anzupassen ist. Es stehen daher keine
Gruppen- bzw. Worldcontroller zum Translieren, Rotieren und Skalieren zur
Verfügung. Jeder einzelne Joint muss an das Mesh angepasst werden. Man
ist dadurch nicht so flexibel bei der Erstellung von Charakteren mit variabler Fingeranzahl. Bei weniger als fünf Fingern müssen diese direkt aus dem
Skelett entfernt werden.
Kapitel 4
Automatisierung des
Rigging-Prozesses
4.1
Allgemeines
Um Prozesse in Autodesk Maya zu automatisieren gibt es drei Möglichkeiten.
• C++ Application Programming Interface
• Mel
• Python
Die Entwicklung mittels C++ erfordert einen hohen Grad an Programmierkenntnissen. Mit Hilfe von C++ können eigene benutzerdefinierte Nodes
für Autodesk Maya erstellt werden. Auch lassen sich hiermit benutzerdefinierte Mel bzw. Python-Befehle schreiben. C++ wird man für Aufgaben bei
denen Geschwindigkeit eine große Rolle spielt einsetzen. Ein beispielhafter
Anwendungsfall wäre hier ein Skinning-Algorithmus (siehe Abschnitt 6.3)
oder andere rechenintensive Aufgaben. Die Umsetzung mittels Mel oder Python wäre in diesem Fall zu langsam, da diese Sprachen interpretiert und
nicht compiliert werden [16, Kap. 1]. Ein weiterer wichtiger Aspekt, den
man sich vor Augen halten sollte ist die Plattformunabhängigkeit. Programme welche mittels Mel oder Python geschrieben werden sind plattformunabhängig. Da es sich bei Mel und Python um Skriptsprachen handelt, ist es
damit einfacher sich auf die Animationsaufgabe, welche automatisiert werden
soll zu konzentrieren, als sich mit software- und speichertechnischen Details
auseinandersetzen zu müssen. Mel oder Python sind für die Erstellung von
Benutzeroberflächen besser geeignet, da auch bei der Bedienung von Autodesk Maya über das GUI Mel-Befehle abgesetzt werden. Die Erstellung
eines C++ Plugins ist von Bedeuten, wenn der Quellcode nicht frei zugänglich sein darf. Der Quellcode von Mel bzw. Python Programmen, welche im
Skript Verzeichnis von Autodesk Maya abgelegt werden, ist frei zugänglich
32
4. Automatisierung des Rigging-Prozesses
33
und einsehbar. Da dies aber einen zusätzlichen Lerneffekt für interessierte
Benutzer von dRiggingTool hat, stellt dies kein Problem dar, sondern ist sogar im Sinne des Autors. Diese Aspekte berücksichtigend zeigt sich, dass für
die erforderlichen Aufgaben bei der Erstellung eines Rigging-Tools Mel oder
Python auf jeden Fall die bessere Wahl sind.
4.2
dRiggingTool
Bei dRiggingTool handelt es sich um ein in Python realisiertes Skript, zum
automatisierten und somit schnelleren Character-Rigging mit Autodesk Maya. Das Skript funktioniert im Prinzip in drei Schritten. Zunächst wird ein
Pre-Skelett an die Proportionen des zu riggenden 3D Character Meshs angepasst. Als nächstes wird aus dem Pre-Skelett, welches die Positionen der
Joints definiert, ein Skelett aus Joints erzeugt. Die Joints des Skeletts folgen einer bestimmten Hierarchie und Namenskonvention. In einem dritten
Schritt passen sich die Kontrollobjekte für Inverse und Forward Kinematik,
an die richtig skalierten Knochen automatisch an und es wird das eigentliche
Rig erstellt (vgl. Abschnitt 4.2.4).
In der Anfangsphase des Projektes wurde zur Implementierung Mel verwendet. Es hat sich jedoch bald herausgestellt, dass die Applikation sehr
umfangreich wird, und so eine objektorientierte Lösung zu bevorzugen ist.
Im nächsten Abschnitt erfolgt eine Gegenüberstellung zwischen Mel und Python und es wird auch eine Begründung zur Auswahl von Python geliefert.
4.2.1
Python vs. Mel
Bei Mel (Maya Embedded Language) handelt es sich um eine prozedurale Programmiersprache. Das heißt, Teilaufgaben einer Applikation lassen sich in
Prozeduren zusammenfassen. Dies genügt für kleinere überschaubare Aufgaben. Bei einer Applikation wie dRiggingTool, welche eine Reihe von Aufgaben
zu erfüllen hat, ist es von Vorteil einen objektorientierten Ansatz zu wählen.
Durch die Aufteilung der Aufgabe in mehrere Objekte bzw. Klassen ist es
besser möglich den Programmcode zu modularisieren. Modularisierte Quelltexte sind in vielen Fällen leichter zu warten und können bedarfsgerecht in
mehreren Projekten verwendet werden, was die Wiederverwendbarkeit fördert, ohne den Verwaltungsaufwand zu erhöhen [26].
Im Gegensatz zu Mel ist Python eine objektorientierte Skriptsprache. Somit lassen sich mit ihr die Vorteile dieses Programmieransatzes nützen. Dies
trägt auf jeden Fall zur Strukturiertheit, Übersichtlichkeit und Erweiterbarkeit der Applikation aus Sicht des Programmierers bei. Für den Anwender
hingegen ergeben sich außer vielleicht bei der Installation keine großen Unterschiede. Ein sehr guter Überblick und Einstieg in Python wird in [20]
gegeben. Ein weiterer Vorteil von Python ist, dass diese Skriptsprache nicht
4. Automatisierung des Rigging-Prozesses
34
Programm 4.1: Beispiel für ein Programm in Mel.
1
2
3
4
5
6
7
8
// create a 3-joint chain
//
select -d;
joint -p 0 0 0 ;
joint -p 0 4 0 ;
joint -e -zso -oj xyz joint1;
joint -p 0 8 -1 ;
joint -e -zso -oj xyz joint2;
wie Mel an Autodesk Maya gebunden ist, sondern auch in anderen Programmen der Animationspipeline, wie zum Beispiel in Autodesk MotionBuilder,
zur Anwendung kommt. Weiters verfügt Python mit PythonWin über eine
sehr gute Programmierumgebung.
In Python müssen Skripts explizit importiert werden, um diese mittels
der Commandline oder eines Shelf-Buttons in Autodesk Maya, zu starten.
Mit Hilfe der Programmzeile
from dRiggingTool import *
in der Datei userSetup.py, welche sich im Skriptverzeichnis von Autodesk Maya befinden muss, wird die Applikation dRiggingTool importiert und
kann mittels Command-Line gestartet werden. In Mel müssen die Skripts im
Skriptverzeichnis nicht explizit importiert werden, sondern können falls sie
mit dem Zusatz global versehen sind via Command-Line gestartet werden.
Fehlt dieser Zusatz, so müssen diese mittels des Zusatzes source gestartet
werden.
source createFBIK_skeleton;
Nun soll der Unterschied zwischen einem Autodesk Maya Befehl in Mel
und Python etwas genauer untersucht werden. Im folgenden kurzen Programm wird eine Jointkette mit drei Joints erzeugt. Programm 4.1 zeigt dies
mittels Mel und Programm 4.2 mittels Python.
Die größten Unterschiede bestehen darin, dass in Python die Autodesk
Maya Befehle importiert werden müssen (siehe Programm 4.2, Zeile 1) und
die einzelnen Parameter eines Befehls durch Klammern und Beistriche getrennt sind, was auf jeden Fall zu einer besseren Lesbarkeit des Befehls beiträgt. Strings werden in Anführungszeichen geschrieben und Parameter, welche einen Boolean Wert benötigen wird True oder False zugewiesen (siehe
Programm 4.2, Zeile 7 bzw. 9). Die Bezeichnungen der erstellten Objekte
wie joint1 oder joint2 werden in Python am Beginn der Parameterliste geschrieben in Mel am Ende der Liste.
4. Automatisierung des Rigging-Prozesses
35
Programm 4.2: Beispiel für ein Programm in Python.
1
2
3
4
5
6
7
8
9
#import maya.cmds as cmds
# Create a 3-joint chain
cmds.select( d=True )
cmds.joint( p=(0, 0, 0) )
cmds.joint( p=(0, 4, 0) )
cmds.joint( 'joint1', e=True, zso=True, oj='xyz' )
cmds.joint( p=(0, 8, -1) )
cmds.joint( 'joint2', e=True, zso=True, oj='xyz' )
Ein großer Nachteil von Python ist, dass viele Autodesk Maya Befehle nur
in Mel realisiert sind, wie zum Beispiel stringToStringArray. Dieser Befehl
macht aus einem String ein String-Array, wobei ein Seperation-Character als
Teiler fungiert. In Mel würde der Programmcode folgendermaßen aussehen:
1 $subStr= "spine_end_loc>lf_clavicle_loc>lf_upArm_loc>lf_elbow_loc>
lf_wrist_loc";
2 $aSub = stringToStringArray($subStr, ">");
Um solche Befehle mittels Python zu realisieren gibt es nun zwei Möglichkeiten:
• Man implementiert sich den Befehl in Python selbst, oder
• man verwendet den Befehl eval, mit welchem man Mel-Befehle in Python ausführen kann, und übergibt diesen einen String der den Befehl
in Mel enthält.
1 aSub = mm.eval("stringToStringArray(\""+subStr+"\", \">\");")
Bei komplexeren Befehlen kann dies sehr schnell etwas unübersichtlich
werden. Trotz Rücksichtnahme dieser Tatsachen ist für die Implementierung
von dRiggingTool die Entscheidung auf Python gefallen. Auch deshalb, weil
bislang noch wenig Skripts mittels Python realisiert wurden und daher neue
Erkenntnisse gewonnen werden konnten. Für die Implementierung größerer
Projekte ist Python sicher besser geeignet. Man muss jedoch beachten, dass
zum aktuellen Zeitpunkt diverse Autodesk Maya Befehle in Python noch
nicht direkt verfügbar sind.
4.2.2
Architektur
dRiggingTool besteht aus folgenden Dateien bzw. Verzeichnissen:
4. Automatisierung des Rigging-Prozesses
36
• userSetup.py:
– Fügt das Verzeichnis dRiggingTool zu den Systempfaden ../maya/scripts und ../maya/2008/scripts hinzu. Dadurch kann dRiggingTool aus beiden Skriptverzeichnissen gestartet werden.
– Die Datei dRiggingTool wird importiert.
• dRTRestore.mel : Stellt ein via Shelf-Button abgespeichertes Pre-Skelett
wieder her. Hierbei handelt es sich um ein Mel-Skript, da der Befehl
textToShelf nur in Mel existiert. Dieser Befehl ermöglicht es Text in
einen Shelf-Button zu speichern um diesen dann als Mel-Skript aufzurufen.
• dRiggingTool Verzeichnis:
– readme.txt : Hier sind allgemeine Informationen und die Installationsanleitung enthalten.
– help.html: Hilfe von dRiggingTool in html-Format.
– dRiggingTool.py: Enthält die Prozeduren zum Starten von dRiggingTool mit bzw. ohne Parameterliste. Zum Wiederherstellen
eines abgespeicherten Pre-Skelettes via Shelf-Button wird dRiggingTool mit dessen Parameterliste gestartet.
– dRTMainUI.py (Klasse):
∗ Verantwortlich für die Erstellung der Benutzeroberfläche zur
Erstellung eines Rigs für einen Zweibeiner.
∗ Enthält globale Variablen, welche in allen Klassen zur Anwendung kommen.
∗ Befehle zur Verwaltung der Benutzeroberfläche bzw. der Charaktere.
∗ Befehle zur Steuerung der Menüführung.
– dRTStructure.py (Klasse): Enthält Befehle bzw. angepasste Befehle für häufig wiederkehrende Aufgaben.
∗
∗
∗
∗
∗
∗
Parenting
Erstellen von Locator, Orient und Point Constraints.
Stringoperationen
Namensgebung
Erstellen von Kontrollobjekten aus Nurbs-Kurven.
Etc.
– dRTPreSkeleton.py (Klasse):
∗ Beinhaltet die Datenstruktur zur Generierung des Pre-Skeletts.
∗ Prozedur zum Überführen der Datenstruktur in ein Pre-Skelett
bestehend aus Locator, Gruppenlocator und einem WorldController.
4. Automatisierung des Rigging-Prozesses
37
∗ Prozedur zum Überführen eines Pre-Skeletts in eine Datenstruktur. Dieser Befehl ist nötig um ein an ein Mesh angepasstes Pre-Skelett abspeichern zu können.
∗ Prozedur zum Speichern des Pre-Skeletts.
∗ Prozedur zum Verbinden der Locator des Pre-Skeletts.
∗ Prozedur zum Spiegeln der Locator.
– dRTSkeleton.py (Klasse):
∗ Erstellung eines Skeletts aus dem angepassten Pre-Skelett,
welches einer genau definierten Hierarchie und Namensgebung folgt.
∗ Befehl um die Namensgebung der Joints an die Autodesk
MotionBuilder Konvention anzugleichen.
– dRTRig.py (Klasse): Enthält die Prozeduren zur Erstellung der
Rigs für Beine, Torso, Kopf, Arme und Hände.
– dRTRiggingTools.py: Enthält Prozeduren zur Unterstützung bei
der Erstellung eines Character-Setups und zur Animationsvorbereitung.
∗
∗
∗
∗
∗
∗
∗
Erstellung von IK-Handles.
Erstellung von FK-Controls.
Erstellung von Pole Vector Controls.
Funktion für Squash and Stretch.
Funktion zum Löschen von Teil-Rigs.
Funktion zur Erstellung eines Character-Sets.
Etc.
Abbildung 4.1 zeigt die Klassenstruktur von dRiggingTool in Form eines
Entity-Relationship Diagramms.
4.2.3
Programmieren in Python
Um die Programmierweise in Python besser zu verstehen, wird im folgenden
Abschnitt ein Algorithmus zum Durchwandern der Skelettstruktur dargestellt. Mithilfe der im Programm 4.3 dargestellten Prozedur kann die Namensgebung der Joints in die Autodesk MotionBuilder Konvention umgewandelt werden (siehe Abschnitt 2.3.1). Variablen müssen in Python vor ihrer Verwendung nicht definiert werden. Schleifen und Verzweigungen werden
mittels Tabulatoreinrückungen strukturiert.
In Zeile eins wird die Prozedur definiert und in Zeile fünf wird der Variablen name der Name des Charakters zugewiesen. Der Name des Charakters ist in einer globalen Variablen der Klasse dRTMainUI abgespeichert. In
Zeile sechs erfolgt eine Abfrage, ob bereits ein Skelett existiert. Zeile 10 definiert die Hierarchie des Skeletts. Bei aJntConnections handelt es sich um ein
4. Automatisierung des Rigging-Prozesses
1 : 0..1
dRT MainUI
38
1:1
dRTPreSkeleton
1 : 0..1
dRTSkeleton
1:1
dRTStructure
1:0
1 : 0..1
dRTRig
1:1
dRTRiggingTools
1:0
Abbildung 4.1: Klassenstruktur von dRiggingTool.
String-Array, welches die Namen der Joints für die einzelnen Joint-Ketten
enthält. Jeder String des Arrays definiert eine solche Joint-Kette. Durch das
Zeichen „>“ werden die Namen der Joints in der Kette getrennt. Der erste
Joint ist dabei immer der Wurzelknoten. Die Schleife in Zeile 24 durchläuft
die einzelnen Joint-Ketten. Mittels des Befehls stringToStringArray wird der
Joint-Ketten String in ein Array, welches die Namen der Joints dieser Kette
enthält überführt. Dies geschieht in Zeile 25. Die ersten Einträge dieses Arrays müssen bei allen außer der ersten Kette (Root-Joint) gelöscht werden,
da diese nur zur Unterstützung dienen (siehe Zeile 27 und 29). Die Schleife
in Zeile 31 durchläuft nun dieses Array aSub. Die Variable jnt enthält den
Namen des Joints. In den Zeilen 33 bis 38 wird das Pre- und Postfix im
Namen entfernt. Zum Beispiel aus lf_elbow_jnt wird elbow. Zeile 39 enthält
die Prozedur zum Konvertieren des Joint-Namens. Dieser wird der Name
des Charakters, das Prefix und der ursprüngliche Name des Joints als Parameter mitgegeben. So wird zum Beispiel der Joint für den Ellbogen mit
der Bezeichnung myCharacter_lf_elbow_jnt in myCharacter_LeftForeArm
umbenannt.
4.2.4
Workflow
Bei dRiggingTool handelt es sich um ein Tool zum schnellen und einfachen
Riggen eines humanoiden 3D Charakters. Der Workflow funktioniert im Prinzip in drei Arbeitsschritten. Startet man das Tool so bekommt man ein Fenster zur Erstellung des Pre-Skeletts (siehe Abbildung 4.2). Hier lässt sich der
Name des Charakters festsetzen, welcher für alle Bestandteile als Prefix verwendet wird. Dies trägt zur besseren Übersichtlichkeit und einfacheren Iden-
4. Automatisierung des Rigging-Prozesses
39
Programm 4.3: Beispiel einer Prozedur in Python.
1 def dRTConvertSkeletonNamingConvention(self):
2
# converts skeleton naming convention to a specific convention
3
4
5
name = self.dRTMainUI.dRTGlobals["name"]
6
if not(mc.objExists(name+"_skeleton_grp")):
7
mm.eval("warning \"You need to create a skeleton first.\"")
8
return
9
10
aJntConnections = ("root_jnt>hip_jnt>spine_low_jnt>spine_mid_jnt>
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
spine_hi_jnt>spine_end_jnt>neck_jnt>head_a_jnt>head_b_jnt",
"head_a_jnt>lf_eye_jnt",
"spine_end_jnt>lf_clavicle_jnt>lf_upArm_jnt>
lf_elbow_jnt>lf_foreArmSplit1_jnt>lf_wrist_jnt>
lf_hand_jnt",
"lf_hand_jnt>lf_thumb_a_jnt>lf_thumb_b_jnt>
lf_thumb_c_jnt>lf_thumb_d_jnt",
"lf_hand_jnt>lf_index_a_jnt>lf_index_b_jnt>
lf_index_c_jnt>lf_index_d_jnt",
"lf_hand_jnt>lf_middle_a_jnt>lf_middle_b_jnt>
lf_middle_c_jnt>lf_middle_d_jnt",
"lf_hand_jnt>lf_ringCup_jnt>lf_ring_a_jnt>
lf_ring_b_jnt>lf_ring_c_jnt>lf_ring_d_jnt",
"lf_hand_jnt>lf_pinkyCup_jnt>lf_pinky_a_jnt>
lf_pinky_b_jnt>lf_pinky_c_jnt>lf_pinky_d_jnt",
"hip_jnt>lf_upLeg_jnt>lf_knee_jnt>lf_ankle_jnt>
lf_ball_jnt>lf_toe_jnt"
)
skelGrp = name+"_skeleton_grp"
i=0
for subStr in aJntConnections:
aSub = mm.eval("stringToStringArray(\""+subStr+"\", \">\")")
if (i>0):
#remove the first item from all but the first subArray
because it already exists, and we want to parent the
rest of the joints in aSub under it.
aSub = aSub[1:]
for jnt in aSub:
baseName = jnt
if jnt.startswith("lf"):
prefix = "l"
baseName = baseName[3:]
else:
prefix = ""
baseName = baseName[0:-4]
self.dRTRenameMotionBuilder(name,prefix,baseName)
i=i+1
4. Automatisierung des Rigging-Prozesses
40
Abbildung 4.2: Benutzeroberfläche zur Erzeugung des Pre-Skeletons.
tifizierung bei, was vor allem bei größeren Szenen von großer Bedeutung ist.
In diesem Schritt sind auch noch die Positionierung der Handflächen, ob diese zum Beispiel nach vorne oder unten schauen sollen und die Anzahl der
Finger festzulegen.
Es lässt sich nun per Knopfdruck ein Pre-Skelett erzeugen, welches aus
Locator und Gruppen-Locator besteht. Das Pre-Skelett entspricht in der
Struktur dem hierarchischen Aufbau des zu erstellenden Skeletts. Die Locator können nun an das Mesh angepasst werden. Die Position der Locator
bestimmt die Position der Joints im Skelett. Mittels der Gruppen-Locator
lassen sich auch mehrere Locator translieren, rotieren und skalieren (siehe
Abbildung 4.3). Veränderungen der linken Seite werden automatisch auf die
rechte Seite gespiegelt. Ein World-Locator dient zur Skalierung des gesamten
Pre-Skeletts.
Ist das Pre-Skelett fertig an das 3D Character Mesh angepasst, so kann
dieses in ein Skelett, bestehend aus Joints, überführt werden. Vorher besteht noch die Möglichkeit das Pre-Skelett abzuspeichern, um wenn nötig, in
der Pipeline wieder einen Schritt zurückgehen zu können, bzw. um es später
nochmals verwenden zu können. In einem letzten Schritt wird für das Skelett
ein Rig erzeugt. Es besteht dabei die Möglichkeit das Rig als Ganzes zu erzeugen oder die einzelnen Teil-Rigs für Beine, Torso, Kopf, Arme und Hände
nacheinander zu erstellen. Das mittels dRiggingTool erstellte Rig entspricht
folgenden Anforderungen:
• Einheitliche Namenskonvention bei der Benennung der Joints (siehe
Abschnitt 2.3.1).
• Ausrichtung der Joints nach den Child-Joints (siehe Abschnitt 2.3.2).
• Die Positionierung der Joints wird so vorgenommen, dass eine optimale
Funktion der Pole Vector Constraints gewährleistet ist (siehe Abschnitt
2.3.3).
4. Automatisierung des Rigging-Prozesses
41
Abbildung 4.3: Anpassen der Locator des Pre-Skeletts an das Mesh.
• Die Spiegelung der Arme und Beine erfolgt derart, dass Animationen
der Original-Joints auf die gespiegelten Joints kopiert werden können
(siehe Abschnitt 2.3.4).
• Trennung von Skelett und Rig-Elementen in eigene Gruppen (siehe
Abschnitt 2.4).
• Nurbs-Kurven als Kontrollobjekte mit entsprechender Farbkennung
(siehe Abschnitt 2.4.3).
• Klassischer Inverse und Forward Kinematik Switch für Arme und Beine
(siehe Abschnitt 2.4.4).
• Squash and Stretch für Arme und Beine (siehe Abschnitt 2.4.9).
• Reverse Foot Control, No Flip Knee und Auto-Forearm Twist (siehe
Abschnitte 2.4.5, 2.4.6 und 2.4.7).
• Inverse Kinematik Wirbelsäule mittels IK Spline Handle (siehe Abschnitt 2.4.8).
• Funktionen zur Steuerung der Finger.
Einzelne Teile des Rigs können, wenn nötig, wieder entfernt werden. Zur Unterstützung der Animationsvorbereitung kann automatisch ein Character-Set
erstellt und eine Umbenennung der Joints in die Autodesk MotionBuilder
Namenskonvention vorgenommen werden. Zur besseren Erklärung der einzelnen Funktionen ist auch eine Offline-Hilfe verfügbar.
Kapitel 5
Evaluierung von dRiggingTool
5.1
Allgemeines
Bei der Entwicklung von dRiggingTool hat ständiges Testen eine große Rolle gespielt. Vor allem in der Endphase des Entwicklungsprozesses war es
wichtig aussagekräftige Testdaten zu gewinnen. Darüberhinaus war es eines
der Hauptziele des Projekts zu evaluieren, ob das erstellte Tool die nötige Akzeptanz bei den Benutzern findet. Auch sollte ergründet werden, wie
der Benutzer mit der Benutzeroberfläche und der Skelettgenerierung zurecht
kommt, inwieweit das erstellte Rig den Anforderungen entspricht und ob
noch Fehler vorhanden sind die übersehen wurden. Ein wichtiger Punkt waren Verbesserungsvorschläge von Seiten des Benutzers. Um das Tool beurteilen zu können war es wichtig, dass die Testpersonen damit arbeiten, um
es anschließend besser bewerten zu können.
Bei der Erstellung eins Fragebogens sind mehrere Punkte zu erfüllen [23].
Wichtig ist es zu Beginn die Ziele und Erwartungen, welche an die Analyse
gestellt werden festzulegen. Ziel des Fragebogens war die Evaluierung der Effizienz des Programms und der Zufriedenheit der Tester mit den Funktionen
und der Benutzerfreundlichkeit. Bei der Evaluierung der Effizienz des Programms war wichtig zu erfahren, wie die Benutzer mit der Erstellung bzw.
Anpassung des Pre-Skeletts zurechtkommen. Dies war bedeutsam, da diese Aufgabe noch manuell vom Benutzer erfüllt werden muss. Beim zweiten
Ziel, der Untersuchung der Benutzerfreundlichkeit, war es von Bedeutung,
Erkenntnisse über die Intuitivität der Benutzeroberfläche zu gewinnen. In
einem zweiten Schritt galt es die Testgruppe festzulegen. Als Testpersonen
kamen nur Personen in Frage welche eine gewisse Erfahrung im Umgang mit
Autodesk Maya haben. Auch sollten sie Grundkenntnisse in der Animation
und im Riggen von 3D Charakteren aufweisen können. Aus diesem Grund
stand es nahe als Testgruppe die Studenten der Lehrveranstaltung Animation II zu wählen, da jene diese Anforderungen am besten erfüllten.
Der Fragebogen besteht aus 5 Aufgabenstellungen und 36 Fragen, wovon
42
5. Evaluierung von dRiggingTool
43
26 geschlossene Fragen und 10 offene Fragen sind. Bei geschlossenen Fragen
sind die Antwortmöglichkeiten begrenzt und sie eignen sich gut für statistische Auswertungen. Als offene Fragen werden solche Fragen bezeichnet, die
dem Gegenüber eine freie Assoziation innerhalb seiner Antwort erlauben. Sie
begrenzen den Gesprächspartner nicht, sondern fordern ihn auf, sich inhaltlich oder persönlich zu beteiligen [14]. Diese Art der Befragung wurde vor
allem dort verwendet, wo es galt Verbesserungsvorschläge und persönliche
Meinungen von der Testperson einzuholen. Keiner der Testpersonen war in
irgendeiner Weise an der Entwicklung des Tools beteiligt bzw. persönlich
Bekannter, was dazu hätte führen können, das das Tool aus Freundlichkeit
besser bewertet wird. Es kann also angenommen werden, dass die Fragen
von den Testpersonen ehrlich beantwortet wurden und so für die Analyse
verwertbar sind.
5.2
Fragebogen
Der Fragebogen zu dRiggingTool gliedert sich in verschiedene Abschnitte.
Allgemeine Fragen, Fragen zur Installation, Skeletterstellung, Rig-Erstellung,
Characterset und MotionBuilder, Verwendung des Rigs, Stärken und Schwächen. Weiters sind zu den meisten Punkten vor den Fragen Aufgaben zu
erledigen, auf die sich dann die Fragen beziehen. Die Abarbeitung identischer Aufgabenstellungen ist vor allem deshalb wichtig, um die Ergebnisse
der Befragung vergleichbar zu machen und damit sich die Testperson schnell
und einfach ein Bild über das Tool machen kann. Die Aufgabenstellungen
sind bewusst einfach gehalten, und sollen den Workflow der Applikation in
einfacher und anschaulicher Weise dem Studenten näher bringen. Ein gewissenhaftes Durcharbeiten des Fragebogens dauert ca. 60 min. Die Befragung der Testpersonen erfolgte am 26.05.2008 im Rahmen einer Animation
II Lehrveranstaltung an der Fachhochschule Hagenberg. Dabei haben 11
Studenten an der Evaluierung des Tools mittels Fragebogen teilgenommen.
5.2.1
Allgemeine Fragen
Am Anfang des Fragebogens wurden einige allgemeine Fragen im Umgang
mit Autodesk Maya gestellt (siehe Abbildung 5.1).
Ein Großteil der Testpersonen haben gute Kenntnisse im Umgang mit
Autodesk Maya und dabei ausreichende Kenntnisse im Riggen und Animieren von 3D Charakteren. Bei der Frage ob Sie bereits ein Python Skript
installiert haben, haben 10 von 11 Personen mit nein geantwortet. Das am
häufigsten außer Autodesk Maya verwendete Programm im Bereich Charakteranimation und Motion Capture ist Autodesk MotionBuilder. Dem wurde
auch dahingehend Rechnung getragen, dass das Tool eine Konvertierung der
Namensgebung der Joints in Hinblick auf Autodesk MotionBuilder ermöglicht. Dies ermöglicht ein automatisches Characterizing des Charakters (siehe
5. Evaluierung von dRiggingTool
10
9
8
7
6
5
4
3
2
1
0
44
9
1
0
1
0
8
7
6
5
4
3
2
1
0
(a)
7
4
0
0
0
(b)
Abbildung 5.1: (a) Wie würden Sie Ihre Kenntnisse im Umgang mit der
3D Software Autodesk Maya einschätzen? (b)Wie sind dabei Ihre Kenntnisse
im Riggen und Animieren von 3D Charakteren?
Abschnitt 2.3.1).
5.2.2
Fragen zur Installation
Bei der Installation hat sich gezeigt, dass diese noch Verbesserungswürdig
ist (siehe Abbildung 5.2). Das Hauptproblem war, dass einige Personen das
Skript nicht wie in der Hilfe beschrieben in den Ordner ../maya/scripts sondern in den Ordner ../maya/2008/scripts kopiert haben. In der aktuellen
Version funktioniert auch dieser Ordner als Skriptordner. Ein zweites Problem war, dass viele Studenten nicht gewusst haben wie man die Python
Commandline aktiviert. Eine Beschreibung dessen ist nun in der Hilfe gegeben. Damit sollte in Zukunft die Installation eines Python-Skripts für einen
Benutzer von Autodesk Maya klar sein.
5.2.3
Fragen zur Skeletterstellung
Ein Großteil der Studenten hat das Pre-Skelett sowie die Benutzeroberfläche
zur Erstellung des Skeletts bzw. Pre-Skeletts als intuitiv bzw. sehr intuitiv
empfunden (siehe Abbildung 5.3). Probleme ergaben sich dahingehend, dass
bei einer Person beim Starten des Tools die Fenstergröße zu klein war, womit
nicht alle Einstellungsmöglichkeiten für das Pre-Skelett angezeigt wurden.
Auch hatten einige Studenten Schwierigkeiten bei der Selektion der Gruppenlocator bzw. der darunterliegenden Locator. Dies ist ein Faktor, der durch
den mehrmaligen Gebrauch des Tools zu relativieren ist. Weiters wurde bemängelt, dass eine Reihe von Locator in ihrer Translation, zur problemlosen
Generierung der Pole Vectoren, eingeschränkt sind. In der Hilfe findet sich
5. Evaluierung von dRiggingTool
6
45
6
5
5
4
4
4
4
3
5
5
3
2
2
2
1
0
0
1
1
1
0
0
0
(a)
(b)
Abbildung 5.2: (a) Wie einfach war es für Sie das Tool zu installieren?
(b)Wie hilfreich war Ihnen dabei die Installationsanleitung?
7
6
5
4
3
2
1
0
6
3
2
0
(a)
0
4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
4
4
3
0
0
(b)
Abbildung 5.3: (a) Wie intuitiv haben Sie die Verwendung des Pre-Skeletts
zur Erstellung des Skeletts empfunden? (b)Wie intuitiv haben Sie die Benutzeroberfläche zur Erstellung des Skeletts bzw Pre-Skeletts empfunden?
nun ein Hinweis, dass diese Beschränkung vor Erstellung des Pre-Skeletts
aufgehoben werden kann. Die durchschnittliche Dauer der Anpassung des
Pre-Skeletts an das Mesh dauerte ca. 15 Minuten. Dies ist sicher auch die
aufwändigste Aufgabe, die der Benutzer bei der Verwendung des Tools zu
erledigen hat.
Zwei Personen haben die Justierung der Locator zum Setzen der Joints
als schwer empfunden, wobei eine Person ihre Kenntnisse im Umgang mit
Autodesk Maya als schlecht eingestuft hat(siehe Abbildung 5.4). An dieser
Stelle sei natürlich erwähnt, dass das Tool eine gewisse Erfahrung im Umgang
5. Evaluierung von dRiggingTool
6
5
46
7
5
5
4
4
3
2
6
6
5
3
3
2
2
1
1
0
0
0
1
0
0
0
(a)
(b)
Abbildung 5.4: (a) Wie klar war für Sie die Sinnhaftigkeit der Pre-Skelett
Bestandteile (World-Locator, Group-Locator, Locator)? (b)Wie einfach war
es für Sie die Locator zu justieren?
mit Autodesk Maya bzw. im Setup und der Animation von 3D Charakteren
voraussetzt. Nichtsdestotrotz wäre natürlich eine genauere und bildhafte Beschreibung dieser drei Bestandteile (Word-Locator, Group-Locator, Locator )
des Pre-Skeletts in der Hilfe noch sinnvoll.
Das Ergebnis der Befragung hat gezeigt, dass dem Pre-Skelett im Hinblick
auf die Zeitersparnis und Komplexität im Prozess der Skelettgenerierung eine
sehr große Bedeutung zukommt(siehe Abbildung 5.5). Was die Flexibilität
angeht so empfinden die meisten Testpersonen diese als gegeben bzw. mittelmäßig. Eine Möglichkeit zur Verbesserung der Flexibilität wäre zum Beispiel
eine variable Anzahl von Spine Joints.
5.2.4
Fragen zur Rig-Erstellung
Die Akzeptanz der Benutzeroberfläche für die Erstellung des Rigs stellt sich
als sehr hoch dar. Der Hauptvorteil im Gegensatz zur manuellen Erstellung
ist natürlich die Zeitersparnis. Aber auch die Flexibilität gegenüber der manuellen Erstellung stellt sich in ausreichendem Maße als gegeben dar (siehe
Abbildung 5.6).
3 Studenten haben alternative Produkte zur Generierung eines Rigs gekannt. Bei den Produkten handelt es sich um Xsi Guide Rig, die Arm-, Footund Back-Rigs aus den Bonus-Tools und Anzovin – The Setup Machine. Im
Gegensatz zu Xsi Guid Rig stellt sich die Zeitersparnis als gering und die
Flexibilität als mittelmäßig dar. Gegenüber den Bonustools und Anzovin ist
die Zeitersparnis hoch und die Flexibilität mittel (siehe Abbildung 5.7).
Das Ergebnis der Auswertung des Fragebogens hat gezeigt, dass die Studenten mit dem Funktionsumfang des Tools durchaus zufrieden waren (siehe
5. Evaluierung von dRiggingTool
7
47
6
6
6
5
5
4
4
3
3
2
2
4
1
1
1
1
0
0
0
0
0
0
(a)
9
8
7
6
5
4
3
2
1
0
5
5
(b)
8
3
0
0
0
(c)
Abbildung 5.5: (a) Wie empfinden Sie die Sinnhaftigkeit des Pre-Skeletts
zur Erstellung des Skeletts im Hinblick auf Zeitersparnis? (b) Wie empfinden
Sie die Sinnhaftigkeit des Pre-Skeletts zur Erstellung des Skeletts im Hinblick
auf Flexibilität? (c) Wie empfinden Sie die Sinnhaftigkeit des Pre-Skeletts
zur Erstellung des Skeletts im Hinblick auf Verringerung der Komplexität
des Prozesses der Skelettgenerierung?
Abbildung 5.8). Da mehrfach der Wunsch einer undo-Funktion geäußert wurde, wurde eine Funktion zum Abspeichern des Pre-Skeletts noch nachträglich
hinzugefügt. Womit dem Benutzer die Möglichkeit gegeben wird jederzeit das
erstellte Pre-Skelett abzurufen bzw. im Generierungsprozess zurückzugehen.
5.2.5
Fragen zu Funktionen zur Animationsunterstützung
Die Funktionen zur automatischen Generierung des Character Sets und zur
Konvertierung der Namensgebung der Joints zur weiteren Bearbeitung des
Skeletts in MotionBuilder haben die meisten Testpersonen als zeitsparend
und flexibel empfunden. Die Positionierung dieser Funktionen haben einige
5. Evaluierung von dRiggingTool
7
48
7
6
6
6
5
5
4
6
5
4
3
3
3
2
2
2
1
0
0
0
1
0
0
0
0
(a)
12
(b)
7
10
5
8
4
6
3
4
2
6
6
10
2
2
2
1
0
0
0
1
1
0
0
0
(c)
(d)
Abbildung 5.6: (a) Wie empfinden Sie die Intuitivität der Benutzeroberfläche zur Generierung des Rigs? (b) Wie stellt sich für Sie die Einfachheit
der Erstellung des Rigs dar? (c) Wie stellt sich für Sie die Zeitersparnis im
Gegensatz zur manuellen Erstellung des Rigs dar? (d) Wie stellt sich für Sie
die Flexibilität im Gegensatz zur manuellen Erstellung des Rigs dar?
Studenten als mäßig bzw. schlecht empfunden. Hier wäre zu überlegen, ob
man nicht neben Pre-Skeleton, Skeleton und Rig ein eigenes TabLayout dafür vorsieht, um diese Funktionen über die GUI zugänglich macht. Die Hilfe
wurde von den meisten Testpersonen als hilfreich bis sehr hilfreich angesehen. Lediglich eine Testperson hat sie als wenig hilfreich empfunden. Diese
hat jedoch bei den übrigen Bewertungen sehr positive Angaben gemacht, sodass auch angenommen werden kann, dass jene Testperson ohne deren Hilfe
zurechtgekommen ist (siehe Abbildung 5.9).
5. Evaluierung von dRiggingTool
49
2,5
3,5
2
3
3
2
2,5
1,5
2
1
1,5
1
1
0,5
0
0
0,5
0
0
0
0
0
0
0
(a)
(b)
Abbildung 5.7: (a) Wie stellt sich für Sie die Zeitersparnis im Gegensatz zur
Verwendung alternativer Produkte für die Erstellung des Rigs dar? (b) Wie
stellt sich für Sie die Flexibilität im Gegensatz zur Verwendung alternativer
Produkte für die Erstellung des Rigs dar?
4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
4
4
3
0
0
Abbildung 5.8: Wie stellt sich für Sie das Vorhandensein gewünschter
Funktionen bei der Generierung des Rigs dar?
5.2.6
Fragen zur Verwendung des Tools
Der überwiegende Teil der Testpersonen sieht den Einsatz dieses Tools für die
Erstellung eines Rigs für einen zweibeinigen 3D Charakter als sehr sinnvoll
bis sinnvoll an (siehe Abbildung 5.10). Dies zeigt, dass die Akzeptanz für
den Einsatz des Tools durchaus gegeben ist. Es könnten jedoch noch einige
Verbesserungen beim Rig hinzugefügt werden, wie zum Beispiel ein squashand stretchable Torso, Rotation im Brustbereich (chest_ctrl), Möglichkeit
die Hüften um die y-Achse zu rotieren ohne das der Oberkörper mitrotiert
(y-Rotation im hipSway_ctrl ).
5. Evaluierung von dRiggingTool
10
9
8
7
6
5
4
3
2
1
0
50
9
2
0
0
0
9
8
7
6
5
4
3
2
1
0
8
2
1
0
(a)
6
(b)
5
5
4
3
2
2
2
2
1
0
0
(c)
0
7
6
5
4
3
2
1
0
6
4
1
0
0
(d)
Abbildung 5.9: (a) Wie empfinden Sie die Effizienz dieser Funktionen zur
Animationsvorbereitung im Hinblick auf Zeitersparnis? (b) Wie empfinden
Sie die Effizienz dieser Funktionen zur Animationsvorbereitung im Hinblick
auf Flexibilität? (c) Wie empfinden Sie die Effizienz dieser Funktionen zur
Animationsvorbereitung im Hinblick auf Positionierung in der Benutzeroberfläche? (d) Wie hilfreich war Ihnen bei der Generierung des Rigs die Hilfe?
5.3
Zusammenfassung und Ergebnis der Evaluierung
Wie Abbildung 5.11 zeigt, wurde von den Studenten die Handhabung, Benutzeroberfläche und die Zeitersparnis als Stärken hervorgehoben, wobei nach
der Analyse der Fragen zu urteilen sicher die Zeitersparnis die größte Stärke des Tools darstellt. Die größte Schwäche des Tools bildet die mangelnde Flexibilität (siehe Abschnitt 2.4.10). Diese jedoch zu erhöhen ist meiner Meinung nach nur sehr schwer möglich, bzw. nur mit einem größeren
Programmieraufwand, um alle Benutzeranforderungen abzudecken. Außer-
5. Evaluierung von dRiggingTool
8
51
7
7
6
5
4
3
3
2
1
1
0
0
Wenig
sinnvoll
Nicht
sinnvoll
0
Sehr sinnvoll
Sinnvoll
Neutral
Abbildung 5.10: Wie sinnvoll ist Ihrer Meinung nach der Einsatz dieses
Tools zur Erstellung eines Rigs für einen zweibeinigen 3D Charakter?
dem geht eine höhere Flexibilität immer mit einer höheren Komplexität des
Tools einher. Dies war jedoch nicht das Ziel des Projekts. Es sollte ein Tool
zur Verfügung gestellt werden, welches für eine große Anzahl an ähnlichen
Standard-3D-Charakteren die Möglichkeit bietet diese schnell und einfach
zu riggen. Dies kann durchaus als gelungen angesehen werden, was auch die
durchwegs positive Bewertung von dRiggingTool durch die Studenten zum
Ausdruck bringt. Die Befragung der Studenten und die anschließende Analyse haben einen wichtigen Beitrag zur Verbesserung der Benutzerfreundlichkeit und Workflows des Tools geleistet. Auch konnten einige Probleme eruiert
werden, welche man durch den ständigen Umgang mit dem Tool vielleicht
übersehen hätte.
Folgende Punkte wurden durch die Befragung am Tool verbessert:
• Script kann auch in das Verzeichnis ../maya/2008/scripts kopiert werden. Mittels der Systemvariablen sys.path können die Systempfade von
Autodesk Maya abgerufen werden. Diese müssen um ../maya/scripts/dRiggingTool und ../maya/2008/scripts/dRiggingTool erweitert werden. Dadurch wird ermöglicht, Dateien für dRiggingTool in diesen Verzeichnissen abzuspeichern und diese nicht direkt unter den Scripts Verzeichnissen ablegen zu müssen, was sicher zu einer verbesserten Übersichtlichkeit beiträgt.
• Das Problem mit dem rechten Daumen im Pre-Skelett wurde behoben. Dies war ein einfach zu behebendes Problem, welches aber bis
zur Befragung der Testpersonen übersehen wurde. Dieses Problem war
zurückzuführen auf einen fehlerhaften Datensatz in der Datenstruktur
mit Hilfe dessen das Pre-Skeleton erstellt wird.
• IK/FK Blending wurde nach „klassischer“ Art realisiert mittels 3 Jointketten. Nähere Ausführungen zum IK/FK Switch siehe Abschnitt 2.4.4.
5. Evaluierung von dRiggingTool
52
12
0
10
0
2
1
3
8
6
4
7
11
11
11
9
9
2
8
3
0
Stärke
Schwäche
Abbildung 5.11: Stärken und Schwächen von dRiggingTool
• Diverse Controller wurden nach den World Axes ausgerichtet. Hierbei handelt es sich um IK Controller. FK Controller sollten nach den
lokalen Rotationsachsen der Joints, welche durch sie animiert werden
ausgerichtet werden.
• Y-Rotation am abs_ctrl. Dies spielt eine Bedeutung für die Hüftbewegung bei einem WalkCycle.
• Das File userSetup.py wurde um eine Ordnerebene nach oben verschoben. Dies ist deshalb sinnvoll, da dieses File direkt im Verzeichnis
scripts abgelegt werden muss, und so nicht mehr aus dem Verzeichnis
dRiggingTool eine Ordnerebene nach oben verschoben werden muss.
• Controller wurden vergrößert (Ellbogen, Knie, IK und FK Controller
für Arme und Beine).
• Hauptfenster ist minimierbar.
• Messageboxen im Interface zwecks verbesserter Hilfe und Benutzerfreundlichkeit. In der Autodesk Maya Help Line werden nun kleine
Hinweise zur Benutzung des Tools gegeben. Zum Beispiel 1st step: create pre skeleton | 2nd step: create skeleton | 3rd step: create rig, wenn
man mit der Maus über die Bezeichnung Tabs im Interface fährt.
• Fist: Finger lassen sich leicht nach oben biegen. Dadurch lässt sich ein
Anspannen der Finger animieren.
• Das Pre-Skeleton kann auf einen Shelf-Button abgespeichert werden.
Wird dieser gedrückt, so öffnet sich das Tool und erzeugt automatisch
das abgespeicherte Pre-Skelett. Dadurch lassen sich mehrere unter-
5. Evaluierung von dRiggingTool
53
schiedliche Pre-Skelette abspeichern. Das heißt der Schritt vom Skelett
bzw. Rig zurück zum Pre-Skelett ist jederzeit möglich. Dieser Punkt
ist ein wichtiger Beitrag zur Flexibilisierung des Arbeitsprozesses (siehe
Abschnitt 2.4.10).
Folgende Punkte ließen sich noch verbessern bzw. hinzufügen:
• Positionierung der Funktionen für die automatische Erzeugung des
Character Sets und die Namenskonvertierung in MotionBuilder Format in der GUI anstatt im Menü.
• Ein dehnbares Spine-Rig unter Verwendung von Forward und Inverse
Kinematik. Siehe dazu die Abschnitte 2.4.8 und 2.4.9.
• Möglichkeit die Hüften um die y-Achse zu rotieren ohne das der Oberkörper mitrotiert (y-Rotation im hipSway_ctrl). Um dies zu ermöglichen ist ein eigenes Hüft-Setup mit Hilfs-Joints nötig.
• Möglichkeit alternativ ein gruppenbasiertes Reverse Foot System zu
erstellen.
• Variable Anzahl der Joints für die Wirbelsäule.
• Tool zur Ausrichtung der lokalen Rotationsachsen der Joints.
• Tool zur Ausrichtung der Kontrollobjekte nach dem Weltkoordinatensystem oder der lokalen Rotationsachse, sowie zur Anpassung deren
Größe.
• Tool zur Unterstützung bei der Erstellung eines Rigs für die Gesichtsanimation.
5.4
Analyse und Vergleich unterschiedlicher RiggingTools
Zuerst muss man sich verdeutlichen, dass Rigging-Tools hauptsächlich dort
zum Einsatz kommen, wo Standardaufgaben in kurzer Zeit erledigt werden
sollen. Vergleicht man die einzelnen Rigging-Tools, so sieht man dass jedes Tool unterschiedliche Stärken und Schwächen aufweist. Die Installation
ist bei allen Tools relativ einfach. Diese erfolgt indem man das Skript bzw.
das Verzeichnis in welchem sich die Skripts befinden nach ../maya/scripts
oder ../maya/2008/scripts kopiert. Advanced Skeleton, welches sicher das
umfangreichste der getesteten Tools darstellt, verfügt sogar über ein automatisches Installationsprogramm. Die Hilfe ist bei den meisten Programmen
recht dürftig ausgefallen. Advanced Skeleton und dRiggingTool bieten dabei
für den ungeübten Benutzer Unterstützung. Dies ist doch sehr hilfreich, da
nicht immer alle Funktionen eines Tools selbsterklärend sind.
5. Evaluierung von dRiggingTool
54
In punkto Skelettgenerierung bietet sicherlich createFBIK_skeleton einen
großen Vorteil, da sich mittels diesen Tools ein asymmetrisches Skelett erzeugen lässt. Wünschenswert, wär hier jedoch noch eine variable Anzahl von
Joints für die Wirbelsäule, zumal es sich hierbei um kein Rigging-Tool, sondern um ein Tool zur ausschließlichen Generierung eines Skeletts handelt.
Diese Fähigkeit wird von abAutorig zur Verfügung gestellt. Die Anpassung
des Skeletts an das Mesh wird von Rig-o-matic nicht unterstützt. Dies stellt
in Punkto Schnelligkeit einen großen Nachteil dar, als bei den anderen der
getesteten Tools die Generierung des Skeletts unterstützt wird. Auch muss
hier die Benennung und Ausrichtung der Joints selbst übernommen werden,
was wieder eine zusätzliche Fehlerquelle und Zeitverlust darstellt.
Was die Bedienbarkeit und Intuitivität des Rigs betrifft, haben sicher
abAutoRig und dRiggingTool die Nase vorne. AbAutorig verfügt zwar über
Inverse und Forward Kinematik im Oberkörper, jedoch erfolgt kein automatisches Binding der Geometrie an die IK Joints. Auch ist die Bedienung
der Kontrollobjekte etwas umständlich. Hier würde man sich ein ähnliches
Setup, wie in [22] auf Seite 97 folgende beschrieben, wünschen. Für RiggingTools Flexibilität von großer Bedeutung ist auch, dass einzelne Körperteile
separat geriggt werden können. Dadurch wird ermöglicht, dass man die Standardlösung mit einer Individuallösung kombiniert. Einige Funktionen zur
Unterstützung bei der Animation sind in Advanced Skeleton realisiert. Zum
einen können hier die einzelnen Kontrollobjekte, alternativ zum View Port,
über ein grafisches Interface ausgewählt werden und zum anderen wird auch
ein Tool zum Abspeichern und zum Austausch von Posen und Animationen
einzelner Charaktere zur Verfügung gestellt.
Allen Tools ist gemein, das nur wenig bis keine Funktionen zur Erstellung eines Rigs zur Gesichtsanimation zur Verfügung gestellt werden. Auch
Funktionen zur Steuerung von Blendshapes und Funktionen zur Unterstützung beim Skinning werden nicht angeboten. Dies sind jedoch Funktionen,
welche sich nicht so einfach automatisieren lassen. In Abschnitt 6.3 werden Möglichkeiten zur Unterstützung beim Skinning geliefert. Trotz alldem
sind diese Tools eine große Hilfe und ermöglichen eine rasche und einfache
Standardlösung. Welches Tool das Richtige ist entscheiden am ehesten die
Präferenzen des Anwenders bzw. dessen Aufgabenstellung. Tabelle 5.1 zeigt
einen Vergleich zwischen den getesteten Rigging-Tools.
5. Evaluierung von dRiggingTool
55
Installaon
automasches Setup
Offline Hilfe
Skele
World Controller
Gruppen Controller
asymmetrisches Skele
Zwei- und Vierbeiner
Laden und Speichern des Skeles
Variable Anzahl von Spine-Joints
x
x
x
x
x
x
x
Rig
Stretchy Back
IKFK Blending Back
Stretchy Arms and Legs
IKFK Blending Arms and Legs
Fist
Advanced IK Foot Controls
Wechsel zwischen Skele und Rig
Rigging einzelner Körperteile
Animaon
Character Set
MoonBuilder Naming Convenon
Selekon Controller über Interface
Speichern von Posen und Clips
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
dRiggingTool
Advanced Skeleton
abAutoRig
Rig-o-mac
createFBIK_skeleton
Tabelle 5.1: Vergleich unterschiedlicher Rigging-Tools
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
Kapitel 6
Ausblick
6.1
Allgemeines
Der bisherige Teil dieser Arbeit hat sich hauptsächlich mit dem Rigging
eines 3D Charakters beschäftigt. Dieses Kapitel soll einen kurzen Einblick
in weitere Aufgaben innerhalb der Animationspipeline und Möglichkeiten zu
ihrer Automatisierung liefern. Dabei wird teils auf Konzepte eingegangen, die
sich im Moment noch im Entwicklungsstadium befinden. Es soll ein Ausblick
über den Forschungsstand zum automatischen Riggen und Animieren von 3D
Charakteren geliefert werden. Weiters werden Methoden zum Skin Binding
und zur Muskelsimulation besprochen. Abschließend wird ein Konzept zur
Straffung der Animationspipeline dargestellt.
6.2
Automatisches Riggen und Animieren von 3D
Charakteren
Ilya Baran und Jovan Popovic präsentieren in ihrer Publikation Automatic
Rigging and Animation of 3D Characters [7] eine Methode um Charaktere
voll automatisch zu animieren. Dabei wird ein Standardskelett automatisch
an ein 3D Mesh angepasst, um dieses mittels Animationsdaten zu animieren
(siehe Abbildung 6.1). Die Tatsache, dass ein einzelnes Skelett zur Animation
einer großen Anzahl an Charakteren verwendet werden kann, ermöglich es
eine Bibliothek an Bewegungsabläufen herzustellen. Mit Hilfe des Prototyps
Pinocchio dauert es weniger als eine Minute einen Charakter zu Riggen. Die
Einfachheit und Robustheit dieses Animationssystems macht es hauptsächlich für Kinder und nicht professionelle Animatoren interessant.
Diese Methode funktioniert in zwei Schritten. Der erste Schritt beschäftigt sich mit dem Einbetten des Skeletts in das Mesh und der zweite mit dem
Skinning-Prozess. Beim Einbetten des Skeletts wird dieses in Größe und Positionierung der Gelenke an das Mesh angepasst. Dieser Prozess kann als
folgendes Optimierungsproblem beschrieben werden: „Berechne die Positio56
6. Ausblick
57
Abbildung 6.1: Automatisches Character-Rigging mittels des Animationssystems Pinocchio.
(a)
(b)
Abbildung 6.2: Ermittlung des Graphen zur Anpassung des Skeletts an
das Mesh (a), Anpassen des Skeletts an den Graph (b).
nen der Joints so, dass das Skelett bestmöglich in das Mesh eingepasst wird
und die ursprüngliche Form des Skeletts so gut als möglich erhalten bleibt.“
Pinocchio verwendet dazu das mathematische Prinzip der Diskretisierung, dass heißt die Gewinnung von endlich vielen (also diskreten) Daten
aus einer unendlichen Informationsmenge. Es wird ein Graph errechnet, dessen Knotenpunkte die Positionen potentieller Joints und dessen Linien die
Positionen potentieller Beinsegmente repräsentieren. Dieser Graph wird ermittelt, indem Kugeln in das Mesh gepackt, und dessen Mittelpunkte durch
Linien verbunden werden (siehe Abbildung 6.2 (a)). Mittels einer diskreten
Optimierungsfunktion wird anschließend das Skelett an diesen Graph angepasst (siehe Abbildung 6.2 (b)).
Zur Errechnung der Skin-Weights der einzelnen Vertices des 3D Meshs
wurde in Analogie das Prinzip des thermischen Gleichgewichts verwendet.
Man kann sich dies so vorstellen, als dass Bone i Hitze ausstrahlt und dessen Teperatur 1 beträgt und diese an das 3D Mesh weitergibt, während die
Temperatur der anderen Bones 0 beträgt. Die abgestrahlte Hitze repräsentiert dabei die Einflussnahme des Joints auf die Vertices (siehe Abbildung
6.3).
6. Ausblick
58
Abbildung 6.3: Beispielhafte 2D-Darstellung des Prinzips des thermischen
Gleichgewichts. Im unteren Bild wird der rechte Joint rotiert, die Geometrie
wird dabei entsprechend deformiert.
Abbildung 6.4: Skelettherauslösung mittels Mesh-Minimierung.
Mittels Pinocchio wurde gezeigt, dass es möglich ist aus einem statischen
Mesh innerhalb kürzester Zeit einen animierten Charakter zu machen. Auch
wenn für realistische Animationen das Einsatzgebiet noch beschränkt ist, so
sind doch Teile dieses Prototyps bereits für professionelle 3D Anwendungen
verwendbar (vgl. Abschnitt 6.3).
Oscar Kin-Chung Au et al. stellen in ihrer Publikation [3] eine Technik vor,
um mittels Smoothing-Methoden und mehreren Iterationsschritten aus einem
gegebenen 3D Mesh ein Skelett herauszulösen. Dieser Herauslösungsprozess
ist in Abbildung 6.4 dargestellt.
6.2.1
Performance Capture und Mesh-Animation
Edilson de Aguiar et al. [1] und Daniel Vlasic et al. [31] präsentieren MotionCapture Systeme zum Erfassen von Bewegungen ohne Marker. Während in
der Arbeit von Daniel Vlasic et al. noch ein geriggtes Muster-Mesh als Ausgangsbasis dient, wird bei Edilson de Aguiar et al. eine Methode dargestellt,
welche ohne ein Skelett auskommt und bei der die Erfassung von Bewegungen durch Deformationen des Meshs realisiert wird. Mittels Laser Scanning
wird automatisch ein realistisches 3D Modell von der zu erfassenden Person
erstellt. Anschließend wird die Performance mittels acht Kameras aufgenommen. Diese befinden sich kreisförmig um die Szene und laufen mit 24fps. Der
erste Algorithmus der nun zur Anwendung kommt ermittelt aus den auf-
6. Ausblick
59
Abbildung 6.5: Performance Capture bei dem sowohl die Geometrie als
auch die Bewegungen und Verformungen ohne Marker erfasst werden.
genommenen Bildern und deren Silhouetten die globale Pose der erfassten
Person, Frame für Frame und auf Basis eines Lower-Detail Modells. Dieses
Modell besteht aus ca. 5000 bis 6000 Tetraedern, welche entsprechend deformiert werden. In einem zweiten Schritt wird dieses Modell mit Hilfe der
Multi-View Stereo Technik (siehe Abschnitt 6.2.2) in ein High-Detail Modell
bestehend aus ca. 30000 bis 40000 Dreiecken umgewandelt. Dadurch lässt
sich zum Beispiel auch der Faltenwurf eines Rocks welches die zu erfassende
Person trägt im Modell darstellen (siehe Abbildung 6.5). Diese Technik fand
auch in dem fotorealistischen CGI Film Beowulf [Paramount 2007] Anwendung.
6.2.2
Exkurs: Multi-View Stereo Technik
Diese Technik ist ein Verfahren, um aus einem aus mehreren Ansichten abfotografierten Objekt automatisch ein entsprechendes 3D Modell zu erstellen [15]. Als erstes wird für jede Ansicht eine Depth Map erstellt. Diese
zeigt, welche Bereiche im Bild näher bzw. weiter weg sind. In einem zweiten Schritt wird aus den einzelnen Depth Maps ein Mesh erzeugt. Mit Hilfe
dieses Verfahrens lassen sich rasch 3D Modelle von existierenden Objekten
erzeugen (siehe Abbildung 6.6). Die Oberflächenstruktur der Modelle wird in
detaillierter Form dargestellt. Nachteile dieses Verfahrens sind, dass Löcher
in Bereichen mit unzureichender Struktur entstehen können und dass jeder
Punkt der Oberfläche aus mindestens drei Perspektiven erfasst werden muss.
6.2.3
Automatisches Konvertieren einer Mesh-Animation in
eine skelettbasierende Animation
Da es für die Mesh-Animation (siehe Abschnitt 6.2.1) kein so reichhaltiges Angebot an Tools zur Weiterverarbeitung und Modifikation gibt, ist es
sinnvoll eine Methode zu entwickeln, welche automatisch eine Konvertierung
in eine skelettbasierende Animation vornimmt [2]. Für die Animation werden automatisch ein Skelett, Animationsparameter und Skinning-Weights er-
6. Ausblick
60
(a)
(b)
Abbildung 6.6: Abfotografiertes Modell (a), 3D Mesh (b).
Abbildung 6.7: Bildhafte Darstellung eines Algorithmus zur automatischen
Konvertierung einer Mesh-Animation in eine skelettbasierende Animation.
Abbildung 6.8: Segmentierung des Meshs anhand gleichbleibender Bewegungen.
stellt, um diese mittels gängigen 3D Programmen weiterzuverarbeiten bzw.
die Szene zu rendern (siehe Abbildung 6.7).
In einem ersten Arbeitsschritt werden die Vertices in Segmente eingeteilt.
Die Einteilung erfolgt derart, dass diese Segmente über die Zeit eine annähernd starre bzw. gleichbleibende Bewegung ausführen. Abbildung 6.8 zeigt
die Einteilung der Vertices in Segmente mit unterschiedlicher Farbgebung.
Anschließend werden aneinander angrenzende Körperteile bzw. Segmente
bestimmt und diese mit Joints verbunden. Dadurch erhält man eine kinema-
6. Ausblick
61
tische Topologie, welche dem Skelett für das Mesh entspricht. Im nächsten
Schritt werden die Rotationen der einzelnen Joints Frame für Frame berechnet. Zusätzlich wird die Translation des Root-Joints pro Frame ermittelt.
Für die Ermittlung der Skinning-Weights wurde die in Abschnitt 6.2 beschriebene Methode verwendet.
Ein Problem bei diesem Algorithmus gibt es dahingehend, dass es nicht
möglich ist einen Joint zu lokalisieren, falls es keine relative Bewegung zwischen den angrenzenden Körperteilen in der Animation gibt. Jedoch kann
man sagen, dass durch diese Methode eine vernünftige Möglichkeit zur Schließung der Kluft zwischen mesh- und skelettbasierender Animation geschaffen
wurde.
6.3
Skin Binding
Skin Binding bezeichnet den direkt an das Rigging anschließenden Arbeitsschritt, bei welchem das Skelett an das erstellte 3D Mesh bzw. Skin gebunden
wird. Dabei werden die Vertices der Skin den einzelnen Joints des Skeletts
zugeordnet. Bewegt sich nun ein Joint, so bewegen sich die zugeordneten Vertices entsprechend mit. Die Zuweisung soll so erfolgen, dass Änderungen in
der Pose des Skeletts zu plausiblen Deformationen der Hülle führen. Grundsätzlich lassen sich zwei Arten von Binding-Methoden unterscheiden [8]:
• Rigid Bind: Hier wird jedem Vertex genau ein Joint zugeordnet. Dabei
kann es in den Gelenken des Modells zu unterwünschten Verformungen
kommen, welche mit Deformationsobjekten, in Autodesk Maya Flexors
genannt, geglättet werden können.
• Smooth Bind: Es werden die Vertices des Joints gewichtet zugewiesen.
Jeder Vertex kann von einer Vielzahl benachbarter Joints beeinflusst
werden. Die einzelnen Deformationen gleichen sich gegenseitig aus und
es entsteht ein weicher Übergang. Zeigt dieser Übergang nicht das gewünschte Verhalten, so müssen die Gewichtungen (weights) der Zuordnungen manuell verändert werden. Dies geschieht in Autodesk Maya
mit Hilfe des Paint Skin Weights Tools.
Mittels des Autodesk Maya Plugins Skinner lässt sich ein verbessertes
Binding-Ergebnis als mittels des normalen Autodesk Maya Smooth Bind erzielen. Es handelt sich dabei um einen von Jaewoo Seo geschriebenen Skinning Algorithmus, welcher teilweise auf der von Ilya Baran geschriebenen Pinocchio automatic rigging library beruht (siehe Abschnitt 6.1). Durch dieses
Plugin lässt sich innerhalb kürzester Zeit ein automatisiertes Skin Binding
mit natürlichen Deformationen des Charakters erreichen. Zusätzliche Anpassungen können natürlich nach wie vor mittels des Paint Skin Weights
Tools vorgenommen werden. Weitere Skinning-Tools sind abWeightLifter,
6. Ausblick
62
paintWeights, Mirror weights ideal, skinningTools oder Skinny um nur einige zu nennen. Diese Tools dienen jedoch eher der Unterstützung beim
Skin-Weighting und stellen somit keine echte Automatisierung dar. Sämtliche dieser Skripts und Plugins lassen sich von www.highend3d.com herunterladen.
Für aufwändige Charaktere in Filmproduktionen ist es unumgänglich
diese in unterschiedlichen Auflösungen zu erstellen. Die Charaktere können
in seperaten Layern oder Dateien abgespeichert werden. Die Low-Res und
Medium-Res Charaktere sollten in unterschiedlichen Layern und der HighRes Charakter in einer eigenen Datei abgelegt werden (vgl. [18, S. 13]).
• Low-Res Charakter : Um einen komplexen Charakter in Echtzeit animieren zu können, sollte man einen Low-Res Charakter erstellen. Dabei kann das Low-Poly-Mesh mittels Rigid Bind an das Animation-Rig
gebunden werden oder man zerlegt das Mesh in einzelne Teile und verwendet Parent Constraints, um dieses mit den Joints zu verbinden.
Dies gibt dem Animator die Möglichkeit den Charakter und dessen Timing in der Szene zu animieren, ohne ständig ein Playblast erstellen
zu müssen.
• Medium-Res Charakter : Hier wird das geglättete Mesh mittels Smooth
Bind an das Animation-Rig gebunden. Dadurch ist dieser Charakter
oft zu langsam und somit zu unkomfortabel, um damit direkt zu animieren. Der Animator bekommt jedoch eine bessere Vorstellung davon,
wie die einzelnen Posen und Deformationen des Charakters aussehen.
Da Low-Res und Medium-Res Charaktere dasselbe Animation-Rig verwenden und sich in derselben Szene, jedoch in unterschiedlichen Layern
befinden, lassen sich auf einfache Weise Playblasts für Animatics erstellen. Der Medium-Res Charakter enthält, falls notwendig, zusätzlich
ein Rig für Gesichtsanimationen.
• High-Res Charakter : Um Charakter- und physikalische Animationen
zu trennen, sollte dieser Charakter in einer eigenen Datei abgespeichert
werden. Das High-Poly bzw. Subdivision Mesh wird an ein DeformationRig gebunden. Dieses Rig verfügt über keine Kontrollobjekte, sondern
wird indirekt mittels Animation Transfer durch das Animation-Rig
animiert. Der High-Res Charakter beinhaltet sämtliche Simulationen
für Muskeln, Fettgewebe, Haare, Kleidung, Fell etc. und bildet somit
die Ausgangsbasis für das fertige Rendering.
6.4
Muskelsimulation
Animatoren haben schon lange erkannt, dass es mittels Smooth Binding alleine nicht möglich ist das komplexe Zusammenspiel zwischen Muskeln, Fleisch
und Knochen zu simulieren. Um dies zu simulieren werden Charaktere zwi-
6. Ausblick
63
schen den Bones und der Hülle (Skin) mit weiterer Geometrie (Muskeln)
versehen. Um ein gewünschtes Ergebnis zu erzielen, stehen den Animatoren
verschiedene Techniken zur Verfügung.
6.4.1
Pose Space Deformation (PSD)
Diese Technik wird speziell für Echtzeitanwendungen eingesetzt. Insbesondere für Videospiele, wo eine echte Muskelsimulation aufgrund der Beschränkungen der Game-Engines bzw. der Hardware nicht möglich oder zu langsam
wäre. Mit Hilfe von PSD soll, der mit vielen Nachteilen behaftete Einsatz von
Influence Objects unnötig werden. Der Workflow von PSD kann in folgenden
Schritten beschrieben werden [18, Kap. 6].
• Mittels Smooth Binding wird wie gewöhnlich das Mesh an das Skelett
gebunden.
• Speziell bei Hüfte und Schultern kommt es bei speziellen Rotationen
der Joints zu unschönen Verformungen. Hier kann dann die PSD Funktion aktiviert werden.
• Nachdem das Mesh so modelliert wurde, dass die gewünschte Verformung eintritt, wird die PSD Funktion wieder aufgerufen. Das heißt
die Translationen oder Rotationen der Joints bewirken ein Ein- oder
Ausblenden in oder aus der korrigierten Verformung des Meshs.
Diese Schritte lassen sich so oft als notwendig wiederholen, sodass jede Pose
die gewünschten Verformungen bewirkt. Dadurch lassen sich auch eine Reihe
anatomischer Deformationen, wie zum Beispiel die Verformung des Bizeps
bei einer Ellbogenbewegung, Muskelkollisionen oder das wackeln von Fettfalten, simulieren. Einige PSD Tools für Autodesk Maya sind Michael Comet´s
PoseDeformer v1.15 und CGToolkit´s Shape Builder v1.0. Diese Tools realisieren PSD mittels Mel-Scripting, Joints und Blendshapes. Das realisierte
Ergebnis lässt sich somit in Game-Engines weiterverwenden.
6.4.2
Muskelsysteme
Um hyperrealistische Hautdeformationen zu erlangen müssen Charaktere mit
einem System zur Simulation von Muskeln ausgestattet werden. Zum Einsatz
gekommen sind solche Systeme bereits in Filmen wie Hellboy oder Spiderman, um nur einige zu nennen [19, Kap. 5]. Für Videospiele und andere
Echtzeitanwendungen können diese Systeme zum jetzigen Zeitpunkt aufgrund technischer Beschränkungen noch nicht zum Einsatz kommen. Das
Autodesk Maya Muscle System besteht aus folgenden Bestandteilen [6]:
• Capsules, Bones und Muscles: Die Joints eines Skeletts können in Capsules oder Bones umgewandelt werden. Dies sind starre Objekte welche
die Knochen und Skelettstruktur repräsentieren. Capsules besitzen eine
6. Ausblick
64
Capsule
Muscle-Deformer
Mesh
Muscle
Abbildung 6.9: Beispiel eines mit Autodesk Maya Muscle erstellten Muskelsystems [13].
Länge und einen Radius während Bones mit einer entsprechenden Geometrie ausgestattet werden können. Die Haut verformt sich dann entsprechend. Muskeln werden mittels einer Nurbs-Geometrie realisiert.
Die Art, wie sich dieser Muskel verformt beeinflusst die Verformung
der darrüberliegenden Haut.
• Muscle Deformation: Mithilfe eines Muscle-Deformers lässt sich ein
realistisches Verhalten des Muskels simulieren. Dies beinhaltet volle
Animationsmöglichkeiten über Jiggle, Squash and Stretch und Volumen
des Muskels.
• Skin Deformation: Dieser Deformer stellt eine Verbindung zwischen
dem 3D Mesh und den Bestandteilen des Muskelsystems (Capsules,
Bones und Muscles) her. Die Stärke der Verformung der Haut kann,
wie beim Smooth Bind mittels eines Paint Muscle Weights Tools aufgetragen werden.
Sämtliche Autodesk Maya Muscle Befehle können auch mittels Mel-Skripts
angesprochen werden. Abbildung 6.9 zeigt ein mit Autodesk Maya Muscle
erstelltes Muskelsystem.
6.5
Character Setup Pipeline
Eine Character Setup Pipeline [30] ist eine Reihe von Schritten, die bei der
Entwicklung von Charakteren in der 3D Animation durchlaufen werden.
Werden nun einige dieser Schritte nicht auf effiziente Art gelöst, so kommt es
6. Ausblick
65
zu unnötigen Verzögerungen im Workflow. Ziel ist es einen konsistenten Charakter Setup Prozess für mehrere Charaktere zu schaffen und die Effektivität
der Produktion zu erhöhen.
Um dies zu erreichen sollte die lineare Pipeline in möglichst viele parallele Workflows zerlegt werden. Der Schlüssel liegt darin, die Charaktere
welche zur Animation und welche zum finalen Rendering benötigt werden
zu trennen. Der Charakter mit dem animiert wird enthält das Rig mit allen Kontrollobjekten. Der Charakter, welcher schlussendlich gerendert wird,
enthält die detaillierte Geometrie mit allen nötigen physikalischen Simulationen (siehe Abschnitt 6.3). Zur effizienten Parallelisierung dieser Aufgaben
benötigt man zwei Arten von Tools. Ein Character Setup Tool, mit dem
sich auf rasche und einfache Weise ein Animation-Rig erstellen lässt und
ein Animation Transfer Tool, um die Animation vom Animation-Character
auf den Deformation-Character zu kopieren. Beide Tools lassen sich mittels
Skript-Sprachen implementieren.
Bei denen in den Kapiteln 3 und 4 beschriebenen Tools handelt es sich
um verschiedene Character Setup Tools. Rhythm and Hues Studios erstellten für den Film The Chronicles of Narnia: The Lion, The Witch and The
Wardrobe 13 unterschiedliche Module zur Erstellung der Setups für die einzelnen Charaktere. Sie brachen dabei die Charaktere in die Komponenten,
aus denen diese bestanden. Das Character Setup Tool setzt sich dabei aus
folgenden Modulen zusammen:
• Arme für Zweibeiner
• Arme mit Hufen (Vorderfuss)
• Arme mit Tatze (Vorderfuss)
• Beine für Zweibeiner
• Beine mit Hufen (Hinterfuss)
• Beine mit Tatzen (Hinterfuss)
• Hals für Zweibeiner
• Hals für Vierbeiner
• IK Wirbelsäule für Zweibeiner
• FK Wirbelsäule für Zweibeiner
• Wirbelsäule für Vierbeiner
• Schwanz
• Flügel
Dadurch konnte ein Setup für die unterschiedlichsten Charaktere erstellt
werden. Mittels dieser Vorgehensweise wurde auch eine hohe Konsistenz zwischen den Character Setups erreicht, was die Animation der Charaktere und
den Animation-Transfer zwischen den Charakteren erleichterte [17].
6. Ausblick
66
Mithilfe dieser Methode lässt sich erreichen, dass relativ bald mit der Animation begonnen werden kann, da diese bereits mit einem Low-Poly-Mesh
durchgeführt wird. Parallel zur Animation kann der High-Res Charakter erstellt werden (siehe Abschnitt 6.3). Falls die Proportionen identisch sind,
lassen sich für einen Low-Res Charakter mehrere Versionen des High-Res
Charakters erstellen, was zu einer zusätzlichen Straffung im Workflow führt.
Mittels eines Animation Transfer Tools lässt sich nun die Animation vom
Low-Res Charakter bzw. Medium-Res Charakter auf den High-Res Charakter übertragen. In [18, Kap. 5] befindet sich eine detaillierte Anleitung zur
Erstellung eines Animation Transfer Tools mittels Mel-Skript. Abbildung
6.10 stellt diese Character Setup Pipeline in grafischer Form dar.
6. Ausblick
67
Storyboard
Character Design
Modeling
UV Layout
Texturing
Low-Res
Med-Res Character
1:n
Rigging
Animation-Rig
Detailed
Modeling
Skin Binding
Rigging
Deformation-Rig
Animating
Detailed
Skin Binding
Muscle, Cloth, Hair, Fur
Simulation
Hi-Res
Character
Animation
Transfer
Rendering
Abbildung 6.10: Workflow einer Charakteranimation mit unterschiedlichen
Detailierungsgraden der Charaktermodelle.
Kapitel 7
Schlussbemerkungen
In der vorliegenden Arbeit sollte die Fragestellung, inwieweit sich der RiggingProzess eines 3D Charakters automatisieren bzw. rationalisieren lässt, beantwortet werden. Dazu wurde zuerst ein Überblick über die Anforderungen
zur Erstellung eines Character-Rigs gegeben. Diese Anforderungen haben
sich auf das 3D Charakter Modell, auf die Skelettgenerierung und auf die
Erstellung des Rigs bezogen. Als nächstes wurden einige aktuelle Lösungsansätze zur automatischen Rig-Generierung untersucht. Mit dRiggingTool
wurde im praktischen Teil der Arbeit ein Werkzeug zur raschen Generierung
eines Skeletts und eines Rigs für einen Zweibeiner erstellt. Als Werkzeug
dafür wurde die Skriptsprache Python gewählt und ein Vergleich zwischen
denen in Autodesk Maya zur Verfügung stehenden Skriptsprachen Mel und
Python gezogen. Die Evaluierung von dRiggingTool mittels Fragebogen stellt
einen weiteren zentralen Bestandteil der Arbeit dar. Im Anschluss wurden
die untersuchten Tools anhand verschiedener Anforderungen analysiert und
miteinander verglichen.
Im Entstehungsprozess der Diplomarbeit stand am Anfang der praktische Teil und somit die Implementierung eines Tools zur Automationsunterstützung im Character Setup Prozess. Zu dessen Realisierung erfolgte
eine Recherche über die bereits existierenden Rigging-Tools und eine Einarbeitung in Mel als Skriptsprache. Durch die in Abschnitt 4.2.1 genannten
Gründe wurde das Tool jedoch dann in Python realisiert. Nach Fertigstellung des Tools wurde eine Befragung zur Funktionstauglichkeit und Qualität der Benutzeroberfläche durchgeführt. Dabei hat sich herausgestellt, dass
in Punkto Benutzerfreundlichkeit und Zeitersparnis die Ziele durchaus erreicht wurden, die Flexibilität jedoch noch verbesserungswürdig erscheint.
Als Reaktion auf die Befragung erfolgten einige Verbesserungen und Erweiterungen am Tool (siehe Abschnitt 5.3). Für die Diplomschrift wurde mit
der Auswertung der Befragungsergebnisse begonnen. Anschließend wurden
Anforderungen für die Erstellung eines Character-Rigs herausgearbeitet und
diverse Tools miteinander verglichen. Durch die Arbeit wurde gezeigt, wo im
68
7. Schlussbemerkungen
69
Character Setup Prozess potentielle Einsatzmöglichkeiten für Automatisierungstools bestehen. Solche Automatisierungspotentiale bestehen vor allem
bei der Erstellung eines Character Setups und beim Animation Transfer.
Durch unterschiedliche Detaillierungsgrade der Charaktere für die Animation und das Rendering lässt sich frühzeitig mit der Animation beginnen und
gleichzeitig ein komplexer Charakter erstellen.
Möglichkeiten im Hinblick auf Ergänzungen und zur Weiterarbeit an diesem Thema gäbe es dahingehend, dass man für das Character Setup ein Tool,
welches einen modularen Aufbau wie in Abschnitt 6.5 beschrieben, besitzt
erstellt. Dadurch ließe sich ein großer Schritt in Richtung Flexibilisierung
machen. Auch könnte man versuchen eine Automationsunterstützung zur
Erstellung eines Muscle Systems zu erstellen. Hier gäbe es mittels Autodesk
Maya Muscle sicher einige Ansatzmöglichkeiten.
Es existieren jedoch schon Ansätze um bereits bei der Erstellung des
Meshs bzw. des 3D Modells mit der Automatisierung zu beginnen. Durch
die Möglichkeit eine Person oder ein Objekt mittels 3D Scan zu erfassen
bestehen ohne Zweifel immense Rationalisierungspotentiale (siehe Abschnitt
6.2.2). Zur Automatisierung der Animation werden gegenwärtig meist Motion Capture Systeme welche auf optischen Markern basieren eingesetzt. Diese werden in Zukunft sicher durch Systeme welche ohne derartige Marker
auskommen ersetzt. Gründe dafür sind, dass die Setup-Time bei markerbasierenden Systemen bedeutend länger ist. Auch müssen die Darsteller enge
unnatürliche Kleidung mit optischen Markern tragen und es ist meist erforderlich die gewonnenen Daten in mühsamer Kleinarbeit zu berichtigen. Mit
Hilfe neuerer Performance Capture Systeme lassen sich die Gestalt, Bewegungen und Oberflächenbeschaffenheit der Akteure in ihrer natürlichen Kleidung erfassen (siehe Abschnitt 6.2.1). Einhergehend mit solchen Systemen
ist die Mesh-Animation. Ob diese jedoch in naher Zukunft die herkömmliche
Kinematik-Animation verdrängen wird, ist zu bezweifeln. Es wird vielmehr
so sein, dass beide Verfahren nebeneinander existieren werden und je nach
Anwendungsfall die günstigere Lösung zum Einsatz kommen wird. Mit Hilfe
der Kinematik-Animation hat der Animator nach wie vor mehr Einflussmöglichkeiten auf die Animation. Außerdem verfügt er über eine große Menge
an Tools diese zu bearbeiten, welche für die Mesh-Animation nicht zur Verfügung stehen. Große Bedeutung wird daher in naher Zukunft den Bemühungen zukommen die Lücke zwischen diesen beiden Verfahren zu schließen
(siehe Abschnitt 6.2.3). Im Zuge dessen kommt es zur Entwicklung von Methoden zur automatischen Anpassung des Skeletts an das Character Mesh
und zum automatischen Skin Binding. Hier gibt es bereits Tools, welche dieses übernehmen. Diese befinden sich jedoch im Moment noch in einem Entwicklungsstadium und sind daher noch nicht voll ausgereift (siehe Abschnitt
6.2).
Bei allen technischen Rationalisierungsmöglichkeiten gilt zu beachten,
dass immer auch Kreativität eine große Rolle für den Erfolg eines Produktes,
7. Schlussbemerkungen
70
sei es im Filmbereich oder im Bereich Computer-Games, spielt. Viele der
dargestellten Automatisierungsmöglichkeiten zielen darauf ab, reelle Objekte
und Akteure direkt in die 3D Welt zu übertragen. Dies ist sicher ein Weg, um
die immer größer werdende Nachfrage nach Assets und Animationsdaten zu
befriedigen. Es bleibt jedoch am Menschen diese Daten sinnvoll und kreativ
zu nutzen bzw. weiterzuverarbeiten.
Anhang A
Inhalt der CD-ROM/DVD
File System: Joliet
Mode: Single-Session (CD-ROM)
A.1
Diplomarbeit
Pfad: /
Da_minichmayr.pdf . .
Da_minichmayr.ps . . .
Da_minichmayr.dvi . .
A.2
Diplomarbeit (PDF-Datei)
Diplomarbeit (PS-Datei)
Diplomarbeit (DVI-Datei)
dRiggingTool
Pfad: /dRiggingTool
dRTRestore.mel . . . .
userSetup.py . . . . . .
dRiggingTool . . . . . .
Stellt ein via Shelf-Button abgespeichertes
Pre-Skelett wieder her.
Systemdatei zum Importieren von
dRiggingTool.
Verzeichnis in dem sich die Dateien von
dRiggingTool befinden.
Pfad: /dRiggingTool/dRiggingTool
*.py . . . . . . . . . . .
readme.txt . . . . . . .
help.html . . . . . . . .
images . . . . . . . . . .
Python Dateien.
Allgemeine Informationen und
Installationsanleitung.
Hilfe in Html-Format.
Verzeichnis mit Bildern für die Hilfe.
71
A. Inhalt der CD-ROM/DVD
A.3
72
Fragebogen
Pfad: /Fragebogen
Fragebogen.pdf . . . . .
1..11.pdf . . . . . . . .
auswertung.xls . . . . .
Girl_start1.ma . . . . .
A.4
Fragebogen zur Evaluierung von
dRiggingTool.
Von den Studenten ausgefüllte Fragebögen.
Auswertung der Fragebögen.
Autodesk Maya File zum Arbeiten mit
dRiggingTool.
Quellen
Pfad: /Quellen
*.pdf
A.5
. . . . . . . . . .
Wissenschaftliche Papers, die als Quellen
verwendet wurden.
Images
Pfad: /Images
*.eps . . . . . . . . . . .
Bilder und Grafiken im EPS-Format
Literaturverzeichnis
[1] Aguiar, E. de, C. Stoll, C. Theobalt, N. Ahmed, H. P. Seidel und
S. Thrun: Performance capture from sparse multi-view video. In: SIGGRAPH ’08: ACM SIGGRAPH 2008 papers, S. 1–10, New York, NY,
USA, 2008. ACM.
[2] Aguiar, E. de, C. Theobalt, S. Thrun und H. P. Seidel: Automatic Conversion of Mesh Animations into Skeleton-based Animations. Bd. 27, S.
389–397, Hersonissos, Crete, Greece, 4 2008.
[3] Au, O. K. C., C. L. Tai, H. K. Chu, D. Cohen-Or und T. Y. Lee: Skeleton
extraction by mesh contraction. In: SIGGRAPH ’08: ACM SIGGRAPH
2008 papers, S. 1–10, New York, NY, USA, 2008. ACM.
[4] Autodesk: MotionBuilder 7.5 Help: Bone naming conventions, 2007.
[5] Autodesk: Maya 2008 – Documentation, 2008.
[6] Autodesk: Maya 2008 Extension 1: Maya Muscle – Documentation,
2008.
[7] Baran, I. und J. Popović: Automatic rigging and animation of 3D characters. In: SIGGRAPH ’07: ACM SIGGRAPH 2007 papers, S. 72–79,
New York, NY, USA, 2007. ACM.
[8] Choi, J. j.: Maya Character Animation – Sophisticated Guide to Modeling, Rigging, and Animation Techniques. Sybex, Korea, 2004.
[9] Desse, C.: Wegbereiter der Animation: Rigging Artists. Digital Production, 2:116–119, März/Apr. 2005.
[10] Digital-Tutors: Character setup in maya, 2006.
digitaltutors.com, DVD, PL Studios, Inc.
http://www.
[11] Digital-Tutors: Introduction to maya animation: Walk cycle, 2006. http:
//www.digitaltutors.com, DVD, PL Studios, Inc.
[12] Digital-Tutors: Creating stylized females in maya, 2008. http://www.
digitaltutors.com, DVD, PL Studios, Inc.
73
Literaturverzeichnis
74
[13] Digital-Tutors: Introduction to maya muscle, 2008.
digitaltutors.com, DVD, PL Studios, Inc.
http://www.
[14] Geml, R. und H. Lauer: Das kleine Marketing-Lexikon. 3. Auflage. Verlag Wirtschaft und Finanzen, Düsseldorf, 2004.
[15] Goesele, M., B. Curless und S. M. Seitz: Multiview stereo revisited. In:
Proceedings of CVPR, S. 2402–2409, 2006.
[16] Gould, D. A. D.: Complete Maya Programming.
Publishers, San Francisco, 2003.
Morgan Kaufmann
[17] Hiebert, B., J. Dave, T. Y. Kim, I. Neulander, H. Rijpkema und W. Telford: The Chronicles of Narnia: the lion, the crowds and rhythm and
hues. In: SIGGRAPH ’06: ACM SIGGRAPH 2006 Courses, S. 1, New
York, NY, USA, 2006. ACM, ISBN 1-59593-364-6.
[18] Kiaran, R., J. Callery und K. Biri: The Art of Rigging Volume 1. CG
Toolkit, San Francisco, 2005.
[19] Kiaran, R., A. Oleg und K. Biri: The Art of Rigging Volume 2. CG
Toolkit, San Francisco, 2005.
[20] Lutz, M. und D. Ascher: Learning Python. O Reilly, USA, 2003.
[21] Maestri, G.: Digital Character Animation 2, Vol. 1 essential techniques.
New Riders Publishing, Berleley, California, 1999.
[22] Maraffi, C.: Maya Character Creation. New Riders Publishing, USA,
2003.
[23] OBrien, D.: Questionnaire design, 2007. http://www-static.cc.gatech.
edu/classes/cs6751 97 winter/Topics/quest-d%esign.
[24] Parent, R.: Computer Animation – Algorithms and Techniques. Morgan
Kaufmann, San Francisco, 2002.
[25] Petersen, L. A.: Automatisiertes, schnelles Character-Rigging mit Maya.
Digital Production, 5:136–139, Sep./Okt. 2003.
[26] Pomberger, G. und G. Blaschek: Software Engineering. Carl Hanser
Verlag, München, Wien, 1993.
[27] Robertson, B.: Madagascar – Das große Riggen. Digital Production,
5:27–32, Sep./Okt. 2005.
[28] Robertson, B.: Pixel-Gymnastik im Cartoon-Stil. Digital Production,
1:16–20, Jan./Feb. 2005.
Literaturverzeichnis
75
[29] Sansonetti, C.: Character rigging: The puppet rig, 2007. http://www.
thegnomonworkshop.com, DVD, The Gnomon Workshop.
[30] Siomacco, E., J. L. Kundert-Gibbs und T. A. Davis: Developing efficient
pipeline tools for animation production. In: ACM-SE 44: Proceedings of
the 44th annual Southeast regional conference, S. 780–781, New York,
NY, USA, 2006. ACM, ISBN 1-59593-315-8.
[31] Vlasic, D., I. Baran, W. Matusik und J. Popović: Articulated mesh animation from multi-view silhouettes. Bd. 27, S. 1–9, New York, NY, USA,
2008. ACM.
[32] Wilkins, M. R. und C. Kazmier: Mel Scripting for Maya Animators.
Morgan Kaufmann, San Francisco, 2003.
Messbox zur Druckkontrolle
— Druckgröße kontrollieren! —
Breite = 100 mm
Höhe = 50 mm
— Diese Seite nach dem Druck entfernen! —
76