Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008

Die Seite wird erstellt Devid Albers
 
WEITER LESEN
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
Automatisierungsmöglichkeiten im
Rigging-Prozess am Beispiel Autodesk
                Maya

           Dietmar Minichmayr

          MASTERARBEIT

                eingereicht am
        Fachhochschul-Masterstudiengang

              Digitale Medien

                 in Hagenberg

              im September 2008
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
© Copyright 2008 Dietmar Minichmayr

       Alle Rechte vorbehalten

                  ii
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
Erklärung

Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbst-
stä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
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
Inhaltsverzeichnis

Erklärung                                                                     iii

Kurzfassung                                                                  vii

Abstract                                                                     viii

1 Einleitung                                                                   1
  1.1 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . .      1
  1.2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     1
  1.3 Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      2

2 Anforderungen bei der Erstellung eines humanoiden 3D Character-
  Rigs                                                                    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
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
Inhaltsverzeichnis                                                                                                          v

3 Aktuelle Lösungen                                                                                                        23
  3.1 Allgemeines . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
  3.2 createFBIK_skeleton      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
      3.2.1 Workflow . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
  3.3 Rig-o-matic . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25
      3.3.1 Workflow . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
  3.4 abAutoRig . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
      3.4.1 Workflow . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
  3.5 Advanced Skeleton .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
      3.5.1 Workflow . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28

4 Automatisierung des Rigging-Prozesses                                                                                    32
  4.1 Allgemeines . . . . . . . . . . . . . . . .                          .   .   .   .   .   .   .   .   .   .   .   .   32
  4.2 dRiggingTool . . . . . . . . . . . . . . .                           .   .   .   .   .   .   .   .   .   .   .   .   33
      4.2.1 Python vs. Mel . . . . . . . . . .                             .   .   .   .   .   .   .   .   .   .   .   .   33
      4.2.2 Architektur . . . . . . . . . . . .                            .   .   .   .   .   .   .   .   .   .   .   .   35
      4.2.3 Programmieren in Python . . . .                                .   .   .   .   .   .   .   .   .   .   .   .   37
      4.2.4 Workflow . . . . . . . . . . . . .                              .   .   .   .   .   .   .   .   .   .   .   .   38

5 Evaluierung von dRiggingTool                                                                                             42
  5.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                .   42
  5.2 Fragebogen . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                 .   43
      5.2.1 Allgemeine Fragen . . . . . . . . . . . . . . . . . . .                                                    .   43
      5.2.2 Fragen zur Installation . . . . . . . . . . . . . . . . .                                                  .   44
      5.2.3 Fragen zur Skeletterstellung . . . . . . . . . . . . . .                                                   .   44
      5.2.4 Fragen zur Rig-Erstellung . . . . . . . . . . . . . . .                                                    .   46
      5.2.5 Fragen zu Funktionen zur Animationsunterstützung                                                           .   47
      5.2.6 Fragen zur Verwendung des Tools . . . . . . . . . . .                                                      .   49
  5.3 Zusammenfassung und Ergebnis der Evaluierung . . . . . .                                                         .   50
  5.4 Analyse und Vergleich unterschiedlicher Rigging-Tools . . .                                                      .   53

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
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
Inhaltsverzeichnis                                                                                                   vi

7 Schlussbemerkungen                                                                                                 68

A Inhalt der CD-ROM/DVD                                                                                              71
  A.1 Diplomarbeit . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   71
  A.2 dRiggingTool . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   71
  A.3 Fragebogen . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   72
  A.4 Quellen . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   72
  A.5 Images . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   72

Literaturverzeichnis                                                                                                 73
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
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 Skelettgenerie-
rung und den der Rig-Generierung. Aktuelle Lösungsansätze bzw. Rigging-
Tools 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 Grund-
lage dieser Arbeit dient und mittels Fragebogenanalyse einer Evaluierung
unterzogen wurde. Analysiert wurde inwieweit das Tool Anforderungen hin-
sichtlich Benutzerfreundlichkeit, Verständlichkeit, Flexibilität und Funkti-
onserfüllung gerecht wird. Diese Anforderungen können somit als Qualitäts-
merkmale 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 Animie-
ren von 3D Charakteren sowie ein Überblick über einen effizienten Workflow
bei der 3D Charakteranimation.

                                      vii
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
Abstract

The thesis at hand discusses the rigging process for a two-legged 3D charac-
ter 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. Re-
lated 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, dRigging-
Tool 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 selec-
tion 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
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
Kapitel 1

Einleitung

1.1    Zielsetzung
Die zentrale Fragestellung welche diese Arbeit behandeln soll liegt darin, in-
wieweit sich der Rigging-Prozess eines 3D Charakters automatisieren bzw.
rationalisieren lässt. Das automatisch erstellte Rig soll sich in einem späte-
ren 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 zweibeini-
gen Character weitgehend automatisiert. Es soll dargestellt werden, welche
Anforderungen an ein derartiges Tool gestellt werden bzw. welche weite-
ren Funktionen notwendig sind, um es möglichst optimal in einen effekti-
ven Animationsworkflow einbinden zu können. Dabei werden unterschiedli-
che 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. Da-
bei wird das erstellte Tool bzw. der dargestellte Workflow einer detaillierten
Analyse unterzogen.

1.2    Motivation
Da es sich in der Produktionspipeline einer Charakteranimation beim Rigging-
Prozess um einen relativ technischen Bereich handelt, liegt es auf der Hand
diesen zu automatisieren. Die Vorteile einer Automatisierung des Rigging-
Prozesses liegen in einer immensen Zeitersparnis und sind somit auch finanzi-

                                      1
Automatisierungsmöglichkeiten im Rigging-Prozess am Beispiel Autodesk Maya - eingereicht am in Hagenberg im September 2008
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, rechtferti-
gen es sich mit der Automatisierung des Rigging-Prozesses und der automa-
tischen 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 Bei-
spiel im Spielebereich Computerrollenspiele und 3D Shooter. Weitere Ein-
satzmö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 Kon-
zepte, Problemstellungen und Anforderungen eingegangen.
    Kapitel 3: In diesem Kapitel werden aktuelle Lösungsansätze zur auto-
matisierten 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. Wei-
ters erfolgt eine Darstellung des erstellten Rigging-Tools und seiner Archi-
tektur, Algorithmen und Arbeitsweise.
    Kapitel 5: Das erstellte Rigging-Tool wurde einer Fragebogenanalyse un-
terzogen. Die dabei gewonnenen Ergebnisse und Erkenntnisse werden in die-
sem Kapitel dargestellt. Abschließend werden die untersuchten Rigging-Tools
analysiert und miteinander verglichen.
    Kapitel 6: Liefert einen Ausblick über die dem Rigging folgenden Ar-
beitsschritte, wie Skinning und Muskelsimulation beziehungsweise beschäf-
tigt 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öglichkei-
ten im Rigging-Prozess eines 3D Charakters liefern. Grundlegende Kenntnis-
se im Umgang mit der 3D Software Autodesk Maya werden dabei vorausge-
setzt, 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 Vor-
gang 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 Ske-
      letts und den Kontrollobjekten sowie Kinematik-Funktionen und
      diversen Expressions. Ziel der Arbeit des Riggers ist es, der Ani-
      mationsabteilung ein fertiges Rig zu übergeben, das den Anfor-
      derungen 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 techni-
schen 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 kom-
men 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 Zweibei-
ner handelt. Die Erstellung des eigentlichen Rigs erfolgt in zwei Schritten.
Zunächst werden an das Mesh die Joints des Skeletts angepasst. Für die Er-
stellung 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 baumarti-
gen Aufbau besitzt. Diese Bestanteile sind bei einem standardmäßigen Zwei-
beiner:

   • 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 Rig-
Generierung das Skelett zuerst als Ganzes erstellt.

2.2     Anforderungen an das 3D Charakter Modell
2.2.1   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     Anforderungen an die Skelettgenerierung
2.3.1   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 hierarchi-
schen Aufbau. Es ist lediglich der jeweilige Joint an das Mesh anzupassen,
wobei jedoch die Struktur unverändert bleibt. Abbildung 2.2 zeigt den Auf-
bau 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 Ske-
letts mit der MotionBuilder eigenen Naming-Convention auszustatten. Diese
Naming-Convention kann der MotionBuilder Mapping List entnommen wer-
den [4].
    Wird die Naming-Convention eingehalten, so können auch Skelette, wel-
che mit jedweder Software erstellt wurden, zB mit Autodesk Maya, in Moti-
onBuilder automatisch characterized werden. Unter Characterizing versteht
man das Zuordnen der Skelettstruktur bzw. der Joints des erstellten Cha-
rakters an die in MotionBuilder dafür vorgesehenen Nodes (siehe Abbildung
2.3). Entsprechen nun diese Joints einer in MotionBuilder vorgesehenen Na-
menskonvention 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 auto-
matisch, 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, be-
nö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        LeftHandThumb1..

                                        Hips      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 Ma-
ya 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 Aus-
richtung 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
                               Neck           Head
                              Spine3              LeftArm LeftForeArmRoll

                                                                              LeftHand
                              Spine2          LeftShoulder LeftForeArm

                              Spine1

                              Spine                Hips
                                                   Root
                                                   LeftUpLeg

                                                   LeftLeg

                                                         LeftFoot

                                                          LeftToeBase
                                                          LeftToeEnd

             Abbildung 2.3: MotionBuilder Naming-Convention. Rotationsachse
                              Ro
                               tat
                                   ion
                                     sa
                                      ch
                                         se

                     Abbildung 2.4: Joint Orientation.

zweiter Ansatz ist, die Joints des Skeletts immer nach dem jeweiligen Child-
Joint auszurichten. Die Achse, welche nach dem Child-Joint ausgerichtet
wird, wird als Twisting Axis bezeichnet. In Abbildung 2.4 war dies die Y-
Achse. 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 X-
Achse 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 Con-
trollers, 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 wer-
den, zum Beispiel um die Z-Achse, so gilt zu beachten das je nach Ausrich-
tung 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 Weltkoordina-
tensystem 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 Cons-
traints 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
                                                    Toe

                           (a)                             (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 las-
sen 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ätzli-
che Ausrichtung als ihr Original haben. Die lokalen Rotationsachsen welche
parallel zur Spiegelungsebene, in Abbildung 2.10 ist dies die YZ-Ebene, lie-
gen 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          11

                   (a)                                   (b)

   Abbildung 2.10: gespiegelte Joints, mittels Behavior (a), mittels Orienta-
   tion (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 sym-
metrischer 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 Inver-
se 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 ver-
wendet. 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 be-
nü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 De-
     tailierungsgrade 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 erleich-
tern 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    12

2.4.1   Forward Kinematik
Wurde ein Skelett erstellt, so lässt sich dieses standardmäßig mittels For-
ward Kinematik animieren. Die Joints werden dabei vom obersten Element
bis zum untersten Element einer Hierarchie animiert. Wenn man zum Bei-
spiel den Joint für den Ellbogen rotiert wird dementsprechend auch die Hand
mitrotiert. Bei Verwendung der Forward Kinematik lassen sich mit Ausnah-
me 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 rea-
lisieren 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 durchwan-
dert. 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 die-
ser ist der gewünschte Endpunkt der Bewegung bekannt. Die Winkelstel-
lungen der einzelnen Joints werden berechnet [24, S. 192–203]. Eine IK-
Animation wird durch ein IK-Steuerelement (IK-Handle bzw. Endeffector )
kontrolliert (siehe Abb. 2.11). Im Gegensatz zur Forward Kinematik wer-
den bei der Inverse Kinematik ausschließlich Translationswerte für das IK-
Steuerelement herangezogen. In Autodesk Maya gibt es 3 verschiedene Arten
von IK-Handles:

   • Rotate Plane (RP) IK Solver – ermöglicht dem Animator die Ausrich-
     tung 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 Ani-
     mation 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 Wir-
belsä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 je-
doch seinen Hut anheben bzw. werfen, einen anderen Charakter berühren
oder einfach mit einem anderen Gegenstand interagieren, wird Inverse Kine-
matik 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äufigs-
ten verwendet. Inverse Kinematik ist ideal um einen Walkcycle zu realisieren
bzw. um einen Charakter am Boden fortzubewegen. Soll ein Charakter je-
doch schwimmen, so wird man eher Forward Kinematik für Arme und Beine
verwenden [21]. Dies verdeutlicht, das es für ein gutes Character Setup un-
erlä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är-
ben. 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 kontrollie-
renden 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 Con-
     troller 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 Kon-
     trolle 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 ge-
hen 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 ei-
nes 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               15

              Gruppe_Par
                  Gruppe_Rot                   FK Jointkette
                      Ellbogen_FK_Ctrl

                                                           Ellbogen_Fk_Jnt

                                                Mesh Jointkette
                        Schulter_Fk_Jnt

                                           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                          PointConstraint
 Ellbogen_FK_Jnt        OrientConstraint

    Ist das FK Kontrollobjekt nach der lokalen Rotationsachse des zu steu-
ernden Joints ausgerichtet worden, so befindet sich dieses in einer Gruppe
(Gruppe_Rot – siehe dazu Abschnitt 2.4.3). Um sich bei FK Bewegun-
gen mitzubewegen, wird Gruppe_Rot mittels eines Point Constraints an den
Joint des Ellbogens der FK Kette gebunden. Umgekehrt steuert das FK Kon-
trollobjekt 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 ei-
nes Parent Constraints an den Joint für die Schulter gebunden. Diese Vorge-
hensweise 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 Anima-
tionsbeschränkungen (Constraints) auf die Elemente der ersten Zeile erhal-
ten.
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ög-
licht. 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 Charak-
tere. 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 ande-
ren 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 auszustat-
ten. 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 durch-
     blicken, als jenes mittels Joints.
   • Reverse Foot System mittels Joints: Dies ist die klassische Vorgehens-
     weise. Es wird eine zusätzliche Joint-Kette bestehend aus 4 Joints er-
     zeugt (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 animie-
ren, 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

                              BallIK
                 ToeIK

                                                           RLBase_Jnt
                 RLToe_Jnt   RLBall_Jnt

            Abbildung 2.16: Reverse Foot System mittels Joints.

schreiben, positioniert. Um das Kontrollobjekt nach dieser Ebene auszurich-
ten, 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 ent-
lang 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 Be-
     schreibung 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 gebun-
     den. 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 Cons-
     traints 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 sol-
chen 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 Hand-
gelenk, 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 ausge-
stattet . 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 umschlos-
senen Joints mittels Control Vertices einer Kurve gesteuert. Diese Vertices
können dann wiederum mittels Cluster durch Kontrollobjekte gesteuert wer-
den. 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 (sie-
he Abbildung 2.18). Hier ermöglicht eine zusätzliche FK Joint-Kette die
Steuerung des Oberkörpers mittels Forward Kinematik. Durch ein benutzer-
definiertes Attribut können mehrere FK Joints gesteuert werden und so ein
realistisches nach vorne Beugen bzw. seitwärts Beugen des Körpers ermögli-
chen. 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

                 Nurbs Curve                              Cluster

                 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 Sin-
gle 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 Joint-
     Kette. Dieser wird mittels eines Multiply Divide Nodes errechnet.
   • Die Joints der Joint-Kette werden nun um diesen Faktor in die ent-
     sprechende Richtung skaliert. Dabei ist es wichtig, dass die lokalen
     Rotationsachsen der Joints ausgerichtet sind. Je nachdem in welche
     Richtung  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 curveInfoNo-
de.arcLength. Mittels eines Multiply Divide Nodes kann nun der Skalierungs-
faktor 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 spe-
zielle Rigs notwendig sind. So musste für den Animationsfilm „Madagascar“
von PDI/Dreamworks ein Rig ohne anatomische Abhängigkeiten erstellt wer-
den. 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 er-
fü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 aus-
geschaltet 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 Un-
     terarm.
   • 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 zu-
     rü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 vorge-
stellt 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 unterschied-
lich. Dabei erfolgt ein Vergleich hinsichtlich Workflow des Tools und hinsicht-
lich 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 Pro-
gramm 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 Template-
Curve 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 um-
gekehrt 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 Motion-
Builder 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 er-
stellen(siehe Abbildung 3.2). Auch ist man in der Generierung sehr flexibel,
da eine Reihe von Auswahlmöglichkeiten zur Verfügung steht, wie zum Bei-
spiel: 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 Be-
reich 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 Zwei-
beiners 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 Skelettgenerie-
rung nicht unterstützt wird. Die Joints müssen natürlich in ihrer Anzahl,
Aufbau und Orientierung gewissen Anforderungen entsprechen. Dies zu er-
fü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 die-
ses 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 Anforderun-
gen, 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 Joint-
     Kette zu erzeugen;
3. Aktuelle Lösungen                                                      28

                Abbildung 3.6: Proxy mit abSkeletonMaker.

   • Funktion, um den Charakter bzw. die ausgewählte Control Curve wie-
     der 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 dargestell-
ten 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-
Sie können auch lesen