Charakter-Animation: Ein Rig erstellen – Die Joint-Hierarchie anlegen – Teil 1

Um die Nutzung des Joint-Werkzeugs als auch die in Kombination hilfreichen Funktionen des Charakter-Menüs zu vertiefen, möchte ich mit Ihnen ein typisches Rig für eine menschliche Figur aufbauen. Sie können dafür natürlich eine eigene 3D-Figur verwenden, oder Sie bedienen sich im Content-Browser von Cinema 4D. Die Figur sollte jedoch möglichst nicht schon in einer asymmetrischen Pose sein, sondern die typische T-Stellung zeigen. Darunter verstehen wir eine aufrecht stehende Figur mit seitlich ausgestreckten Armen. Diese Art Pose hat sich bewährt, vor allem wenn es im zweiten Schritt um die Verteilung der Wichtungen geht, denn auf diesen Weise sind genügend große Abstande zwischen allen Körperteilen vorhanden, die später separat bewegt werden sollen.

Stellen Sie vor der Arbeit an dem Rig sicher, dass die Symmetrie-Ebene Ihrer Figur z. B. auf der YZ-Ebene des Welt-Systems von Cinema 4D liegt. Die Welt Y-Achse sollte die Figur also mittig teilen. Dies erleichtert uns gleich die exakte Platzierung der Wirbelsäule und die Nutzung einer Symmetrie am Joint-Werkzeug für die Arme und Beine. Am Joint-Werkzeug selbst schalten Sie die Option für das Root-Null-Objekt ab, damit nicht jede neue Joint-Kette mit einem Null-Objekt beginnt.

Animation in Cinema 4D - Ausgangssituation für die Erstellung des Rigs

Abbildung 6.71: Ausgangssituation für die Erstellung des Rigs

Symmetrie belassen Sie vorerst auf Keine und IK-Kette schalten Sie auf Spline, damit wir direkt mit der Wirbelsäule beginnen und diese später über ein Spline-Objekt steuern können. Die folgende Abbildung 6.71 stellt diese Ausgangssituation noch einmal dar.

Die Wirbelsäule

Für eine voll bewegliche Wirbelsäule sollten nicht zu wenige Joints verwendet werden, um weiche Übergänge bei Deformationen möglich zu machen. Die Joint-Kette sollte zudem an der Hüfte begonnen werden und dann auf der Höhe des Schultergürtels enden. Dort beginnt dann später der Bone für den Hals, der jedoch separat von der Wirbelsäule gesteuert werden soll. Überbrücken Sie also durch Strg/Ctrl-Klicks in die seitliche Editoransicht die Strecke des Rückens, so wie es auch ganz links in Abbildung 6.72 zu erkennen ist. Dafür sollten vier bis fünf Joints ausreichen. Beachten Sie, dass das erste Joint-Objekt automatisch unter eventuell bereits ausgewählten Objekten eingruppiert wird. Vergewissern Sie sich daher vor dem Setzen des ersten Joints, dass keine Objekte in Ihrer Szene selektiert sind.

Arbeiten Sie beim Setzen dieser Joints unbedingt nur in der seitlichen Editoransicht. Wir brauchen uns dann keine Gedanken um die räumliche Platzierung der Joint-Objekte zu machen. Diese landen automatisch exakt auf der Welt YZ-Ebene und somit frontal gesehen mittig in unserer Figur. Sind Sie anschließend mit der Joint-Platzierung zufrieden, beenden Sie das Joint-Werkzeug z. B. durch Auswahl des Verschieben-Werkzeugs und selektieren anschließend das neue Spline-Objekt. Wechseln Sie zur Bearbeitung des Splines in den Punkte bearbeiten-Modus von Cinema 4D. Selektieren und löschen Sie direkt anschließend alle Splinepunkte bis auf den ersten und den letzten. Uns sollten diese beiden Punkte und deren Tangenten ausreichen, um die Joints der Wirbelsäule natürlich zu animieren.

Animation in Cinema 4D - Die Arbeitsschritte zum Anlegen einer Joint-Wirbelsäule

Abbildung 6.72: Die Arbeitsschritte zum Anlegen einer Joint-Wirbelsäule

Im nächsten Schritt selektieren Sie alle Joint-Objekte und schalten an diesen die Darstellung der Bones auf Keine. Es bleiben dann nur die Kreise der Joint-Positionen übrig. Dies macht es uns leichter, den Spline über die Tangenten so zu formen, dass dieser möglichst exakt durch alle Joint-Positionen hindurchläuft. Dies ist ebenfalls in Abbildung 6.72 zu erkennen. Anschließend können Sie die Darstellung der Bones wieder auf Standard zurückschalten und auch das IK-Spline-Tag wieder aktivieren. Die Joints sollten dadurch kaum von ihrer ursprünglichen Position abweichen.

Im Bereich Anfasser des IK-Spline-Tags lassen Sie zuerst mit einem Klick auf die Hinzufügen-Schaltfläche einen neuen Eintrag für ein Anfasser-Objekt erstellen, dem Sie dann durch einen Klick auf Erzeugen tatsächlich ein neues Null-Objekt zuweisen. Die Tiefe wird dadurch automatisch so eingetragen, dass diese der Länge der Tangente an Punkt 0 des Splines entspricht. Die Option für die Verdrehung lassen wir aktiv, damit dieser Anfasser später auch die Drehung der Wirbelsäule um deren Längsachse steuern kann. Betätigen Sie erneut die Kombination aus Hinzufügen und Erzeugen, um für den oberen Splinepunkt ebenfalls einen Anfasser zu erstellen. Auch hierbei müssen wir ansonsten nichts an den Standardvorgaben im Tag verändern. Auf der Tag-Einstellungsseite aktivieren Sie schließlich noch Verdrehung Welt, damit eine Drehung der Anfasser tatsächlich auch ausgewertet wird. Damit sind wir dann hier bereits fertig. Sie sollten nun direkt die Joints und deren Anfasser ordentlich benennen bevor wir fortfahren. Nennen Sie z. B. den obersten Joint in der Hierarchie Hüfte und den untersten Joint Nacken. Die Joints dazwischen können Sie z. B. Rücken nennen und entsprechend der Reihenfolge durchnummerieren. Das erleichtert uns später die Überprüfung der Wichtungen. Gerne können Sie aber noch aussagekräftigere Namen, wie z. B. Bauch und Brust verwenden. Entsprechend benennen Sie die beiden Null-Objekt-Anfasser z. B. zu Anfasser Nacken und Anfasser Hüfte um. Das Spline-Objekt könnte dann Wirbelsäule heißen.

Die Beine

Die Beine beginnen seitlich des Beckens. Um später das Becken natürlich kippen zu können ohne dabei die Stellung der Wirbelsäule verändern zu müssen, sollten wir vor dem Erstellen der Bein-Joints ein Becken-Joint exakt an der Stelle erzeugen, an der aktuell das Hüfte-Joint liegt. Die Positionen von Hüfte und Becken können wir dann später z. B. über ein Constraint-Tag miteinander verbinden, damit die Figur an dieser Stelle nicht auseinanderbrechen kann, wir aber dennoch beide Körperhälften an dieser Stelle unabhängig voneinander rotieren können.

Erzeugen Sie daher ein neues Joint-Objekt durch Abruf aus dem Charakter-Menü und lassen Sie dies mit 3D-Snapping auf Achsen an der Position des Hüfte-Joints einrasten. Sie finden die Snapping-Optionen am linken Rand des Cinema 4D-Layouts unter dem Hufeisenmagnet-Icon. Ist Ihnen dies zu umständlich, kopieren Sie einfach das bereits vorhandene Hüfte-Joint und entfernen an dieser Kopie sowohl das IK-Spline-Tag als auch die untergeordneten Joints der Wirbelsäule. Über die Koordinaten-Rubrik geben Sie diesem kopierten Joint-Objekt die neutrale Rotationswinkel 0°, 0°, 0° und benennen dieses Objekt schließlich in Becken um.

Deselektieren Sie dieses Joint-Objekt nun bevor Sie die nächsten Joint-Objekte mit dem Joint-Werkzeug zeichnen, damit das Becken-Joint nicht seine Ausrichtung verliert. Durch die Achse ausrichten-Option des Joint-Werkzeugs würde sich ansonsten das Becken-Joint auf den linken oder rechten Oberschenkel-Joint ausrichten und somit ziemlich schief dastehen, zumindest was seine Achsen angeht. Wenn wir die Oberschenkel-Joints erst später manuell unterordnen kann dies nicht passieren. Joint-Ausrichtungen können dann nur durch manuelles Auslösen entsprechender Funktionen verändert werden.

Am ausgewählten Joint-Werkzeug deaktivieren Sie die zuletzt benutzte IK-Kette mit der Einstellung Keine und aktivieren dafür die Symmetrie mit Link. Als Ursprung wählen wir das Welt-System mit der Ebene Welt-YZ. In der frontalen Editoransicht platzieren Sie damit einen neuen Joint dort, wo Sie das Gelenk des Oberschenkels vermuten. Simultan hierzu sollten Sie auf der anderen Körperhälfte einen symmetrisch hierzu platzierten Joint beobachten können, so wie es auch in Abbildung 6.73 dargestellt wird. Ob Sie Ihren Oberschenkel-Joint auf der linken oder der rechten Körperhälfte erstellen ist der Symmetrie egal.

Animation in Cinema 4D - Symmetrische Platzierung der Oberschenkel-Joints

Abbildung 6.73: Symmetrische Platzierung der Oberschenkel-Joints

Würden wir mit der Platzierung der Joints für das Knie und das Sprunggelenk nach dem gleichen Prinzip fortfahren, käme es eventuell schnell zu einem seitlichen Abknicken der Joints am Knie, wenn diese nicht exakt auf einer Geraden liegen. Dies ist ein typisches Problem, da die Beine meines 3D-Modells nicht senkrecht nach unten, sondern leicht ausgestellt modelliert wurden. Derartigen Probleme können wir aber auch aus dem Wege gehen und zwar so:

Lassen Sie den zuletzt erstellten Oberschenkel-Joint aktiv und wechseln Sie in die seitliche Ansicht. Setzen Sie mit dem Joint-Werkzeug ein neues Joint-Objekt dort, wo Sie das Sprunggelenk am Fuß vermuten. Dies ist ganz links in Abbildung 6.74 zu sehen. Rechts daneben erkennen Sie, welchen Effekt dies auf die Platzierung dieses Joints hat. Der neue Joint erscheint exakt lotrecht unter dem Oberschenkel-Joint. Das Setzen neuer Joints in der seitlichen Editoransicht erfolgt also immer auf der X-Koordinate des zuletzt erstellten und somit übergeordneten Joints. Wieder in der seitlichen Ansicht führen Sie diese Joint-Kette fort und setzen ein neues Joint-Objekt dort, wo die Zehen beginnen. Eine mögliche Position dieses Joints ist ganz rechts in Abbildung 6.74 zu sehen. Ein letztes Joint-Objekt wird dann ebenfalls in der seitlichen Ansicht an die Spitze des längsten Zehs gesetzt. Dies wäre hier also die Spitze des großen Zehs. Dabei sollte der Bone zwischen dem vorletzten und zuletzt gesetzten Joint-Objekt in der seitlichen Ansicht horizontal verlaufen, also parallel zur Welt Z-Achse. Dies ist ganz links in der folgenden Abbildung 6.75 zu erkennen.

Animation in Cinema 4D - Platzierung der Fuß-Joints

Abbildung 6.74: Platzierung der Fuß-Joints

Da die Joints am Fuß nun jedoch außerhalb der eigentlichen Fuß-Geometrie unserer Figur liegen, aktivieren Sie im Standard-Menü des Joint-Werkzeugs die Option für Kette verschieben und ziehen damit das Fußgelenk-Joint in der frontalen Editoransicht zur Seite, bis es mittig in der dazu passenden Geometrie liegt. Anschließend schalten Sie das Standard-Menü wieder zurück zu Verschieben. Damit haben wir nun eine Situation wie in Abbildung 6.75, bei der die Joints im Fuß mit ihren X-Achsen alle noch parallel zur Welt X-Achse ausgerichtet sind. Dies hat für uns später Vorteile, da wir die Ausrichtung dieser Joints dann nicht korrigieren müssen. Weiter geht es nun mit dem noch fehlenden Knie-Joint.

Animation in Cinema 4D - Fertigstellung und Korrektur der Fuß-Joints

Abbildung 6.75: Fertigstellung und Korrektur der Fuß-Joints

Das Bone zwischen dem Oberschenkel-Joint und dem Sprunggelenk-Joint am Fuß sollte nun durch die Position des Kniegelenks verlaufen. Dort müssen wir also ein zusätzliches Joint-Gelenk hinzufügen, ohne die gerade Verbindung zwischen der Hüfte und dem Fuß seitlich abzuwinkeln. Hierbei hilft der Teilen-Befehl, den wir bei aktivem Joint-Werkzeug standardmäßig durch einen Shift-Klick auf einen vorhandenen Bone abrufen können. Dafür muss dieses Bone bzw. Joint-Objekt zuvor nicht extra selektiert werden. Am besten, Sie erzeugen das neue Knie-Joint mit einem Klick auf den Bein-Bone in der frontalen Editoransicht und wechseln anschließend in die seitliche Ansicht um dieses neue Gelenk etwas nach vorne in Richtung der Fußspitze zu ziehen. Das Ziel sollte sein, dass Sie einen leichten Winkel zwischen dem Oberschenkel und dem Unterschenkel erhalten, so wie es in Abbildung 6.76 zu sehen ist. Dies erleichtert später dem IK-Tag die Arbeit. Frontal betrachtet muss das Bein natürlich weiterhin zwischen der Hüfte und dem Fußgelenk eine perfekte Gerade zeigen, damit unsere Figur später nicht X- oder O-beinig läuft. Damit wären die Joints für die Beine dann bereits vollständig.

Animation in Cinema 4D - Einfügen und Korrigieren des Knie-Joints

Abbildung 6.76: Einfügen und Korrigieren des Knie-Joints

Sie können daher nun die beiden Hierarchien des linken und des rechten Beins manuell im Objekt-Manager unter dem Becken-Joint eingruppieren. Dessen Ausrichtung verändert sich dadurch nicht. Bevor wir nun fortfahren mit den Joints der Arme, sollten wir uns wieder Zeit nehmen, die neuen Joints sinnvoll zu benennen. Eine gute Gelegenheit, das Benennungs-Werkzeug zu besprechen.

Das Benennungs-Werkzeug

Dieses Werkzeug ist im Werkzeuge-Menü von Cinema 4D zu finden und erleichtert uns die Benennung von Objekthierarchien, wenn diese wie bei einer 3D-Figur immer gleichen Schemata folgen. So werden Sie wahrscheinlich die Joints eines Arms immer Oberarm und Unterarm nennen. Mag es bei diesen zwei Joints noch übersichtlich erscheinen, diese Namen jedes Mal wieder neu zu vergeben, kann die Benennung der vielen Finger-Joints schon recht lästig werden. Das Benennungs-Werkzeug kann bereits gesicherte Namenslisten laden und per Mausklick direkt auf selektierte Hierarchien übertragen. Dabei lassen sich auch gängige Kürzel in den Namen, wie z. B. Links oder _R für die Joints der linken und der rechten Körperhälfte automatisch ausfiltern und ersetzen. Da wir jedoch noch keine Namenslisten gespeichert haben, müssen wir zumindest ein Mal die Namen für die Joints einer Körperhälfte selbst vergeben. Dies betrifft in unserem Beispiel vorerst das Bein. Ich entscheide mich für die Joints im linken Bein der Figur und benenne diese der Hierarchie folgend als Oberschenkel links, Unterschenkel links, Fuß links, Zehen links und Zehenspitze links. Anschließend selektieren Sie alle diese Joint-Objekte wie es auch ganz links in Abbildung 6.77 angedeutet wird und rufen aus dem Werkzeuge-Menü von Cinema 4D das Benennungs-Werkzeug auf. Dieses kann mit beliebigen Objekten benutzt werden und ist daher nicht nur auf die Arbeit an Rigs und Joint-Hierarchien limitiert. Dort macht es aber sicher besonders oft Sinn. Im Dialog des Benennungs-Werkzeugs im Attribute-Manager klicken Sie zunächst auf die Hinzufügen-Schaltfläche. Im Anschluss daran werden wir nach einem Namen gefragt, unter dem die Namen der selektierten Objekte später zu finden sein sollen. Ich entscheide mich für den Namen Bein-Joints und schließe den Dialog über die OK-Schaltfläche.

Animation in Cinema 4D - Ein Namensschema hinzufügen lassen

Abbildung 6.77: Ein Namensschema hinzufügen lassen

Selektieren Sie nun die Joints des rechten Beins, die neue Namen erhalten sollen und wählen Sie im Typ-Menü des Benennungs-Werkzeugs den Eintrag für Bein-Joints aus. Eine derartige Auswahl über das Typ-Menü ist nur innerhalb dieses Cinema 4D-Projekts möglich. Sobald Cinema 4D beendet wird, sind auch die gemerkten Namen unserer Bein-Joints weg. Es lohnt sich daher diese Namen auch permanent zu sichern, wenn Sie öfter mit identischen Joint-Hierarchien arbeiten. Betätigen Sie dann einfach die Speichern…-Schaltfläche, um das gerade im Typ-Menü ausgewählte Namensset zu speichern. Wie sicherlich schon vermutet, lassen sich derartige Dateien jederzeit auch über die Laden…-Schaltfläche wieder importieren. Diese Dateien tragen die Endung .cndb und lassen sich notfalls auch mit einfachen Textprogrammen öffnen. Es sind jedoch Steuerzeichen enthalten, die das Editieren von Hand problematisch machen könnten. Achten Sie daher besser bereits vor dem Speichern darauf, alle Tippfehler zu beheben. Fehlerhafte Namenssets können über die Entfernen-Schaltfläche auch wieder gelöscht und dann ggf. durch eine korrigierte Namensliste der selektierten Objekte durch Hinzufügen ersetzt werden.

Animation in Cinema 4D - Abrufen und Übertragen eines Namensschemas

Abbildung 6.78: Abrufen und Übertragen eines Namensschemas

In unserem Fall betätigen Sie nach der Auswahl Typ Bein-Joints einfach die große Schaltfläche für Namen zuweisen. Die selektierten Joints des rechten Beins erhalten augenblicklich die Namen der linken Bein-Joints. Da aber nun beide Hierarchien an den Beinen den Anhang links im Namen führen, sollten wir diesen am rechten Bein durch den Anhang rechts ersetzen lassen. Auch das ist problemlos möglich mit dem Benennungs-Werkzeug. Tragen Sie hierfür den Begriff links in das Feld für Ersetze und den Begriff rechts in das Feld für durch. Falls Sie die Buchstabenfolge links z. B. noch in anderer Schreibweise in den Namen verwenden, dort aber natürlich nicht austauschen möchten, aktivieren Sie zusätzlich die Option für Großschreibung beachten. Dies kann vor allem bei Ersetzungen hilfreich sein, die nur aus einem oder zwei Zeichen bestehen. Oft werden z. B. nur die Kürzel L oder R in den Joint-Namen verwendet, um deren Lage auf der linken oder rechten Körperhälfte anzuzeigen. Das Austauschen der Buchstaben L oder R ohne Beachtung der Großschreibung würde ebenfalls automatisch alle Buchstaben L, l bzw. R und r in den Namen austauschen. Sofern die Joints des rechten Beins nach wie vor ausgewählt sind, betätigen Sie einfach Namen ersetzen, um die Begriffe austauschen zu lassen. Die folgende Abbildung 6.79 gibt diese Schritte und das Ergebnis noch einmal wieder.

Animation in Cinema 4D - Bestandteile von Namen austauschen lassen

Abbildung 6.79: Bestandteile von Namen austauschen lassen

Auf die gleiche Weise ließen sich auch Begriffe ergänzen, anstatt nur bereits vorhandene Buchstaben auszutauschen. Dafür sind die Felder Prefix und Suffix gedacht. Ein Prefix ist ein Begriff, der den Namen vorangestellt werden kann. Ein Suffix ist ein Anhängsel, wird also hinter die selektierten Namen gesetzt, wenn Namen ersetzen betätigt wird. Wir kommen dann später noch einmal bei der Benennung der Arm- und Hand-Joints auf dieses Werkzeug zurück. Vorerst haben wir jedoch unser Ziel erreicht und können uns nun um die inverse Kinematik der Beine kümmern.

Der IK-Kette erzeugen-Befehl

Inverse Kinematik sorgt dafür, dass wir unser Rig intuitiver und anatomisch korrekter animieren können. Dafür müssen Anfasser-Objekt erzeugt und mit den Joints einer Hierarchie verknüpft werden. Wir haben dazu bereits das IK-Tag besprochen, das sich natürlich auch manuell einzelnen Abschnitten einer Joint-Kette hinzufügen lässt. Es gibt jedoch auch eine Funktion, mit der dieser Vorgang beschleunigt werden kann. Sie finden diese Funktion unter Charakter > Befehle > IK-Kette erzeugen. Vor dem Aufruf dieses Befehls müssen Sie die Joint-Objekte selektieren, die Start oder Ende einer IK-Kette sein sollen. Es ist damit also auch möglich, mehrere IK-Abschnitte in einer Hierarchie gleichzeitig zu definieren. Wir spielen dies am Beispiel der vorhandenen Bein-Joints einmal durch.

Selektieren Sie dazu alle Joint-Objekte des linken Beins bis auf das Joint-Objekt an der Position des Knies. Dieses soll sich später frei bewegen können und daher keinen externen Anfasser erhalten. Wir hatten dies bei der Besprechung des IK-Tags schon einmal beobachten können. Führen Sie also z. B. einzelne Ctrl-Klicks auf die linken Bein-Joints aus und lassen Sie dabei nur das Unterschenkel-Joint aus. Halten Sie dann weiterhin die Ctrl-Taste und wählen Sie im Charakter-Menü Befehle > IK-Kette erzeugen aus. Nach Aufruf dieses Befehls werden Sie neue IK-Tags und automatisch damit verknüpfte Null-Objekte in Ihrer Szene bemerken. Diese Null-Objekte liegen allesamt an den Positionen der Fuß- und Zehen-Joints, da dies jeweils die Ende-Objekte der verschiedenen automatisch erstellten IK-Ketten sind.

In Abbildung 6.80 erkennen Sie den aktuellen Stand. Dort wurden die drei neuen Null-Objekte in der Ansicht durch rote Kreise hervorgehoben. An den Joints sind dadurch also normale IK-Tags entstanden, über die wir nun z. B. auch einen Polvektor definieren oder Stauchung und Dehnung individuell konfigurieren könnten. Bevor wir jedoch einen Polvektor zuweisen, sollten wir uns die aktuelle Ausrichtung der Joints am Bein genauer ansehen, damit wir dort auch die richtige Achse auswählen können. Bei meinen Bein-Joints ist es aktuell so, dass die Y-Achsen alle zur Rückseite des Beins, bzw. zur Unterseite des Fußes zeigen. Ich würde dies gerne umdrehen, damit alle Y-Achsen aus Sicht der Figur nach vorne zeigen. Für diese Aufgaben gibt es im Charakter-Menü ein spezielles Joint-Ausrichten-Werkzeug.

Animation in Cinema 4D - Die automatisch erzeugten IK-Tags und deren Anfasser Null-Objekte

Abbildung 6.80: Die automatisch erzeugten IK-Tags und deren Anfasser Null-Objekte

Das Joint-Ausrichten-Werkzeug

Vor dem Aufruf dieses Werkzeugs sollten Sie alle die Joints selektieren, deren Ausrichtung Sie überprüfen oder verändern möchten. Wie in Abbildung 6.81 zu erkennen, habe ich daher alle Bein-Joints am linken Bein selektiert. Nach dem Aufruf des Joint-Ausrichten-Werkzeugs finden Sie dann dessen Dialog im Attribute-Manager. Dieses Werkzeug kann bis zu zwei Achsen gleichzeitig ausrichten, also z. B. die Z-Achse der Joints auf den jeweils nachfolgenden Joint und die Y-Achse der Joints auf ein separates Polvektor-Objekt. In jedem Fall bleiben die Positionen der Joints unverändert, es geht also immer nur um deren Achsensysteme!

Animation in Cinema 4D - Ausrichten der Joints mit dem Joint-Ausrichten-Werkzeug

Abbildung 6.81: Ausrichten der Joints mit dem Joint-Ausrichten-Werkzeug

Über das Achse-Menü wählen Sie die Hauptachse der Joints aus, die in jedem Fall zu 100% ausgerichtet werden soll. Die optional wählbare Up-Achse kann dann ergänzend dazu ausgerichtet werden. Mit Achse Von Joint ist die Achse der Joints gemeint, die bereits ungefähr in der Lage ist, die Sie am Richtung-Menü einstellen können. Wurden die Joints also bereits durch das Joint-Werkzeug auf den jeweils untergeordneten Joint ausgerichtet, so wäre dies die Z-Achse, wenn Richtung Bone gewählt wurde. Achse Von Joint können Sie also immer dann verwenden, wenn die Joints schon zumindest grob und vor allem einheitlich ausgerichtet wurden. Sind die selektierten Joints alle wild verdreht, wählen Sie im Achse-Menü mit X, Y oder Z besser direkt die Achse aus, die Sie ausrichten möchten. Das Richtung-Menü gibt dann an, in welche Richtung diese Achse zeigen soll. Richtung Bone steht für die direkte Verbindungslinie zwischen gruppierten Joints, zumindest wenn Sie an den Joints das Bone-Menü mit Zum Unterobjekt oder Vom Überobjekt definiert haben. Die Kombination aus Achse Z und Richtung Bone sollte daher in den meisten Fällen das gewünschte Ergebnis bringen und zumindest erst einmal alle Joint-Z-Achsen korrekt ausrichten.

Mit Richtung Welt-Achse werden die Joint-Achsen parallel zu den Welt-Achsen eingestellt. Dies jedoch nur unter der Bedingung, dass gleichzeitig im Menü Up-Achse eine weitere Joint-Achse ausgewählt und ebenfalls mit Up-Richtung Welt-Achse kombiniert wird. Mit Richtung Objekt-Achse kann ein beliebiges Objekt in den Dialog des Werkzeugs gezogen werden. Dessen Achse wird dann ausgewertet und entsprechend auf die Joint-Achse übertragen. Also mit Achse Z würde eben auch die Richtung der Z-Achse z. B. eines Null-Objekts für Z-Achsen der Joints übernommen. Wichtig auch hierbei ist, dass Up-Achse nicht auf Keine eingestellt wurde. Ansonsten ist keine Zuweisung eines Objekts möglich.

Mit Richtung Ausrichten an: ist eine Zielfunktion gemeint. Die gewählten Joint-Achsen (Achse-Menü) zielen dann also direkt auf die Position dieses Objekts, das Sie ebenfalls wieder direkt im Dialog verlinken müssen (Objekt-Feld). Schließlich können Sie auch Richtung Root-Achse wählen, womit dann das Achsensystems des obersten Objekts in der jeweiligen Hierarchie gemeint ist. In unserem Fall wäre dies z. B. das Becken-Joint, unter dem die Beine eingruppiert liegen, da dies bereits auf der obersten Hierarchieebene des Objekt-Managers platziert ist.

Viele dieser Einstellungen wiederholen sich nun noch einmal für die Up-Achse. Diese kann ebenfalls über das Up-Richtung-Menü parallel zur entsprechenden Welt-Achse, Objekt-Achse oder Root-Achse verlaufen oder mit Ausrichten an: auf ein Objekt zielen. Ebenso lassen sich Achse und Up-Achse aber auch auf Keine stellen. In dem Fall müssen Sie jedoch mit einigen Einschränkungen leben, da dann z. B. keine Objekte im Dialog verlinkt werden können. Gedacht sind die Keine-Einstellungen für den Fall, dass Sie entweder nur die Haupt-Achse oder den Up-Vektor verändern möchten und nicht beides gleichzeitig. In der Regel dürfte es jedoch sinnvoller sein, beides miteinander zu verknüpfen.

Dank der Option für Unterobjekte brauchen wir nur das oberste Objekt einer Hierarchie tatsächlich zu selektieren, bevor das Werkzeug ausgeführt wird. Es werden automatisch alle darunter eingeordneten Objekte nach dem gleichen Prinzip ausgerichtet. Die Option für An Vorherigem ausrichten bezieht sich nur auf die Up-Achse der Joints. Die Up-Richtung des jeweils übergeordneten Objekts wird zusätzlich mit herangezogen, um eine einheitliche Ausrichtung der Up-Vektoren zu erreichen.

Animation in Cinema 4D - Ausrichtung der Bein-Joints

Abbildung 6.82: Ausrichtung der Bein-Joints

In unserem Fall könnten also Einstellungen wie in Abbildung 6.82 helfen. Wie Sie sehen können habe ich dort Achse Z mit Richtung Bone kombiniert. Die Z-Achsen der Joints richten sich dadurch immer auf das nachfolgende Joint-Objekt aus. Mit Up-Achse Y und Up-Richtung Objekt-Achse kann ich nun ein beliebiges Objekt zuweisen, dessen Y-Achse die Richtung der Y-Achsen an den Joints vorgibt. Ich erstelle dafür ein neues Null-Objekt und drehe dies so um 90°, dass dessen Y-Achse entlang der negativen Welt Z-Achse ausgerichtet ist, so wie es links in Abbildung 6.82 zu sehen ist. Da die Option für Unterobjekte aktiv ist, müssen wir nur den Joint für Oberschenkel links selektieren und danach die Ausrichten-Schaltfläche am Werkzeug betätigen. Praktisch ist, dass wir diese Ausrichtung nicht noch einmal am rechten Bein wiederholen müssen. Durch die Link-Symmetrie, die wir derzeit am Joint-Werkzeug aktiviert hatten, haben sich diese Joints automatisch entsprechend ausgerichtet und zeigen nun ebenfalls mit ihren Y-Achsen zur Front der Figur. Das zum Ausrichten der Y-Achsen genutzte Null-Objekt hat damit seine Schuldigkeit getan und kann wieder gelöscht werden.

Selektieren Sie nun alle Joints des rechten Beins bis auf den Joint an der Position des Knies, halten Sie die Ctrl-Taste gedrückt und wählen Sie dabei wieder Charakter > Befehle > IK-Kette erzeugen aus. Wieder entstehen neue IK-Tags und damit verbundene Null-Objekte für die Fuß-Joints in unserer Szene. Bevor wir nun etwas Ordnung in diese Null-Objekte bringen, sollten wir nicht vergessen, die aktive Symmetrie zwischen den Beinen nun abzuschalten. Ein individuelles Bewegen der Beine wäre ansonsten nicht möglich. Selektieren dazu alle Joints am rechten Bein und schalten Sie in deren Symmetrie-Einstellungen die Aktivieren-Option aus.

Die nächsten Arbeitsschritte beschäftigen sich mit der Organisation der Null-Objekte an den Beinen. Wir haben es dort bereits mit drei Null-Objekten pro Fuß zu tun, was die ursprüngliche Idee, die Animation der Beine zu vereinfachen etwas auf den Kopf stellt. Wir sollten daher diese Objekte sinnvoll gruppieren, um auch einen Nutzen von deren inverser Kinematik zu haben.

Animation in Cinema 4D - Die Darstellung der Null-Objekte optimieren

Abbildung 6.83: Die Darstellung der Null-Objekte optimieren

Die inverse Kinematik der Beine optimieren

Zuerst selektieren Sie einzeln jedes Null-Objekt, das mit den IK-Tags der Beine in Verbindung steht und setzen dessen Winkel auf 0°, 0°, 0°. Dies macht es gleich einfacher, sinnvolle Gruppen zu bilden und auch in die ursprüngliche Stellung der Null-Objekte zurückzufinden. Dieser Arbeitsschritt sollte nichts an der Position der Joints ändern, da nur die Positionen der Null-Objekte übertragen werden. Zudem sollten Sie den Null-Objekten in den Editoransichten eine Form geben, damit diese deutlicher hervortreten. Jedes Null-Objekt stellt uns dafür ein Darstellung-Menü in dessen Objekt-Einstellungen zur Verfügung. Auch die Farbe der Null-Objekte kann über deren Basis-Eigenschaften individuell gewählt und per Iconfarbe-Option auch auf die Icons im Objekt-Manager übertragen werden. Die kommt der Übersichtlichkeit der Szene sehr entgegen, wie Sie in Abbildung 6.83 erkennen können, wo ich die Null-Objekte rot eingefärbt habe.

Ebenfalls dort zu erkennen sind zwei Rechteck-Splines mit aktiver Rundung in den Ecken, die ich unter den Füßen platziert habe. Diese Objekte möchte ich u. a. nutzen, um etwas Ordnung im Objekt-Manager zu schaffen. Zudem werden uns diese Formen später die Selektion der Fuß-Anfasser vereinfachen. Die jetzt folgende Umsortierung und Ergänzung der Null-Objekt-Anfasser ist schrittweise in Abbildung 6.84 zu sehen. Diese Schritte sind jeweils identisch für beide Beine durchzuführen. Ich werde jedoch in den folgenden Erläuterungen immer nur vom linken Bein sprechen, damit es da keine Verwechslungen geben kann. Wir beginnen damit, alle drei Null-Objekte des linken Beins unter dem Rechteck-Spline einzuordnen, der zuvor unter dem linken Fuß der Figur platziert wurde. Dies würde uns bei einer Verschiebung oder Rotation des Splines schon einmal helfen, denn damit lässt sich bereits jetzt das gesamte Joint-Bein animieren und der Fuß beliebig kippen. Es gibt jedoch einige typische Fußbewegungen, die weiterhin nur durch individuelle Verschiebung der drei ursprünglichen Null-Objekte möglich wären, wie z. B. die Zehen auf und ab wippen lassen oder sich auf die Zehenspitzen zu stellen. Wir erweitern unsere Anfasser daher noch etwas und optimieren deren Hierarchie.

Animation in Cinema 4D - Schrittweises Optimieren der Fuß-Anfasser

Abbildung 6.84: Schrittweises Optimieren der Fuß-Anfasser

Im ersten Schritt ordnen wir dazu den Fuß-Anfasser unter dem Zehen-Anfasser ein. Dies ermöglicht uns später durch Rotation des Zehen-Anfassers die Figur auf die Zehen zu stellen. Da der Anfasser für die Zehenspitzen nicht Bestandteil dieser Gruppe ist, bleiben die Zehen bei dieser Bewegung parallel zum Boden, so wie es auch natürlich wäre. Damit wir jedoch weiterhin die Zehen beliebig auf und ab bewegen können, benötigen wir ein neues Drehzentrum exakt dort, wo jetzt bereits der Zehen-Anfasser liegt. Wir kopieren daher den Zehen-Anfasser und löschen daran das mitkopierte Fuß-Anfasser-Objekt. In Abbildung 6.84 können Sie dieses kopierte Null-Objekt in grüner Färbung erkennen. Diesem neuen Null-Objekt ordnen Sie das bislang noch alleine stehende Zehenspitze-Ziel unter. Eine Rotation des grünen Null-Objekts bewegt somit die Zehen auf und ab, ohne den restlichen Fuß zu beeinflussen. Schließlich möchte ich auch noch die Möglichkeit haben, den Fuß auf seiner Ferse abzurollen. An dieser Stelle fehlt uns noch ein passendes Drehzentrum. Ich kopiere daher das Null-Objekt des Zehenspitze-Anfassers, färbe dies z. B. bläulich und benenne es in Ferse um. Wir verschieben dieses Objekt in der seitlichen Editoransicht an den hintersten Berührpunkt der Fuß-Geometrie mit der gedachten Bodenebene und ordnen dann beide Anfasser-Gruppen darunter ein, so wie es ebenfalls in Abbildung 6.84 zu sehen ist. Damit sollten wir bereits genügen Kontrolle über gängige Fußbewegungen haben. Nun geht es darum, diese Kontrollen auch einfach bedienbar zu machen. Nützlich wäre, wenn wir ohne im Objekt-Manager das richtige Objekt auswählen zu müssen, direkt in den Ansichtsfenstern die jeweils sinnvolle Aktion an den Anfassern ausführen könnten. Exakt dies ist u. a. möglich mit dem Interaktions-Tag von Cinema 4D, vorausgesetzt Sie scheuen nicht einen kleinen Blick in die Programmiersprachen C.O.F.F.E.E. oder Python. Da dies sicher nicht jedermanns Sache ist, halte ich diesen Ausflug auch kurz. Dennoch sollte dieses Beispiel ausreichen, um Ihnen die Vorteile und gängige Anwendungen demonstrieren zu können.

Das Interaktions-Tag

Sie finden diesen Tag in den normalen CINEMA 4D-Tags und ordnen es zunächst dem Ferse-Anfasser zu, den wir im vorherigen Abschnitt neu hinzugefügt hatten. Über eine Rotation dieses Objekts um seine lokale X-Achse kann der Fuß über die Ferse abgerollt werden. Ich möchte exakt diese Funktion durch einfaches Anklicken des bläulich gefärbten Null-Objekts im Editor und Ziehen mit der Maus nach links oder rechts aufrufen können. Zudem soll ein Doppelklick auf das Null-Objekt automatisch wieder zu einer neutralen Stellung der Ferse führen. Schauen wir uns zunächst an, welche Funktionen das Interaktions-Tag uns bietet. Ich konzentriere mich dabei hauptsächlich auf die für unser Beispiel interessanten Optionen. Generell ist dieses Tag in der Lage, beim Anklicken eines Objekts die Mausbewegung in Zahlenwerten aufzuschlüsseln und somit für Skripte zur Verfügung zu stellen.

Animation in Cinema 4D - Einstellungen des Interaktions-Tags

Abbildung 6.85: Einstellungen des Interaktions-Tags

Eine weitere Funktion ist, dass auch Polygon-Informationen über das angeklickte Objekt gesammelt werden können. Zudem lassen sich hiermit Objekte von der Selektion im Editor und der Manipulation durch Verschieben- oder Drehen-Werkezuge schützen. Wie links in Abbildung 6.85 zu erkennen, startet der Dialog des Tags mit einer Justieren-Option. Damit ist gemeint, dass sich ein Objekt ohne vorherige Selektion nur durch Anklicken und Halten der linken Maustaste z. B. verschieben lässt. Diese Funktion wird an anderer Stelle im Cinema 4D-Layout auch Tweak genannt und kann in der linken Iconleiste über das Symbol mit der Computermaus global ein- oder ausgeschaltet werden (siehe seitliche Abbildung). Mit der Justieren-Option kann diese globale Einstellung also pro Objekt individuell überschrieben werden. Ist die Option ausgeschaltet, müsste dieses Objekt auf jeden Fall vorher selektiert werden um es in einem zweiten Arbeitsschritt z. B. verschieben, drehen oder skalieren zu können.

Die Optionen für Selektion in Ansicht deakt. und Transformationen deakt. dürften selbst-erklärend sein. Sind diese Option aktiv, wird sich dieses Objekt weder durch Anklicken im Editor auswählen, noch über die gängigen Verschieben-, Skalieren- und Drehen-Werkzeuge beeinflussen lassen. Das Menü Wenn bereits selektiert bezieht sich auf die Funktionen des Tags und legt das Verfahren fest, wenn das Tag tragende Objekt bereits z. B. im Objekt-Manager selektiert wurde. Bei Akt. bei Transformationen wird das Tag normal ausgeführt, egal ob mit Tweak-Funktion oder normal nach vorheriger Selektion des Objekts. Mit Tag deaktivieren ist die Funktion des Tags gesperrt, solange das Objekt ausgewählt ist. In diesem Modus funktioniert das Tag also nur mit Tweaking, also dem Ziehen der Maus über das Objekt mit gehaltener Maustaste, ohne dass dabei das Objekt zuvor ausgewählt wurde. Der letzte Modus nennt sich Immer justieren und führt dazu, dass sich das Tag tragende Objekt immer so verhält, als würde es mit der Tweak-Funktion manipuliert. Dies zeigt sich vor allem wenn mehrere Objekte mit Interaktions-Tags selektiert wurden und dann auf dieses Objekt mit der Immer justieren-Einstellung geklickt wird. Es wird sich separat von den anderen verschieben lassen, obwohl es sich ja normalerweise um eine Multiselektion handelt. Die Optionen in der unteren Hälfte kümmern sich dann mehr um das optische Erscheinungsbild.

Objekt hervorheben blendet die übliche Vorschau eines Selektionsumrisses in die Ansichtsfenster ein, wenn der Mauszeiger in die Nähe des Objekts kommt. Dazu muss jedoch Selektionsumriss auch in den Ansichtsvoreinstellungen von Cinema 4D aktiviert sein (in den Optionen der Ansichtsfenster zu finden). Objekt verbergen macht das Objekt in den Ansichtsfenstern unsichtbar. Polygon-Objekte wären beim Rendern dann jedoch trotzdem zu sehen. Die Kombination aus Objekt hervorheben und Objekt verbergen kann reizvoll sein, da sich dann das Objekt selbst zwar nicht zeigt, aber dennoch die Umrisslinie sichtbar wird, wenn sich die Maus nähert. Schließlich können Sie mit Cursor beim Ziehen ausblenden auch noch den Mauszeiger unsichtbar machen, wenn Sie sich im Tweak-Modus, also beim Justieren des Objekts befinden. Wenn Sie die Ausgabe-Seite des Tags öffnen und nun mit gehaltener linker Maustaste über das Ferse-Null-Objekt fahren, sollten Sie dort bereits Informationen ablesen können, z. B. über die den Mausweg oder welche Maustaste dabei gedrückt wird. Falls dies nicht klappt, überprüfen Sie die Einstellung von Wenn bereits selektiert. Diese sollte Akt. bei Transformation sein. Justieren sollte aus- und Selektion in Ansicht deaktivieren, sowie Transformationen deaktivieren sollten angeschaltet sein.

Diese so gewonnenen Informationen mögen ja ganz nett sein, aber was fangen wir nun damit an? Wir können z. B. die Skript-Rubrik des Tags benutzen, um eigene Beziehungen zwischen den ausgewerteten Parametern und den Objekten der Szene anzulegen. Lassen Sie uns daher einen Blick in diese Skript-Rubrik werfen. Über das Skriptsprache-Menü wählen Sie aus, ob Sie lieber mit C.O.F.F.E.E. oder Python arbeiten wollen. Ich entscheide mich hier für C.O.F.F.E.E., da dessen Syntax auch für Programmieranfänger etwas einfacher zu durchschauen ist. In dem Skript-Bereich des Tags tauchen nun bereits diverse Textzeilen auf, die großteilig mit doppelten Schrägstrichen eingeleitet werden. Dabei handelt es sich um vollwertige Programmzeilen, die jedoch über diese Symbole als Kommentare gekennzeichnet wurden und daher nicht ausgeführt werden.

Wenn Sie auf die untere Schaltfläche für Skript bearbeiten klicken, öffnet sich ein komfortabler Expression-Editor, in dem sich einfacher an solchen Programmen arbeiten lässt. Sie sollten bereits verschiedene Routinen erkennen können, die sich z. B. mouseDown(doc, tag), mouseDrag(doc, tag) oder doubleClick(doc, tag) nennen. Wie sich bereits an deren Namen ablesen lässt, werden die jeweils nachfolgenden, in geschweiften Klammern stehenden Befehle abgearbeitet, wenn die Maustaste auf dem Objekt gedrückt, die Maus mit gehaltener Maustaste gezogen oder ein Doppelklick darauf ausgeführt wird. Andere Routinen werden ausgeführt, wenn das Objekt z. B. selektiert oder deselektiert wird oder gar bereits, wenn die Maus in der Nähe liegt und die Hervorhebung des Objekts aktiv wird. Dies sind natürlich für Programmierer alles sehr spannende Dinge, da wir darüber viele Prozesse automatisieren können.

Ich möchte die genannten Routinen nutzen, um mit einem einfachen Ziehen der Maus mit gehaltener linker Maustaste auf dem Ferse-Null-Objekt eine Rotation um dessen Pitch-Winkel auszulösen. Ein Doppelklick auf dieses Null-Objekt soll automatisch die Ferse wieder parallel zum Fuß-Spline drehen. Ich definiere dazu zwei Variablen, die ich als globale Variablen anlege. Das bedeutet, dass ich diese Variablen benutzen kann, um Werte auch außerhalb der Routinen zu speichern. Variablen werden einfach dadurch zu einer globalen Variable, dass wir sie außerhalb der normalen Routinen definieren.

var rot_old;
var rot_new;

mouseDown(doc, tag)
{
var obj=tag->GetObject();
if (obj)
{
rot_old=obj->GetAbsRot();
rot_new=0.0;
}
}
mouseDrag(doc, tag)
{
var obj=tag->GetObject();
if (obj)
{
var weg=tag#INTERACTIONTAG_XPIXELS;
rot_new=rot_old.y+pi*weg/1800.0;
obj->SetAbsRot(vector(rot_old.x, rot_new, rot_old.z));
}
}
doubleClick(doc, tag)
{
var obj=tag->GetObject();
if (obj)
{
rot_old=vector(0.0);
obj->SetAbsRot(rot_old);
}
}

Dies ist bereits das gesamte Listing, das Sie genau so übernehmen können. Gleich oben an finden Sie die beiden Variablen rot_old und rot_new, die über den var-Befehl als Variablen definiert werden. Das sind also die globalen Variablen, die wir nun direkt in allen Routinen benutzen können. Das Skript beginnt mit der Funktion mouseDown(doc, tag) die automatisch aufgerufen wird, wenn wir auf das Objekt mit dem Interaktions-Tag klicken. Ich nutze diesen Moment, um unsere globalen Variablen mit Werten zu füllen. Dazu definiere ich eine neue Variable obj und fülle diese über tag->GetObject() mit dem Objekt, an dem unser Tag hängt. Die folgenden Zeilen nach if(obj) werden nur ausgeführt, wenn ein Objekt gefunden wurde. Dies ist eine typische Sicherheitsabfrage, damit später nicht auf Variablen oder Werte zugegriffen wird die gar nicht vorhanden sind. Schließlich sorgt rot_old=obj->GetAbsRot(); dafür, dass die aktuellen lokalen Rotationswinkel unseres Objekts in der Variablen rot_old gespeichert werden. Dies ist also ein Vektor, den wir uns merken, denn die Rotation besteht schließlich aus Heading-, Pitch- und Banking-Winkeln. Anschließend setze ich noch die Variable rot_new auf den Wert 0.0 und dann ist diese Funktion bereits fertig. Es passiert hier also eigentlich noch nichts, außer dass wir uns die aktuelle Rotation des Ferse-Objekts merken.

Interessanter wird es bei der Funktion für mouseDrag(doc, tag), die beim Ziehen der Maus aktiv wird. Nachdem auch dort wieder die Objekt-Variable gefüllt und überprüft wurde, fülle ich eine neue Variable weg mit dem aktuellen Verschiebungswert der Maus in X-Richtung. Dies ist ein Wert, den ich direkt aus dem Dialog des Interaktions-Tag beziehen kann. Um auf solche Werte zuzugreifen, benutzen Sie einfach nur das Kürzel tag und ziehen dann direkt aus dem Dialog des Tags den Namen des Parameters der Sie interessiert in den Expression-Editor hinter das Wort tag. In unserem Fall ist dies der Parameter Pixel: X der dann im Expression-Editor über tag#INTERACTIONTAG_XPIXELS ausgelesen weder kann. Da es sich hierbei um eine Entfernung in Pixeln handelt, die wir zu einem Winkel umrechnen müssen, schreibe ich rot_new=rot_old.y+pi*weg/1800.0; Hier wird der Mausweg in X-Richtung zuerst durch 1800 geteilt, um den Wert kompatibel zum Bogenmaß zu bekommen und zusätzlich zu reduzieren (normalerweise würde eine Division durch 180 ausreichen). Die Multiplikation mit der Kreiszahl pi rechnet den Wert zum Bogenmaß um. Das Ergebnis wird dann zu der Pitch-Rotation der Ferse hinzugerechnet, die wir vor dem Mausklick in der Variablen rot_old abgespeichert hatten. Über rot_old.y kommen wir an den Y-Anteil des dort gespeicherten Vektors heran, der dem Pitch-Winkel entspricht. Der Befehl obj->SetAbsRot() schreibt einen Winkel an unser Ferse-Objekt zurück und wird hier somit mit einem Vektor gefüllt, der sich aus den X- und Z-Anteilen der ursprünglichen Stellung und dem neuen Pitch-Anteil rot_new zusammensetzt. Damit ist die Drehung des Fußes um die Ferse bereits komplett.

In der Funktion doubleClick(doc, tag) setze ich die Variable rot_old auf den vector(0.0), was den gleichen Effekt hat als würden wir schreiben rot_old=vector(0.0, 0.0, 0.0) und übertragen anschließend den so korrigierten Vektor wieder auf das Ferse-Objekt. Nach einem Doppelklick auf das Ferse-Null-Objekt dreht sich die Ferse dadurch wieder parallel zum Fuß-Spline. Ich hoffe, Sie verzeihen mir, dass ich diesen Teil nur im Schnelldurchlauf beschrieben habe, aber das Thema der Programmierung würde allein ein Buch füllen. Ich hoffe dennoch, sie konnten auch als Nicht-Programmierer der Funktion des Skripts folgen.

Animation in Cinema 4D - Rotieren der Ferse über ein Interaktions-Tag

Abbildung 6.86: Rotieren der Ferse über ein Interaktions-Tag

Zum Testen des Skripts betätigen Sie die Kompilieren…-Schaltfläche im Expression-Editor. Sollten Tippfehler vorhanden sein, wird deren Position im Skript in der Statuszeile am unteren Rand des Expression-Editors angezeigt. Dieses Skript wird automatisch im Tag gespeichert und somit natürlich auch mit Ihrer Szene. Falls Sie es jedoch noch in anderen Projekten verwenden möchten, können Sie auch die Speichern…- und Laden…-Schaltflächen im Expression-Editor benutzen. Dadurch wird das Skript dann in eine separate Datei gesichert und kann als solche auch wieder in den Editor importiert werden. Die Ausführen-Schaltfläche brauchen Sie in Verbindung mit dem Interaktions-Tag nicht. Das Ausführen des Skripts bringt keine unmittelbaren Ergebnisse, da alle Funktionen erst dann aktiv werden, wenn mit der Maus in den Ansichtsfenstern hantiert wird. Die Abbildung 6.86 zeigt noch einmal den Haupteffekt, nämlich das Rotieren der Fuß-Anfasser um die Ferse, wenn die Maus über dem Ferse-Anfasser horizontal verschoben wird. Der Ferse-Anfasser bleibt dabei an Ort und Stelle, da Tweaking (Justieren) und auch das Selektieren im Editor für dieses Objekt ausgeschaltet wurden. Das Interaktions-Tag können Sie schließlich noch als Kopie ebenfalls der Ferse am rechten Fuß zuweisen, sofern Sie dort auch schon die Hierarchien der Anfasser aktualisiert haben. Es sollten keine Veränderungen am Skript nötig sein, da sich dies automatisch immer auf das Objekt bezieht, auf dem das Tag liegt.

Nach dem gleichen Prinzip können wir das identische Interaktions-Tag auch auf die von mir grün eingefärbten Anfasser für die Zehenbewegungen kopieren. Um auch den Zehenstand interaktiv steuern zu können, müssen wir jedoch das Skript leicht erweitern, denn das einzige noch gut durch die Maus erreichbare Objekt ist der Anfasser an den Zehenspitzen. Aktuell beeinflusst unser Skript immer nur das Objekt, dem es als Tag zugewiesen wurde. Wir lassen uns nämlich über die tag-Variable das dazugehörende Objekt ausgeben mit tag->GetObject(). Möchten wir wie im Fall des Zehenstands den Effekt zwar mit dem Zehenspitzen-Anfasser kontrollieren, aber das Zehen-Null-Objekt beeinflussen, müssen wir die Variable obj im Skript anders belegen. Dafür gibt es einfache Befehle, um von einem Objekt in der Hierarchie zu einem anderen zu springen. Mit ->GetNext() können wir z. B. zum in der Hierarchie nächsten, also auf gleicher Hierarchiestufe liegendem Objekt springen. Mit ->GetUp() und ->GetDown() können wir stufenweise in einer Hierarchie nach oben oder tiefer nach unten wandern.

Animation in Cinema 4D - Ergänzungen am Interaktions-Tag der Zehen

Abbildung 6.87: Ergänzungen am Interaktions-Tag der Zehen

Nachdem als auch der Anfasser der Zehenspitze eine Kopie unseres Interaktions-Tags erhalten hat, müssen wir daran etwas ergänzen, damit nicht die Zehenspitze, sondern der Zehen-Anfasser mit dem dort untergeordneten Fuß-Anfasser rotiert wird. Dazu müssen wir nur die mouseDown-Funktion etwas erweitern, so wie es bereits in Abbildung 6.87 zu sehen ist. Alle anderen Funktionen können unverändert bleiben.

Wie Sie im Skript auf der folgenden Buchseite sehen können, geht es dabei nur um die Variable für obj, also das Objekt, dessen Rotation zuerst abgefragt und dann neu gesetzt werden soll. Da wir dafür von dem Objekt des Tags zuerst eine Stufe in der Hierarchie nach oben und dann zum nächsten Element unter der Ferse navigieren müssen, wird der Aufwand zum Füllen der obj-Variable etwas größer. Damit wir diese Navigation zum richtigen Objekt nicht in allen benutzten Funktionen des Tags erneut durchführen müssen, lege ich auch die Variable obj als globale Variable an. Entsprechend fallen alle Variablendeklarationen für obj in den Funktionen für mouseDrag und doubleClick weg.

Damit soll es dann aber auch gut sein mit den Skripten und ich will Sie damit nicht weiter quälen. Wir fahren dann gleich fort mit der Ergänzung der Polvektoren für die Beine bevor es dann den Joints in den Armen geht. Sie sollten jedoch für die optimale Benutzung der Anfasser an denen die Interaktions-Tags hängen, deren Darstellung und Größe optimieren, damit Sie aus jeder Blickrichtung gut mit der Maus darauf zugreifen können. Die rechte Seite der Abbildung 6.87 gibt dazu einen Vorschlag. Dort können Sie auch erkennen, dass ich die übrigen Null-Objekte im Editor ausgeblendet habe, damit nur die Objekte sichtbar bleiben, die für die Steuerung relevant sind.

var rot_old;
var rot_new;
var obj;

mouseDown(doc, tag)
{
obj=tag->GetObject();
if (obj)
{
// Hier enthält obj das Objekt, an dem unser Tag hängt
obj=obj->GetUp();
if (obj)
{
// Hier ist obj mit dem grünen Zehen-Objekt
// gefüllt, das bereits die Zehen auf und ab
// bewegt
obj=obj->GetNext();
if (obj)
{
// Hier enthält die obj-Variable dann den
// Zehen-Anfasser, unter dem der Fuß-
// Anfasser eingruppiert wurde
rot_old=obj->GetAbsRot();
rot_new=0.0;
}
}
}
}

Die Polvektoren anlegen

Die Polvektoren sorgen dafür, dass sich eine Achse der Joints permanent auf deren Position ausrichtet. Dies gibt uns eine Kontrolle über die Neigung der 2D-Ebene, die wir für die inverse Kinematik an den IK-Tags verwenden. Ich verwende dabei gerne zwei Polvektoren pro Bein, einen der die Y-Achse von Ober- und Unterschenkel steuert und einen weiteren der die Neigung der Fuß-Joints beeinflusst. Der Polvektor für das Bein kann direkt im IK-Tag des Oberschenkels erstellt werden. Wählen Sie dort Achse Y und klicken Sie anschließend die Polvektor-Schaltfläche, so wie es auch links in Abbildung 6.88 zu erkennen ist. Anschließend ziehen Sie dieses neue Null-Objekt entlang seiner Y-Achse weit vor das Bein, wie es rechts in Abbildung 6.88 zu sehen ist. So lange das Knie später nicht zu hoch gezogen wird, sollte diese Position in jedem Fall funktionieren. Ansonsten müsste der Polvektor noch höher, eventuell auf Bauch- oder gar Brusthöhe platziert werden. Verfahren Sie nach dem gleichen Prinzip mit dem IK-Tag am Fuß-Joint. Lassen Sie auch dort einen Polvektor für die Y-Achse des Joints neu erstellen und ziehen Sie dieses Objekt dann etwas schräg über den Fuß. Anschließend selektieren Sie das IK-Tag des Zehen-Joints und tragen dort per Drag & Drop aus dem Objekt-Manager das gleiche Null-Objekt ein, das bereits für den Fuß verwendet wird.

Animation in Cinema 4D - Platzierung der Polvektoren für Bein und Fuß

Abbildung 6.88: Platzierung der Polvektoren für Bein und Fuß

Die Abbildung 6.88 zeigt bereits die Platzierung dieses Objekts schräg über dem Fuß und wie dadurch zwei Polvektor-Linien zu den Joint-Objekten am Fuß entstehen.
Ordnen Sie diesen Fuß-Polvektor anschließen unter dem passenden Spline-Objekt ein, der uns als Anfasser für die Fußbewegung dient. Auf diese Weise überträgt sich jeder Drehung dieses Rechteck-Splines automatisch auch auf die Joint-Orientierung und verhindert so ggf. ein Verkanten des Fußes, wenn dieser seitlich gekippt wird. Der Polvektor des Oberschenkels wird unter dem Becken-Joint eingruppiert. Dadurch bewegt sich dieser nicht mit wenn das Bein animiert wird, bleibt jedoch durch die Verbindung zum Becken immer vor der Figur. Die folgende Abbildung 6.89 gibt die aktuelle Struktur aller Objekte im Objekt-Manager wieder. Die neuen Polvektor-Objekte wurden dort zur Hervorhebung violett gefärbt.

Wie Sie vielleicht ebenfalls in Abbildung 6.89 entdecken können, habe ich auch dem Polygon-Objekt der Figur ein Interaktions-Tag gegeben und dort die Justieren-Option aus- und die Selektion in Ansicht deaktivieren-Option eingeschaltet. Da wir an den Füßen interaktive Null-Objekte benutzen, kann diese Maßnahme beim Danebenklicken eine versehentliche Selektion oder Verschiebung der Figur verhindern.

Animation in Cinema 4D - Die aktuelle Struktur aller Objekte

Abbildung 6.89: Die aktuelle Struktur aller Objekte

Über den Autor

Dieses Tutorial ist ein Auszug aus dem CINEMA 4D-Kompendium zur Animation von Arndt von Koenigsmarck. Das komplette C4D-Kompendium mit über 950 Seiten Know-how als Download (PDF) gibt es hier: CINEMA 4D-Kompendium – Die Animation.

Wir empfehlen:
Maxon BodyPaint 3D-Video-Training

Unsere Empfehlung für dich

Cinema 4D für Einsteiger – für R16/R17/R18

Cinema 4D für Einsteiger – für R16/R17/R18

Überschreite mit unserem neuen und sagenhaften Standardwerk für Cinema 4D die Grenzen der Wahrnehmung. Das Release 16 ist das beste Update, das Maxon je herausgebracht hat!

  • Neue Funktionen von R16, R17 und R18 im Detail erklärt
  • In über 15,5 Stunden Video-Training Cinema 4D von A bis Z ergründen
  • PLUS 850 PDF-Seiten und Arbeitsmaterialien
  • Maximales Kreativtraining: Nachbau des Covermotivs

Zum Training