Einführung

Kinematik [kinema, griech., Bewegung] ist die Lehre von der mathematischen Beschreibung der Bewegung von Punkten und Körpern im Raum. Sie untersucht den Verlauf einer Positionsänderung, ohne die Ursachen und Auswirkungen zu beachten. Kinematik in der 3D-Computergrafik ist eine Animationstechnik, die auf dem Hierachieverhalten von Gelenken und auf deren mathematischen Berechnungen basiert. Dieser Ansatz entstammt der Robotik. Hier wurden bereits sehr früh Methoden entwickelt, um eine exakte Positionierung von Roboterarmen zu kontrollieren. Die Basis einer Kinematik ist eine hierarchische Kette von Gelenken.

Bei hierarchisch verbundenen Gelenken sind zwei Bewegungsarten zu differenzieren:

  • FK | Forward Kinematics | Vorwärtskinematik
  • IK | Inverse Kinematics | Inverse Kinematik

Vorwärtskinematik:
Die Winkelstellungen der Gelenke sind bekannt. Der aus den Winkeln resultierende Endpunkt ist unbekannt. Bei der Animation werden die Rotationswerte der einzelnen Gelenke animiert.

Die Inverse Kinematik:
Der gewünschte Endpunkt der Bewegung ist bekannt. Die Winkelstellungen werden berechnet. Eine IK-Animation wird durch ein IK-Steuerelement (IK-Handle bzw. Endeffector) kontroliert. Bei einer Animation werden ausschließlich Translationswerte für das IK-Steuerelement herangezogen.

Einsatzgebiete für IK oder FK in der Computeranimation:

  • Bewegung von hierarischen Objekten bzw. roboterartigen Animationen (Bagger, Kräne, Roboterarme,.. )
  • mechanische Objekte wie Kolben oder Lenkungen
  • hüpfende Tischlampen (Luxor Junior), Scharniere, Schließmechanismen, ....
  • komplexe hirarchische Objekte wie Ketten, Seile oder Schlangen
  • Charakteranimation: Arme, Beine, Haare, Tentakel, ....; Skelette werden sowohl mit FK und IK animiert (siehe IK/FK-Blending)

Grundlagen der Vorwärtskinematik

Das Animieren von komplexen Bewegungen wird durch hierarchisch verbundene Ketten vereinfacht. Bei der vorwärtsgerichteten Kinematik beeinflusst ein übergeordnetes Gelenk alle untergeordneten Gelenke. Dadurch lassen sich mehrere Gelenke gleichzeitig animieren. Um eine hierarchische Kette in eine Zielposition zu bringen, müssen die einzelnen Gelenke rotiert werden. Dabei beginnt der Animator mit dem ersten Gelenk und arbeitet sich durch die Hierarchiekette bis zum letzten Element.

In diesem Beispiel wird ein Roboterarm mit 3 Gelenken mit FK animiert. Der Roboterarm muss in der Animation 3 Punkte ansteuern:
Der Animator rotiert alle Gelenke solange, bis der Roboterarm die gewünschte Endposition erreicht hat. Eine exakte Ansteuerung kann unter Umständen sehr zeitaufwendig sein. Sind die Rotationswerte ermittelt, werden zum jeweiligen Zeitpunkt Keyframes für die Rotationswerte gesetzt. In diesem Fall handelt es sich um eine 2D-Animation von 3 Gelenken: Es werden drei X-Rotationswerte animiert. Die Anzahl der zu animierenden Werte steigt mit der Anzahl der Gelenke. Bei einer sehr großen Anzahl von Gelenken ist eine inverse Kinematik zielführender, bei der nur ein IK- Steuerelement für die Animation herangezogen wird.
Beispiel: FK/Roboterarm | swf | 16 kb

Grundlagen der Inversen Kinematik

"LUXOR JUNIOR" von John Lasetter ist eines der ersten und bekanntesten Beispiele für Inverse Kinematik. Die "hüpfenden Lampen" inkl. Kabel sind mit IK animiert. Bei vielen Animationsaufgaben wie z. B. bei einer Hand-, Fuß- oder Roboteranimation, muss eine exakte Position angesteuert werden. Die IK ist dafür die bessere Lösung. Diese Technik ist, wie der Name bereits zu erkennen gibt, ein Animationsverfahren, bei der die Richtung der Kettenmanipulation umgekehrt wird. IK ist im Vergleich zur "Vorwärtsgerichteten Kinematik" komplexer zu konfigurieren, dafür intuitiver und leichter zu animieren.
Bei der Inversen Kinematik wird eine Hierarchiekette mit einem IK-Steuerelement (IK-Handle bzw. Endeffector) kontrolliert. Die IK berechnet automatisch die Winkelstellungen der Gelenke.Je höher die Anzahl der Gelenke, desto komplexer die Berechnung und die Kontrolle für den Animator. Außerdem gibt es unendlich viele Möglichkeiten, die Winkelstellungen zu beschreiben. Nur wenige Lösungen sind für die Animation brauchbar. Die meisten Winkelkombinationen führen zu unbrauchbaren Lösungen. Zusätzliche Steuerungselemente wie Rotationsbeschränkungen und Ausrichtungsvektoren sind für die Kontrolle wichtig:

Roboterarm-Animation mit IK:
Die exakte Position der Hierarchiekette wird durch das IK-Steuerungselement festgelegt. Die Winkelstellungen werden je nach Gelenkseinstellungen berechnet. Das IK-Steuerelement (Translation für x, y und z) wird "gekeyed".
Beispiel: Ik/Roboter | swf | 12 kb

Bei einer IK-Kette können IK-Kontroller und oder das Anfangselement animiert werden. Die dazwischenliegenden Ketten werden in der Regel nicht animiert. Bei einem gängigen Charaktersetup sind meist mehrere IK-Ketten (Arme und Beine) miteinander verknüpft. Die li. Abb. zeigt einen einfachen Charakter, bestehend aus einer IK-Kette, der Stiegen steigt. Hier werden ausschließlich IK-Kontroller (rot) und Anfangspunkt (schwarz) animiert. Die selbe Animation mit FK zu animieren wäre sehr zeitaufwendig und wenig intuitiv.

Beispiel: Ik/Roboter auf einer Stiege| swf | 12 kb

Steuerung der Winkelstellungen bei IK

Bei einer IK-Kette sind die Winkelstellungen der einzelnen Glieder nicht eindeutig. Es entstehen mehrere Lösungen für die Konfiguration der Kette. Eine besondere Schwierigkeit bei der Berechnung von inverser Kinematik besteht darin, aus den vorhandenen Möglichkeiten die gewünschte Konfiguration zu finden. Vor allem dürfen die Konfigurationen der einzelnen Ketten bei der Animation nicht springen, sondern müssen flüssig ineinander übergehen. Meist definiert ein Vektor (Maya: Pole Vector ) die Ausrichtung. So ist z. B. bei einem Fuß oder Arm eine zusätzliche Kontrolle möglich. Durch weitere Einschränkungen wie z.B. Rotation Limits können die automatisch berechneten Werte besser gesteuert werden.

Abb. oben:
Zu besseren Kontrolle bestimmt ein Pole Vector die Ausrichtung der IK-Kette.
Abb. re.:
Ein Charaktersetup in Maya mit IK an den Armen und Beinen. Der Pole Vector kann zusätzlich als Kontrolle für die Animation herangezogen werden. Dadurch lassen sich Ellbogen und Knie individuell positionieren. Meist werden Arme und Beine in der Grundstellung bereits etwas abgewinkelt, bevor die IK hinzugefügt wird. Dadurch wird der bevorzugte Winkel automatisch richtig gewählt.

Die li. Abb. zeigt einen Kolben, der mit einer IK-Kette animiert wird. In diesem Fall wird nicht die IK-Steuerung, sondern das erste Gelenk (schwarz) animiert. Das erste Gelenk bewegt sich entlang der x-Achse hin und her. Die Inverse Kinematik berechnet die Winkelstellung zwischen dem zweiten und dritten Gelenk. Da sich die Ausrichtung der Kette ändert, muss der Pole Vector in diesem Fall zusätzlich animiert werden.

Beispiel: IK/Kolben mit animiertem Pole Vector | swf | 475 kb

Rotationseinschränkungen werden dazu verwendet, unerwünschte Winkelstellungen zu vermeiden. So dreht sich z. B. ein Scharniergelenk nur in einer Achse. Arme und Beine haben Rotationsgrenzen, die bei realistischen Animationen eingehalten werden müssen. Eine Rotationseinschränkung kann aber auch dazu führen, dass das gewünsche Endziel nicht erreicht wird. Bei den folgenden Beispielen werden div. Rotationseinschränkungen getestet.

Beispiel: IK/Roboter mit einer Rotationseinschränkung| swf | 20 kb

Beispiel: IK/Roboter mit 3 Rotationseinschränkungen | swf | 24 kb

Bei dem Beispiel mit 3 Rotationseinschränkungen ist es unmöglich, den zweiten Punkt zu erreichen. Der IK-Kontroller bewegt sich zwar an die gewünschte Position, die Kette verharrt jedoch in der maximalen Stellung, bis sich der IK-Kontroller wieder innerhalb der Beschränkungen bewegt.

Die Rotation kann gegebenenfalls auch auf Achsen eingeschränkt werden. So drehen sich z. B. diese Scharniergelenke nur auf einer Achse. Die Kugelgelenke sind durch weitere Limits so eingestellt, dass die Kugel in der Schale bleibt.

Beispiel: IK/Roboter mit Rotationsachseneinschränkung | mov | 1.111 kb

IK-Rotation Limit in Maya

IK / FK Switching

In manchen Fällen ist es sinnvoll, die Vorteile beider Techniken einzusetzen. Bei einem Arm-Hand-System wird bei exakten Positionen IK verwendet. Dreht sich der gesamte Arm im Kreis, oder schwingt bei einer Gehbewegung einfach nur mit, kann das durch Rotationen am obersten Gelenk (FK) einfacher gelöst werden. Bei IK/FK Switching kann zwischen IK und FK gewechselt werden. Durch ein zusätzliches Attribut (Maya: ikBlend) kann eine IK-Animation in eine FK-Animation weich überführt werden.

Ein weißer Handschuh befördert nach einer Tanzbewegung zwei Bälle in die Schachtel. Der Screenshot aus Maya zeigt eine Überblendung von IK auf FK. Im GraphEditor ist das Attribut ikBlend dargestellt.

IK/FK Switching / Playblast (Screencapture) | mov | 3.083 kb
  IK/FK Switching / Rendering | mov | 656 kb

Spline-IK

Bei sehr komplexen Ketten ist eine exakte Kontrolle nicht mehr möglich. Die Spline-IK-Animationstechnik verwendet eine Kurve als Basis für die Kettenform. Diese Technik eignet sich besonders gut für lange Ketten mit kurzen Abschnitten. Schlangen, Ketten, Haare, Seile oder Tentakel werden mit Spline-IK animiert. In der Regel kann die Komplexität der Kurve eingestellt werden.
Generell gilt: Eine Kurve mit wenigen Kontrollpunkten steuert eine komplexe IK-Kette. Die Anzahl der Kontrollpunkte ist individuell wählbar. Die Kurven-Komponenten können verschoben und animiert werden. Bei der Animation werden normalerweise Hilfsobjekte an die einzelnen Komponenten platziert, um diese einfacher selektieren zu können. Die Länge der Gelenkskette ändert sich nicht. Spline-IK bietet ein flexibleres Animationssystem als andere IK-Ketten. Die Knotenpunkte bzw. Helferobjekte können beliebig im 3D-Raum verschoben werden. Spline-IK Kurven können auch dynamisch berechnet werden. So werden unter anderem Haare oder Felle animiert. Die Kurven werden in dynamische Kurven umgewandelt. Kräfte wie Schwerkraft oder Wind wirken auf die Kurven ein, die wiederum eine IK-Kette Steuern.

Eine Schlange wird mit der Spline-IK-Technik animiert. Über die Kurve werden die Gelenke (Joints) animiert. Die Joints sind mit der Geometrie verbunden (Rigging / Skin).

Beispiel für IK-Spline-Animation | Schlange - Perspektive | mov | 1,13 MB
Beispiel für IK-Spline-Animation | Schlange - TopCam | mov, 1,42 MB
Beispiel für IK-Spline-Animation | Schlange

Beispiel für IK-Spline-Animation | Kette | mov, 1,44 MB

Die Kette ist durch eine dynamische Spline-IK animiert. Ein GravityField beeinflusst die Kurve, die wiederum die Jointkette steuert.
Kette mit dynamischer Spline-IK

Ergänzende und vertiefende Module