# Blender 3D/ Tutorials/ Armatures/ Kolben und Zylinder

* Diese Seite bezieht sich auf Blender v2.42a

## Zylinder, Kolben und Schwungrad

Ein Setup wie das aus Abbildung 1 ist z.B. für eine Dampfmaschine typisch. Die korrekte Animation ist allerdings überraschend schwierig, da hier eine Rotationsbewegung (des Schwungrades) in eine horizontale Hin- und Herbewegung (des Kolbens) übersetzt werden muss. Das alleine wäre noch recht einfach zu erreichen, aber die Pleuelstange muss mit dem Kolben verbunden bleiben. Um die Bewegung richtig zu realisieren benötigen wir drei Emptys und zwei Armatures mit jeweils zwei Bones.
Die horizontale Richtung ist im Beispiel die Y-Richtung, wenn das bei Ihrem Modell anders ist, müssen Sie jeweils Y durch ihre horizontale Richtung ersetzen.

### Das Vorgehen im Einzelnen

* Wenden Sie auf alle mechanischen Teile Strg-A->Apply scale and rotation im Objekt-Modus an.
Dann erleben Sie später bei Rotationen keine Überraschungen. Sie sollten alle Objekte in einer der festgelegten Ansichten einfügen, damit alle Achsen gleich ausgerichtet sind.
Wir benötigen ein Objekt, welches der Rotation des Rades folgt. Hier wird ein Empty benutzt, welches an einen Vertex geparentet wird.
* Wechseln Sie in den Edit-Modus des Schwungrades. Wählen Sie einen Vertex aus, der in der Mitte des Halters für die Pleuelstange sitzt.
* Setzen Sie den Cursor auf den Vertex (Shift-S->Cursor->Selection).
* Wechseln Sie in den Objekt-Modus und fügen Sie ein Empty ein. Das Empty heißt hier ERotation.
* Wechseln Sie wieder in den Edit-Modus des Schwungrades. Der Vertex ist vermutlich noch ausgewählt, wählen Sie nun mit Strg-RMT das Empty aus und drücken Strg-P->Make vertex parent (Abbildung 2).
Wir brauchen noch zwei weitere Emptys, die fügen wir jetzt ein (Abbildung 3).
* Platzieren Sie das zweite Empty (EGelenk) auf das Zentrum des Gelenkes zwischen Pleuelstange und Kolben.
* Das dritte Empty (ESteuerung) platziert man in der Nähe des Gelenkes.
* Wählen Sie zunächst EGelenk, dann mit Shift-RMT ESteuerung aus und machen mit Strg-P ESteuerung zum Parent.
Nun werden zwei Armatures mit jeweils zwei Bones eingefügt. Zunächst eine Hilfsarmature, die für die Übersetzung von Rotationsbewegung in horizontale Bewegung sorgt, und zum Schluss die Armature, die Pleuelstange und Kolben bewegt. Der Cursor sollte sich, so wie in Abb. 3 zu sehen, noch auf dem Empty ERotation befinden, sonst müssten Sie den Cursor wieder dahin setzen.
* Fügen Sie eine Armature hinzu (AHelfer). Die Wurzel des ersten Bones (BHelfer1) befindet sich an der Position von ERotation, die Spitze positionieren Sie auf dem Empty EGelenk (immer erst Empty auswählen, Cursor->Selection, dann Bonespitze auswählen, Selection->Cursor).
* Extrudieren Sie einen weiteren kleinen Bone (BHelfer2) in horizontaler Richtung.
BHelfer2 ist automatisch Child von BHelfer1. Die zweite Armature, die für die eigentliche Bewegung von Kolben und Pleuelstange zuständig ist, wird in umgekehrter Richtung eingefügt, d.h. in unserem Beispiel von rechts nach links.
* Positionieren Sie den Cursor in der Nähe des Zylinders auf dem Kolben.
* Fügen Sie eine Armature hinzu (AGestaenge).
* Die Spitze des ersten Bones (BKolben) wird auf EGelenk platziert.
* Der Bone wird extrudiert, und die Spitze des neuen Bones (BPleuelstange) auf ERotation platziert.
Jetzt wird die verbindende Logik zwischen Objekten, Emptys und Bones hinzugefügt.
* Fügen Sie zu BHelfer1 einen Copy Location Constraint auf ERotation hinzu. Wechseln Sie dazu in den Pose-Modus der Armature AHelfer und wählen Sie BHelfer1 aus. Klicken Sie auf dem Panel Constraints in den Object Buttons auf Add Constraint->Copy Location und tragen in das Feld Ob: den Empty ERotation ein.
* BHelfer1 bekommt noch einen zweiten Constraint: Track To auf EGelenk (Abbildung 5).
Damit folgt die Wurzel des Bones der Rotation des Schwungrades, die Spitze dem Gelenk (allerdings mit leichten Abweichungen nach oben und unten). Der Trick ist nun, dass die Position des Bones BHelfer2 die horizontale Position des Kolbens festlegt. Wir müssen die horizontale Position nur noch "extrahieren", auch dies geschieht wieder mit einem Copy Location Constraint, aber diesmal nur in Y-Richtung. Leider gibt es für den Copy Location Constraint keinen Offset, sonst könnten wir uns ein Hilfsempty sparen.
* Fügen Sie zu ESteuerung ein Copy Location Constraint in Y-Richtung auf das Objekt AHelfer->BHelfer2 ein. Sie müssen also die Felder X und Z inaktiv machen (Abbildung 6).
* Machen Sie ESteuerung zum Parent von AGestaenge.
Das Gestänge übernimmt so die horizontale Bewegung von ESteuerung, welches sie wiederum von BHelfer2 erhält.
Wir sind fast fertig.
* Nun muss nur noch der Bone BPleuelstange mit einem Track To Constraint auf ERotation ausgerichtet werden. Fügen Sie den entsprechenden Constraint ein.
* Parenten Sie den Kolben und die Pleuelstange an die entsprechenden Bones.

### Die Beziehungen zwischen den Objekten im Überblick

* Schwungrad ist Vertex Parent von ERotation.
* BHelfer1 hat ein Copy Location X/Y/Z Constraint auf ERotation.
* BHelfer1 hat ein Track To Constraint auf EGelenk.
* ESteuerung hat ein Copy Location Y Constraint auf BHelfer2.
* ESteuerung ist Parent von AGestaenge.
* ESteuerung ist Parent von EGelenk.
* BPleuelstange hat ein Track To Constraint auf ERotation.
* BKolben ist Parent von Kolben.
* BPleuelstange ist Parent von Pleuelstange.
Die Parent-Child Beziehungen zwischen den Bones ergeben sich automatisch durch das Extrudieren, alle anderen Beziehungen müssen Sie selbst einfügen.

### Abschlussarbeiten

* Animieren Sie die Rotation des Schwungrades.
Das treibende Objekt ist das Schwungrad, alle anderen Bewegungen sind mit seiner Rotation synchronisiert.
Wenn Sie alles richtig gemacht haben, sollte ihre Animation etwa so aussehen wie in Abbildung 8.

### Stark vereinfachte Lösung

Da in den neuesten Blenderversionen die Copy Location Constraints einen Offset-Button besitzen, ist eine einfachere Lösung möglich. Im Prinzip müssen Sie dasselbe machen wie im obigen Tutorial angegeben, allerdings kommt man komplett ohne Emptys und Armatures aus.
Die Zentren des Kolbens und der Pleuelstange müssen zuerst auf das jeweilige Gelenk gelegt werden. Die Pleuelstange bekommt den mittleren Vertex des Schwungradgelenks als Vertexparent und einen Track To Constraint mit dem Kolben als Target. Wahrscheinlich müssen Sie die Stange noch ausrichten, unter Umständen im Edit-Mode. Der Kolben erhält einen Copy Location Constraint mit dem Schwungrad als Target Object und dem mittleren Vertex des Schwungradgelenks als Vertex Group, nur Y darf aktiviert sein. Durch Drücken des Offset-Buttons, können Sie den Kolben nach Belieben verschieben. Benutzen Sie das Schwungrad um die Animation zu kontrollieren.

## Links

Downloadmöglichkeit eines Rigs von qp aus dem Blendpolis Forum (PleuelGelenk.blend)