In unserem Beispiel sollen sich die Antennen bzw. Fühler des Alien-Characters bei jeder Bewegung des Kopfes dynamisch und elastisch mitbewegen. Natürlich lässt sich unser Beispiel auch auf Haarsträhnen, Dinosaurier-Schwänze und vieles mehr anwenden.
In der Arbeitsdatei "PSD_C4D_R12_IK_Dyn_Start.c4d" findet ihr den modellierten und texturierten Alien-Kopf zum Mitarbeiten.
Aufbau des Joint-Gerüsts
Unser Alien-Kopf besteht zum einen aus der polygonalen Kopf-Geometrie, zum anderen aus zwei Kugel-Objekten für die Augen. Im weiteren Verlauf werden wir alle Objekte entweder hierarchisch bzw. über Wichtungen an Joints binden, sodass der komplette Kopf zusammen mit den Fühlern problemlos animiert werden kann.
Fangen wir beim Aufbau des Joint-Gerüsts mit einem ersten Joint-Objekt für den Kopf an. Wir finden es im Menü Character.
Da der Alien-Kopf genau auf dem Ursprung des Koordinatensystems sitzt, kann der Kopf-Joint auf der Nullposition verbleiben.
Wir lassen das frisch erstellte Joint-Objekt gleich ausgewählt und aktivieren das Joint-Werkzeug im Menü Character. Im Einstellungsdialog des Joint-Werkzeuges deaktivieren wir die Erstellung eines übergeordneten Root-Null-Objektes. Wir werden es später selbst erzeugen, um besser zu verstehen, welche Funktion es bei einem Joint-Gerüst überhaupt einnimmt.
Damit wir symmetrisch arbeiten können, klappen wir den Bereich Symmetrie auf und verwenden die Zeichnen-Option auf der Welt-YZ-Ebene. Auf dieser Ebene respektive in dieser Ansicht werden wir die Joints zeichnen.
Wenn wir jetzt mit aktiviertem Joint-Werkzeug und gedrückter Strg- bzw. Ctrl-Taste in die Ansicht klicken, werden uns automatisch und symmetrisch dem Kopf-Joint untergeordnete Joints kreiert.
Wir entscheiden uns für eine der beiden Fühler bzw. Antennen und setzen den ersten Unter-Joint direkt am Ansatz des Fühlers an den Kopf. Den Joint für den anderen Fühler setzt CINEMA 4D dank aktivierter Symmetrie automatisch.
Wir erstellen uns nun jeweils durch Klick mit gedrückt gehaltener Strg- bzw. Ctrl-Taste eine Joint-Kette an den in der Abbildung gezeigten Positionen. Wo es feingliedriger wird, sollten die Joints auch etwas näher beieinanderliegen. Sparen sollten wir nicht mit den Joints, denn nur an diesen Gelenkstellen kann überhaupt eine Deformation bzw. Biegung der Geometrie stattfinden.
Nachdem wir alle Joints erzeugt haben, finden wir im Objekt-Manager die in der Abbildung gezeigte Joint-Hierarchie vor. Das Kopf-Joint-Objekt besitzt insgesamt zwei Joint-Ketten als Unterobjekte - eine Kette für jeden Fühler bzw. Antenne.
Um die Position der Joints nun auch in der Seitenansicht paarweise anzupassen, selektieren wir je ein Joint-Paar im Objekt-Manager und verschieben die Joints entlang ihrer z-Achse in die Geometrie.
Das Joint-Gerüst für die Animation der Fühler bzw. Antennen wäre damit auch schon fertiggestellt. Leider besitzt es aber noch keinen Bezug zu unserem Alien-Kopf, der uns erlauben würde, den Kopf zu animieren.
Dies ist erst möglich, wenn wir die Joint-Hierarchie mit der Geometrie verbunden haben. Dazu selektieren wir zunächst über den Objekt-Manager alle Joint-Objekte sowie das Polygon-Objekt der Alien-Geometrie.
Die Verbindung der Joint-Hierarchie mit dem Polygon-Mesh schafft nun für uns der Befehl Binden aus dem Menü Character>Befehle.
Was hat der Binden-Befehl nun bewirkt? Das Polygon-Objekt der Alien-Geometrie besitzt jetzt ein Wichtungs-Tag, in dessen Einstellungs-Dialog alle Joint-Objekte gesammelt sind, die Einfluss auf die Geometrie des Alien-Kopfes nehmen können. Diese automatische Wichtung richtet sich nach der Position der Joints zur Geometrie und ist eine gute Ausgangsbasis.
Wichtung der Joints
Ganz perfekt ist diese Wichtung allerdings in den seltensten Fällen; ein bisschen Nacharbeit ist also angesagt. Um einen Eindruck von den anliegenden Wichtungen zu bekommen, deaktivieren wir als Erstes die Funktion des HyperNURBS-Käfigs über den Objekt-Manager. Das Wichtungs-Werkzeug zeigt die Wichtungen an der Geometrie nämlich bei ungeglättetem Polygonmesh an. Für einen Gesamtüberblick selektieren wir zunächst alle Joint-Objekte mit der Geometrie im Objekt-Manager.
Das Wichtungs-Werkzeug finden wir im Menü Character. Nachdem wir es aktiviert haben, färbt sich schon die Geometrie des Alien-Kopfes. Jeder Joint besitzt dabei eine eigene Farbe, mit der sein Einfluss auf die Geometrie angezeigt wird.
Damit wir die Joints und deren Einfluss auf die Geometrie einzeln beurteilen können, müssen wir das jeweilige Joint lediglich im Objekt-Manager selektieren. Alle nicht von diesem Joint erfassten Bereiche der Geometrie bleiben dabei schwarz.
Am Kopf-Joint fällt auf, dass die Nasenspitze nicht zu 100% in der Joint-Farbe vorliegt. Mit dem Wichtungs-Werkzeug können wir ein eventuelles Fehlverhalten bei Deformation verhindern, indem wir mit dem Wichtungs-Pinsel die Wichtung für den Joint gezielt erhöhen.
Auch an den Übergängen zu den Fühlern bzw. Antennen ist etwas zu viel Einfluss auf die Kopf-Geometrie vorhanden. Um anliegende Wichtungen zu reduzieren, verwenden wir das Wichtungs-Werkzeug mit gedrückt gehaltener Strg- bzw. Ctrl-Taste.
Zum Abschluss der Wichtungsarbeit empfiehlt es sich, noch einmal alle Joints über den Objekt-Manager zu selektieren, die Darstellung der Wichtungsfarbe auf Einfarbig zu setzen und zu überprüfen, ob die gesamte Geometrie eine Wichtung besitzt. Wie in der Abbildung zu erkennen, ist der komplette Alien-Kopf weiß eingefärbt, was uns sagt, dass alle Stellen der Geometrie mit Wichtungen belegt sind.
Von den Wichtungen ausgespart blieben die Kugel-Objekte der Augen. Damit sich diese Objekte ebenfalls bei einer Drehung bzw. Bewegung des Kopfes mitbewegen, ordnen wir sie einfach dem Kopf-Joint im Objekt-Manager unter. Wird der Kopf-Joint nun beispielsweise gedreht, folgen die Augen-Objekte aufgrund ihrer Unterordnung der Kopfausrichtung.
Nun ist es aber höchste Zeit, das Joint-Gerüst und die enthaltenen Wichtungen in der Praxis zu überprüfen. Wir selektieren dazu den Kopf-Joint und drehen ihn mit dem Rotieren-Werkzeug entlang der y-Achse. Der komplette Alien-Kopf sollte dabei ohne Probleme die Bewegungen des Kopf-Joints mitmachen.
Einbinden der Inversen Kinematik mit Dynamik
Nachdem die Joints nun wie gewünscht auf die jeweiligen Bereiche des Alien-Kopfes wirken, können wir uns um die Animation der Fühler bzw. Antennen über Inverse Kinematik (IK) kümmern. Dazu müssen wir die beiden Joint-Stränge für die Fühler bzw. Antennen als IK-Kette definieren.
Wir selektieren dazu diese beiden Joint-Ketten im Objekt-Manager - bitte beachten, dass der Kopf-Joint dabei außen vor bleibt!
Auch hier bietet CINEMA 4D wieder einen Spezial-Befehl namens IK-Kette erzeugen, der die selektierten Joint-Ketten automatisch zu IK-Ketten verarbeitet. Wir finden ihn im Menü Character>Befehle.
Wir wenden den Befehl IK-Kette erzeugen an und überprüfen, was sich bei unserer Joint-Kette getan hat. Die beiden Joints am Kopfansatz bekamen jeweils ein IK-Tag zugewiesen. In diesem Tag wurde automatisch das Anfang und das Ende der IK-Kette hinterlegt.
Außerdem finden wir zwei neue Null-Objekte als Ziel-Objekte im Objekt-Manager. Diese beiden Ziele sind analog zu den Enden der Joint-Kette benannt und ermöglichen uns, die gesamte IK-Kette über diese einfachen Steuer-Ziele zu animieren.
Wir wollen die Bewegungen der Fühler bzw. Antennen zwar eigentlich vollautomatisch über dynamische Eigenschaften regeln. Es schadet aber dabei nicht, diese beiden Ziel-Objekte zu behalten, denn so richten sich die Fühler bzw. Antennen nach jeder Bewegung und Deformation immer wieder nach den Zielen aus und stellen sich so automatisch auf.
Ein Blick in den Einstellungsdialog der IK-Tags zeigt uns, wie die Enden bzw. Ziele der IK-Kette definiert sind. Diese Parameter im Bereich Tag können wir beibehalten; wir interessieren uns jetzt mehr für die Dynamics-Einstellungen.
Dazu wechseln wir in den Reiter Dynamics und aktivieren als Erstes die Dynamics-Option. Jetzt können die Fühler bzw. Antennen bereits auf die Einflüsse wie Gravitation oder Bewegung reagieren.
Damit die Fühler aber nicht einfach schlaff herunterhängen, sondern eher elastisch und widerstandsfähig wirken, reduzieren wir die Dynamics-Stärke auf ca. 40-45% und erhöhen die Dämpfung drastisch auf ca. 70%. Damit sich die Fühler noch stärker bemühen, den Ausgangszustand zurückzuerlangen, erhöhen wir den Parameter Winkel halten auf ca. 40-45%.
Ich kann an dieser Stelle nur einladen, weiter mit den Parametern zu experimentieren. So lernt man schnell, wie die einzelnen Einstellungen auf die gesamte Kette der Inversen Kinematik wirken - und Spaß macht es natürlich auch.
Weil die beiden ausgelagerten Ziel-Objekte nichts von der dynamischen Animation der Fühler bzw. Antennen mitbekommen, müssen wir der IK beibringen, dass diese Ziele mitbewegt werden sollen. Ansonsten würden sich die Fühler bei einer schnellen Drehung sehr schnell miteinander verknoten.
Der Reiter Weitergehendes im IK-Tag bietet uns dafür eine sehr elegante Funktion an. Wir aktivieren hier einfach die Option Ziel mitführen, und die beiden Ziel-Objekte gehen automatisch bei jeder Bewegung mit.
Jetzt ist auch die Inverse Kinematik-Funktionalität der Fühler bzw. Antennen unter Dach und Fach. Schaffen wir noch ein wenig Ordnung im Objekt-Manager, indem wir die Ziel-Objekte sowie die Joint-Ketten passend umbenennen.
Als Anfasser für die Animation des Alien-Kopfes fungiert momentan noch der Kopf-Joint. Leider ist dieser Joint relativ unhandlich, denn er steht aufgrund seiner untergeordneten Joint-Ketten rotiert im Raum.
Wir benötigen aber eigentlich eine "saubere" Ausgangslage an den Winkeln, damit die Rotation und Bewegung des Alien-Kopfes für uns ohne unerwünschte Vordrehungen ablaufen kann.
Hier kommt nun das Root-Null-Objekt ins Spiel, auf das wir bereits am Anfang kurz gestoßen sind.
Es stellt uns eine völlig neue, jungfräuliche Koordinatenbasis zur Verfügung. Und damit die komplette IK-Kette dabei berücksichtigt wird, müssen wir sie dem Root-Null-Objekt lediglich unterordnen.
Als Erstes erzeugen wir aber das frische Null-Objekt über das Menü Objekte. Weil der Kopf-Joint auf der Nullposition liegt, müssen wir das neue Null-Objekt nicht einmal umpositionieren.
Dieses neue Null-Objekt benennen wir folgerichtig in Root um und ordnen ihm die komplette Joint-Hierarchie über den Objekt-Manager unter.
Spätestens jetzt können wir den Abspielknopf drücken und das Alien durch Rotation des Root-Null-Objektes in alle Richtungen drehen und animieren. Die Fühler bzw. Antennen werden dabei dynamisch von der Gravitation und von unseren Bewegungen gesteuert.
Das Root-Null-Objekt ist also ein praktischer Helfer bei der Animation einer Joint-Hierarchie. Bei der Erstellung eines Joint-Gerüsts bekommt mindestens das Haupt-Joint (meistens die Hüfte) solch ein übergeordnetes Null-Objekt verordnet. Damit dies automatisch geschieht, müssen wir im Einstellungsdialog des Joint-Werkzeugs nur die Option Root-Null-Objekt aktivieren.