Jeder der sich schon mal mit der Inversen Kinematik (IK) auseinandergesetzt hat kennt auch die Probleme die dabei entstehen (Schwerpunkt setzen, die richtigen Achsen beschränken u.s.w.). Es ist ein schwieriges Thema, ich selber beherrsche die Inverse Kinematik auch nicht allzu gut, aber ich habe trozdem versucht dieses Tutorial zu schreiben. Ich hoffe, daß ich Euch damit helfen kann. Man sollte aber mit der hierarchischen Verknüpfung vertraut sein bevor man das Tutorial durcharbeitet. Seht Euch dazu doch mal das Tutorial von Andi (Character-Animation ForwardKinematik) an, da wird die hierarchische Verknüpfung gut und verständlich erklärt.

In diesem Tutorial werden wir einen Hydraulikbaggerarm animieren, wobei das Animieren des Baggerarmes eigentlich kein Problem ist. Aber die Hydraulik muss sich ja entsprechend mitbewegen, und da fangen dann die Probleme erst an. Wir bewegen also nur den Arm, die Baggerplattform wird dabei nicht bewegt. In diesem Tutorial werden wir nichts modellieren, alles was wir brauchen befindet sich in der beiliegenden Max Datei (siehe downloadbares zip-file!). Nun lasst uns aber beginnen!

1. Beginn & Anpassen der Schwerpunkte

Max starten und die Datei IKBa.Max laden! Wir sehen einen Baggerarm und die dazu gehörige Hydraulik (Ich hoffe man kann es als solche erkennen ;-) ). Links oben seht Ihr die Hydraulik, ganz links ein Shape, auf das ich den Modifikator "Drehverfahren" angewendet habe. Dadurch ist dann das Objekt rechts daneben entstanden (das Hydraulikunterteil). Wiederum rechts daneben ist der Hydraulikstab, den ich aus einem Zylinder und einem Spline, welchen ich extrudiert und anschliessend zusammen mit dem Zylinder zu einem Objekt ausgeblendet habe, erstellt habe.
Nochmals rechts daneben die komplette Hydraulik. Dem Baggerarm fehlt die Hydraulik, das werden wir nun ändern:

Das Anpassen der Schwerpunkte:

Wir beginnen erst einmal mit den Schwerpunkten: die müssen an den richtigen Stellen platziert werden. Die Schwerpunkte dienen auch als Drehungachsen. Dazu muss man genau wissen wie der Baggerarm sich später bewegen soll. Seht euch mal im Ansichtsfenster von Vorne den Arm genau an und findet heraus wo der Baggerarm seine Drehungachsen haben muss! Wechselt in das Ansichtsfenster von vorne.

Bei der Baggerplattform (grau) werden wir den Schwerpunkt in der Mitte der Plattform zentrieren:
Wählt dazu die Baggerplattform aus und wechselt zur Hierarchiepalette und klickt im Rollout "Schwerpunkt anpassen" auf "Nur Schwerpunkt beeinflussen". Dann unter Ausrichtung auf zuerst auf "An Objekt zentrieren" klicken und dann auf "An Welt ausrichten" klicken. Der Schwerpunkt ist nun ein Stückchen versetzt worden, und die Ausrichtung der xyz-Achsen entspricht dem Weltkoordinaten-System.

Jetzt wählt das Baggearmgelenk01 (rot) aus. Dann wählt Ihr das Lokale Koordinatensystem . Wie ihr erkennen könnt: der Schwerpunkt (um den sich der Arm ja auch drehen soll) befindet sich an der völlig falschen Stelle. Er muss unten am Bolzen01 (bei der Baggerplattform) sein. Also wieder in die Hierarchie-Palette : klickt unter Schwerpunkt anpassen auf "Nur Schwerpunkt beeinflussen", dann unter Ausrichtung "An Objekt zentrieren" und "An Welt ausrichten".
Ihr könnt nun manuell vorgehen und den Schwerpunkt mit "Auswählen und verschieben" zu dem Bolzen01 schieben und ihn dort an den Bolzen01 zentrieren (zommt dabei an den Bolzen ran!).

Es gibt aber auch eine komfortablere (und exaktere!) Methode des Ausrichtens: stellt sicher, daß Ihr das Baggerarmgelenk01 ausgewählt habt, und in der Hierarchiepalette "Nur Schwerpunkt beeinflussen" aktiviert ist. Achtet darauf, daß Ihr euch im Lokalen KoordinatenSystem befindet . Sucht nun in der Hauptsymbolleiste das Werkzeug ausrichten . Aktiviert es und klickt mit Eurem Mauspfeil (er hat sich in ein dünnes Fadenkreuz verwandelt), auf den Bolzen01. Ein Fenster erscheint, indem ihr die X- und Z-Postion anklickt, und sowohl das "aktuelle Objekt" als auch das "Zielobjekt" auf "Schwerpunkt" setzt. D.h., daß nun der Schwerpunkt des Baggerarms01 an dem lokalen Schwerpunkt des Bolzen01 ausgerichtet wird. Das paßt dann 100%ig.
Das ganze sollte nun wie im Bild oben rechts aussehen.

Nun wählt das Baggerarmgelenk02 (weiss). Auch hier ist der Schwerpunkt falsch plaziert. Also wieder das gleiche Spiel:
Hierarchiepalette
, unter "Schwerpunkt anpassen" auf "Nur Schwerpunkt beeinflussen", unter Ausrichtung "An Objekt zentrieren" und "An Welt ausrichten" klicken, und dann wieder verschieben. Diesmal hoch zu dem Objekt Bolzen04 (dort wo das Baggerarmgelenk01 mit dem Baggerarmgelenk02 verbunden ist). Zentriert den Schwerpunkt am Bolzen04!

Selbstverständlich könnt ihr auch wieder mit dem Ausrichten-Werkzeug arbeiten und die Schwerpunkte wie vorhin an der lokalen X- und Z-Achse ausrichten (achtet aber darauf, daß Ihr Euch im Lokalen Koordinatensystem befindet !). Egal wie Ihr es anstellt, das Ergebnis sollte dem im Bild links gleichen.

Bei dem Baggerarm haben wir jetzt die Schwerpunkte korrekt platziert. Ihr könnt dies überprüfen, indem Ihr den Baggerarm bewegt: deaktiviert den Modus "Nur Schwerpunkt beeinflussen", klickt auf Baggerarmgelenk01 (rot) und wählt in der Haupt-Symbolleiste "Auswählen und drehen" , bewegt den Mauszeiger über den ausgewählten Arm, und dreht ihn. Vergesst nicht die Aktion wieder Rückgängig zu machen!

Wechselt wieder in die Hierachiepalette und wählt das Hydraulikunterteil01(gelb) aus. Auch hier müssen wir den Schwerpunkt an der richtigen Stelle platzieren. Also wieder das Spielchen von vorne: unter "Schwerpunkt anpassen" auf "Nur Schwerpunkt beeinflussen", unter Ausrichtung "An Objekt zentrieren" und auf "An Welt ausrichten" klicken. Jetzt wieder den Schwerpunkt verschieben (zommt euch an das Hydraulikunterteil01 (gelb) herran, der Schwerpunkt sollte in der Mitte des unteren Zapfen liegen). Dieses Mal müßt Ihr den Schwerpunkt per Hand verschieben, das Ausrichten-Werkzeug ist hier nutzlos, da Ihr kein Zielobjekt habt, an dem Ihr den Schwerpunkt ausrichten könnt. Achtet aber darauf, daß Ihr den Schwerpunkt nur entlang der lokalen Z-Achse (sie zeigt nun nach oben, wenn man das Objekt von der Seite betrachtet) verschiebt. (Siehe Bild rechts).

Zommt wieder zurück und wählt den Hydraulikstab01 aus. Auch hier muß der Schwerpunkt richtig platziert werden. Also wieder unter "Schwerpunkt anpassen" auf "Nur Schwerpunkt beeinflussen" klicken dann unter Ausrichtung auf "An Objekt zentrieren" und auf "An Welt ausrichten" klicken, nun wieder den Schwerpunkt verschieben und zwar bis hoch zur Mitte des Loch.
Zuletzt kommen wir nun noch zu den vier Bolzen: wählt den Bolzen01 aus und zentriert seinen Schwerpunkt ("An Objekt zentrieren") und richtet ihn an der Welt aus, so wie ihr es bisher eben auch getan habt. Das gleiche macht ihr dann auch mit den restlichen Bolzen!

So, jetzt haben wir alle Schwerpunkte an den richtigen Stellen platziert! Vergesst nicht den "Nur Schwerpunkt beeinflussen"-Modus zu deaktiveren bevor Ihr weiterarbeitet!!

Einen aktuellen Zwischenstand der Szene findet Ihr in der Datei IKBa2.max.

2. Das Verlinken

Nun kommen wir zu dem Verlinken der einzelnen Objekte (das richtige Verlinken ist genauso wichtig wie das richtige Setzten der Schwerpunkte):

Die Baggerplattform01 (grau) ist unser übergeordnetes Objekt. Demnach müssen wir das Baggerarmgelenk01(rot) mit der Baggerplattform01 (grau) verknüpfen. Und zwar genau in diese Reihenfolge! Denn wenn ihr die Plattform mit dem Arm verknüpft ist der Arm auch das Übergeordnete Objekt und das wäre bei unserem Beispiel falsch. Zum Verknüpfen verwendet ihr das Vernknüpfen-Werkzeug . Wählt das Baggerarmgelenk01 (rot) aus, und zieht mit gedrückter linker Maustaste eine gestrichelte Linie zur Baggerplattform01 (grau). Immer nach dem Prinzip "vom Kind zum Papi". Das die Verknüpfung erstellt wurde, signalisiert ein kurzes weisses Aufblinken der Baggerplattform01 beim Loslassen der Maustaste.

Nun verknüpft Ihr Baggerarmgelenk02 (weiss) mit Baggerarmgelenk01 (rot), Baggerarmgelenk01(Rot) wird mit der Baggerplattform verknüpft (falls nicht schon geschehen).
Kommen wir dann zu den Bolzen: Bolzen01 wird mit der Baggerplattform verknüpft, Bolzen02 und Bolzen04 wird mit dem Baggerarmgelenk01. Zuletzt Bolzen03 mit Baggerarmgelenk02.
Wenn ihr jetzt den Arm01 auswählt und ihn dreht , folgen ihm seine Untergeordneten Objekte, macht die Aktion aber wieder rückgängig!

Nun zur Hydraulik: das Hydraulikunterteil(gelb) ist das übergeordnete Objekt des Hydraulikstabes. Also wie wird verknüpft? Richtig: der Hydraulikstab mit dem Hydraulikunterteil.

Bringt jetzt die Hydraulik in Position! Wählt dazu das Hydraulikunterteil aus und verschiebt es runter zur Baggerplattform. Wechselt nun ins Ansichtsfenster von Oben: dort könnt ihr eine Kerbe in der Baggerplattform erkennen. Verschiebt das Hydraulikunterteil bis zu Mitte der Kerbe, wechselt wieder in dei Vornansicht und verschiebt das Hydraulikunterteil bis der untere Zapfen richtig in der Kerbe sitzt.
Jetzt befindet sich die erste Hydraulik an der richtigen Stelle.Wir brauchen aber noch eine Hydraulik für den zweiten Baggerarm. Dazu klonen wir einfach die erste: Wählt das Hydraulikunterteil und den Hydraulikstab aus, klickt in der Menüleiste auf "Bearbeiten" und dann auf "Klonen", das Klonoptionsfenster öffnet sich. Bestätigt einfach mit OK.
Ihr habt nun eine Kopie der ersten Hydraulik erstellt, die Ihr hoch zum Baggerarmgelenk01 verschiebt (oben auf dem Arm befindet sich eine Auswölbung, da muss der untere Zapfen des Hydraulikunterteil hinein, ungefähr bis zur Hälfte des Zapfens). Schaut auch im Ansichtsfenster von oben und positioniert die Hydraulik. Ihr könnt dazu auch wieder das Ausrichten-Werkzeug verwenden. Stellt sicher, daß Ihr euch im LokalenKoordinaten-System befindet , und richtet die Hydraulik an der entlang lokalen Y-Achse an den Schwerpunkten aus.

Jetzt haben wir auch die zweite Hydraulik an der richtigen Stelle, wir müssen die Hydraulik aber noch verknüpfen. Wählt das Hydraulikunterteil01 aus und verknüpft es mit der Baggerplattform (grau). Dann das (geklonte) Hydraulikunterteil02 mit dem Baggerarmgelenk01(rot) verknüpfen (die Hydraulikstäbe werden gleich mit dem IK Setup verknüpft).

Nun müssen die Hydraulik noch an den Armen anpassen. Das ist etwas Fummelarbeit: Baggerarmgelenk drehen, Hydraulik drehen, so lange bis ihr die Löcher in den Hydraulikstäben, an den Bolzen angepasst habt (die Hydraulikstäbe solltet ihr dabei aber nicht aus den Hydraulikunterteilen ziehen).
Wenn Euch die 0,5° als minimale Drehschritteinstellung dabei nicht reichen sollte, könnt Ihr im Menü "Anpassen"->Einstellungen->Ansichtsfenster wählen, und dort den "Drehschritt" beispielsweise auf 0,1 herabsetzen. Die Drehbewegungen sind dann feiner zu steuern. Euer Baggerarm sollte nun etwa so wie im Bild nebenan aussehen. Einen Zwischenstand der Szene spiegelt die Max Datei IKBa3.max wieder.

3. Das Komplettieren der Verknüpfungen:

Jetzt müssen wir die Hydraulikstäbe mit den Armen verknüpfen, beziehungsweise mit den dazugehörigen Bolzen. Aber die Hydraulikstäbe sind ja eigentlich schon mit den Hydraulikunterteilen verknüpft.... wie soll man sie also nun noch mit den Bolzen verknüpfen, ohne die bereits bestehende Verknüpfung mit den Hydraulikunterteilen aufzuheben? Das würde bedeuten, daß wir die Hydraulikstäbe mit zwei Objekten verknüpfen würden. Das funktioniert mit "Auswählen und Verknüpfen" jedoch nicht. Wenn wir z.B. Hydraulikstab01 mit Bolzen02 verknüpfen ist der Stab auch NUR mit dem Bolzen verknüpft und somit nicht mehr mit dem Hydraulikunterteil und die IK würde nicht mehr funktionieren. Hmmm... was machen wir jetzt?

Wir benutzen dabei die Bindefunktion der Inversen Kinematik: öffnet dazu in der Hierachiepalette das Rollout "IK", wechselt dann in das Perspektiv-Ansichtfenster (Drahtgittermodus) und zommt an Bolzen02 heran. Wählt den Hydraulikstab01 aus und klickt unter IK, im Rollout "Objektparameter" "An Folgeobjekt binden" auf die Schaltfläche Binden. Wenn sie grün (aktiv) ist bewegt Ihr den Mauszeiger über den Hydraulikstab01 haltet die Maustaste gedrückt und bewegt den Mauszeiger über Bolzen02. Nun loslassen und wieder auf "Binden" klicken um den Modus wieder zu deaktivieren. Wir haben jetzt den Hydraulikstab01 mit dem Bolzen02 als Folgeobjekt verbunden, ohne die IK-Verknüpfung zu dem Hydraulikunterteil (gelb) aufzuheben. Das gleiche machen wir mit dem geklonten Hydraulikstab02 und Bolzen03.

Wenn wir jetzt das Baggerarmglied02(weiss) auswählen, die IK in der Symbolleiste aktivieren ( ) und es bewegen würden, würde die ganze Hierarchie unkontrolliert im Raum herumzappeln. Aus diesem Grund müssen die Bewegungs-Achsen der einzelnen Baggerglieder beschränkt werden:

4. Das Beschränken der Achsen:
Kommen wir nun zum Beschränken der Achsen. (Das Beschränken und alle anderen Änderungen im IK Rollout wirken sich nur auf Objekte aus die hierarchisch verknüpft sind und wenn die Schaltfläche -Inverse Kinematik aktivieren/deaktivieren- (Symbolleiste) aktiviert wurde!)


Wir werden jetzt die einzelnen Achsen mittels IK beschränken: wählt die Baggerplattform (grau) aus, wechselt in die Hierarchiepalette , klickt auf "IK" und geht runter bis zum Rollout "Drehgelenke". Hier kann man die drei Achsen X,Y,Z beschränken: Da die Baggerplattform sich nicht mitbewegen (bzw. -drehen) soll, deaktivieren wir alle drei Achsen, indem für alle drei Achsen die Box "aktiv" deaktiviert wird. Das gleiche machen wir dann noch mit den vier Bolzen.

Wählt jetzt das Baggerarmgelenk01(Rot) aus: der Arm soll sich ja nur um die Y-Achse drehen (nicht vergessen: wir haben alle Objekte an der Welt ausgerichtet. Also müssen wir uns an dem Achsenkreuz orientieren, das in jedem Ansichtfenster links unten zu sehen ist, dem Weltkoordinatensystem). Deaktiviert die Achsen X und Z.

Die Y Achse wird nun beschränkt: aktiviert dazu für die Y-Achse das Kästchen "Beschränkt". Wenn ihr jetzt den Wert "Von:" erhöht, sollte das Baggerarmgelenk01 sich neigen und wenn ihr den Wert senkt, dreht sich der Arm nach oben. Gebt mal im Feld "Von:" den Wert -10, und unter "Bis:" den Wert 10 ein.

Wählt jetzt das Baggerarmgelenk02 (weiß) aus, und aktiviert den IK-Modus in der Symbolleiste . Nun verschiebt das Baggerarmgelenk02 (weiss) nach oben und unten. Ihr könnt sehen das das Baggerarmgelenkd01(Rot) nur noch beschränkt bewegt werden kann. Macht die Aktion wieder Rückgängig und deaktiviert in der Symbolleiste den IK-Modus wieder .

Wählt wieder das Baggerarmgelenk01(Rot) aus. Beim Beschränken sollte man sich immer genau überlegen, wie weit ein Objekt sich drehen darf. In unserem Fall müssen wir darauf achten, daß die Drehung der Arme mit der Hydraulik übereinstimmt, also die Hydraulikstäbe z.B. nicht zu weit aus den Hydraulikunterteile herrausragen und somit in der Luft hängen oder zu tief in den Hydraulikunterteilen versinken.

Benutzt diese Werte für das Baggerarmgelenk01(Rot):

X, und Z-Achse deaktivieren
Y-Achse beschränken auf "Von:" (-40), "Bis:" (14,5).

Wählt das Baggerarmgelenk02 (weiss) aus und:

deaktiviert die Drehungsachsen X,Z und
beschränkt die Y-Achse "Von:" (-42,5), "Bis:" (50)

Wechselt ins Ansichtfenster von Vorn und klickt in der Erstellungspalette auf Helfer und wählt "Dummy" aus. Erstellt nun unterhalb des Baggerarmgelek02 (weiss) dort wo eigentlich die BaggerSchaufel wäre, einen kleinen Dummy und verknüpft ihn mit dem Baggerarmgelenk02 (weiss). Benutzt dabei den "Auswählen und Verknüpfen" Button aus der Symbolleiste.

Wählt den Dummy aus und aktiviert den IK-Modus und verschiebt den Dummy. Wenn alles geklappt hat müsste der komplette Arm dem Dummy folgen. Dabei sollte er sich wie ein richtiger Baggerarm bewegen, bis auf die Hydraulik, die noch etwas unkontrolliert in der Luft rumhängt.... aber das machen wir jetzt:

Macht die Aktion wieder Rückgängig und deaktiviert den Ik-Modus wieder! Wechselt ins Ansichtfenster von Vorn, und öffnet in der Hierachiepalette das Ik-Rollout (Drehgelenke). Wählt das Hydraulikunterteil01 aus. Da wir ja die Baggerarmgelenke beschränkt haben, müssen wir auch dort die richtigen Achsen aktivieren, beziehungsweise die falschen deaktivieren.
Wir wissen also das das Baggerarmgelenk01 (rot) sich nur um die Y Achse dreht. Da die Hydraulik01 sich mit dem Gelenk mitbewegt, aktivieren wir auch hier nur die Y-Achse des Hydraulikunterteil01. Die X- und Z-Achse werden deaktiviert (eine Beschränkung der Y-Achse ist hier nicht nötig).

Das gleiche bei dem Hydraulikunterteil02: im Rollout Drehgelenke die Y-Achse aktivieren und X und Z deaktivieren.

Wählt nun Hydraulikstab(01) aus. Bei den Hydraulikstäben brauchen wir keine Drehungsachse, weil sie sich mit den Hydraulikunterteilen mitdrehen. Also dort alle drei Drehungsachsen X,Y, und Z deaktivieren. Schliesst nun das Rollout Drehgelenke und öffnet das Rollout Gleitgelenke:
Da die Hydraulikstäbe sich in den Hydraulikunterteilen auf- und abbewegen sollen, müssen wir eine Gleitgelenkachse aktivieren. Das auf- und abbewegen geschieht über die Z Achse (zur Kontrolle: wechselt in das lokale Koordinatensystem , die blaue Z-Achse des Hydarulikstabes zeigt in die Richtung in die er auch gleiten sollte).
Also im Ik-Rollout unter Gleitgelenke die X,Y Achsen deaktiviert lassen, und nur die-Z Achse aktivieren (auch hier brauchen wir nicht beschränken)!

Speichert die Szene unter IKBAselfmade ab! Wählt den Dummy aus und aktiviert den IK-Modus . Wenn wir jetzt alles richtig gemacht haben und den Dummy bewegen müsste sich der Arm wie ein richtiger Baggerarm verhalten. Auch die Hydraulik sollte sich korrekt mitbewegen. Soweit so gut. Macht die Aktion wieder Rückgängig und deaktiviert den IK-Modus wieder, wechselt ins Ansichtfenster Vorn. (Einen Zwischenstand der Szene gibt die Max-Datei IKBa4.max wieder).

4. Das Animieren.

Nun werden wir den Arm animieren! Maximiert das Ansichtfenster Vorn und aktiviert den IK Modus . Wählt den Dummy aus und aktiviert den Animationsmodus. Wechselt nun zu Frame 33 und verschiebt den Dummy nach oben bis sich die Baggerarmgelenke nicht weiter bewegen lassen. Wechselt dann zu Frame 66 und verschiebt den Dummy ganz nach unten so das das Baggerarmgelenk02 (weiss) nach innen geknickt ist, wieter zu Frame 100 und den Dummy wieder nach oben.

Deaktiviert den AnimModus wieder und spielt die Animation ab, auf den ersten Blick sieht alles ganz gut aus aber wenn ihr genau hinschaut seht ihr das die Hydraulikstäbe sich nicht korrekt bewegen.

Das könnt Ihr verhindern in dem ihr die IK berechnen lasst. Wir sollten immer noch den Dummy ausgewählt haben, und uns noch in der Hierachiepalette befinden. Schaut mal oben im IK Rollout auf Inverse Kinematik: mit dem Button "IK anwenden" kann man eine IK Bewegung berechnen lassen, d.h. die Einzelschritte werden genauer berechnet, für jedes einzelne Glied der IK-Kette werden eine Menge Keys erstellt.

Aktiviert dabei "Ansichtfenster aktualisieren" (damit kann man das ganze in den Ansichtfenstern beobachten) und klickt auf "IK anwenden" (selbstverständlich müsst Ihr immer die IK-Kette zuerst animieren, bevor ihr "IK anwenden" anwenden könnt).

Wenn ihr jetzt die Animation abspielt ist das Ergebniss perfekt. (maxdatei: IKBA_anim.max)

Tja das wars eigentlich auch schon, natürlich bin mit diesem Tutorial nicht auf alle Eigenschaften der Inversen Kinematik eingegangen aber vielleicht ist dem einen oder anderen das Prinzip der Inversen Kinematik jetzt klar geworden.

-Spike-

 

© 2000 by Marcus "Spike" Schöffel & lightrays.de