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