01. Grundlagen von Rigging

Das Rigging ist ein Prozess, der uns erlaubt statische Meshes zu verformen ohne verlust der ursprünglichen Form.

Gerigt wird alles was sich komplex bewegen soll, das betrifft lebende Wesen wie Menschen, Tiere oder Monster aber auch gegenstände wie Flugzeuge oder Maschinen.

Wir werden uns in diesen Kurs, nach den Grundlagen, auf das Charakter Rigging Konzentrieren wobei ihr allerdings das Gelernte auf alles anwenden könnt.

1.01 Parenting und Bones

Parenting ist eine der Grundlagen beim arbeiten mit 3D Objekten. Wenn Objekte an andere geparentet werden, werden diese zu Child-Objekten von diesen und übernehmen so vor allen die Transform-Eigenschaften (Position, Rotation und Skalierung).

Auf den Bildern ist die rote Kugel ein Child vom gelben Würfel, erkennbar im Outliner und durch die Relationshipline im Viewport. Wird der gelbe Würfel nun Transformiert, transformiert sich auch die rote Kugel in relation zum Würfel.

Die Idee hinter Rigging ist eine sehr simple. Wie erstellen eine Armature (Objekt aus mehreren Bones) und Parenten ein Mesh an diese. Das besondere hierbei ist das ein Mesh das Child von mehreren Bones sein kann. Dadurch das die Polygone des Meshes bestimmten Bones zugewiesen werden ist eine verformung des Meshes möglich.

Ist ein Mesh an eine Amature geparanted kann man, wenn man im Edit Modus ein Vertex markiert, sehen zu wie viel Prozent ein Vertex einen Bone folgt.

Ist ein Mesh an eine Amature geparanted kann man, wenn man im Edit Modus ein Vertex markiert, sehen zu wie viel Prozent ein Vertex einen Bone folgt.

Aufgabe 01

1.02 Constraints

Im Pose Mode der Amature unter Bone Constraint Properties kannst du einzelnen Bones Constraints zuweisen. Constraints sind Bedingungen die die Bones zu bestimmten Aktionen Zwingen oder in diesen Beschränken. Mit ihnen können komplexe mechanismen aufgebaut werden die einen beim animieren helfen.

Alle Bone Constraints in den Bone Constraint Properties.

Für manche Constraints braucht man extra Bones die jedoch nicht das Mesh deformieren sollen. Daher unterteilt Blender die Bones in Deforming Bones und Control Bones.

Aufgabe 02

2. Deformation Armature

Nun widmen wir uns unseren Charakter. Die Armature für einen Charakter besteht aus einer Deformations Ebene und einer Control Ebene. Hier erstellen wir als erstes eine Deformation Armature, diese wird später auch als einzige Exportiert. Die Deforming Bones beim Body orientieren sich hierbei stark am Skelett des Menschen.

Aufgabe 03

03. Target Armature

Die Target Armature ist eine Kopie der Deformation Armature ohne die Deformation Eigenschaften. Sie dient nur dafür um die Deformation Armature mit einfachen Constraints zu bewegen damit es später zu keinen fehlern kommt. Fangt diesen Schritt erst an wenn ihr mit den Positionen der Deformations Bones zufrieden seid, spätere Änderungen können zu komplikationen führen.

3.01 Hilfreiche Add-on

An diesen Punkt werden wir uns zwei kostenlose Add-Ons runterladen. Ihr erspart euch viel Arbeit und Ärger wenn ihr euch diese runterladet. Geht einfach auch die jeweiligen Gumroad Seiten und tippt beim Preis 0$ ein und geht dann auf Purchase.

Bone Manager

The biggest addition to the addon with this release is a set of Rig UI creation tools which enable the user to assign bone layers as buttons on a live Rig UI panel. The finalized Rig UI configuration can be written to a standalone script which works independently of the addon.

Simple Renaming Panel

Simple Renaming Panel is a small, but powerful tool to rename more objects at once. The tool includes basic functionalities of adding suffixes, prefixes, search and replace, add suffixes depending on the object type, and much more.

Aufgabe 04

Tip

Bei With Automatic Weights bekommen die Meshes ein generierte Wichtung auf Grundlage der Entfernung der Bones, dies kann manchmal ein guter Anfang sein für das eigene Weight Painting. With Empty Groups generiert nur leere Vertex Groups, hier muss alles selber gemacht werden.

04. Mechanism und Control Bones

Dieser Abschnitt ist der längste und komplizierteste. Und genau dieser wird gerne bei fast alles Online Tutorial rausgelassen. Wir Bauen in diesem Abschnitt unsere Controller fürs Animieren später und die dazugehörigen Mechanismen. Hier ist es besonders wichtig die Relationships(Parents und Constraints) der Bones zu beachten damit am Ende alles so Funktioniert wie es soll.

4.01 Torso Controller

Nach der Root ist der Torso das erste was Animiert wird da alle anderen Bones dem Torso folgen. Im folgenden Bild sieht man den logischen Aufbau hinter den Torso Controller.

tgt Bones

Torso Controls

Pfeil Legende:

Parent Keep Offset

Copy Rotation

Aufgabe 05

Tip

Alle Control Bones die wir bewegen sollten mit den World Space Koordinaten alignt sein.

4.02 Driver and Custom Properties

Driver sind abhängigkeiten zwischen Values. Sie können überall eingefügt werden, wo Blender Zahlen als input will wie z.B. bei allen Transformationen.

Mache hierfür einfach einen rechtsklick auf das Feld und klicke auf Add Driver.

In diesem Fall beeinflusst die Y Position der Sphere die Y Skalierung des Cubes plus eine Einheit.

Komplexe Driver kann man am besten im Fenster Driver bearbeiten.

Custom Properties findet man an mehreren Stellen im Properties Fenster. Dort kann man einfach auf New klicken und dann auf das Zahnrad um Name und Werte einzustellen.

Custom Properties sind auch nur Werte(floats, Arrays oder strings) die man benutzen kann für z.B. Driver.

Stelle die Variable des Driversauf Single Property und Füge bei Path: das Kopierte ein von Copy Data Path.

4.03 Head und Neck

Von dem Head und Neck Controller wollen wir das sich manchmal wie der Root Bone Rotieren ohne die Drehung des Körpers zu übernehmen. Zum Beispiel beim Laufen hält ein Mensch seinen Kopf immer gerade entgegen der Körperbewegung. Manchmal wollen wir aber den Kopf selber steuern. Beides ist mit dem folgenden Control Rig möglich. An Hand eines vereinfachten Beispiels zeige ich hier die Mechanik dahinter.

Der Head Bone wird vom Torso getrennt. Dafür kommt ein intermediate Bone und ein kleinerer mechanism Bone an die Stelle. Damit der Head nicht mehr dem Torso folgt.

Der Head wird mit Keep Offset an den mch-Head parented und dieser mit Keep Offset an Root. So übernimmt der Head die Transformation von Root.

Der Head Bone wird vom Torso getrennt. Dafür kommt ein intermediate Bone und ein kleinerer mechanism Bone an die Stelle.

Pfeil Legende:

Parent Keep Offset

Parent Connect

Copy Rotation/Copy Lokation

Über die Influence der Constraints kann man nun bestimmen ob der mch-Head die Rotation vom Root oder Vom int-Head übernimmt.

Aufgabe 06

Tip

Im X Ray Mode (“alt + z”) lassen sich Bones die ineinander Stecken besser selektieren.

4.04 Leg

Bei dem Leg Rig nutzen wir das erste mal Inverse Kinematic in diesen Rig. Diese werden im gegensatz zu allen anderen Constraints nicht Grün sondern Gelb dargestellt. Der Sinn ist es mehrere Glieder(Bones) in eine Richtung zu brechen. Im Fall eines Meines müssen wir so nur den Fuß positionieren und das Bein Positioniert sich von allein.

Pfeil Legende:

Parent Keep Offset

Parent Connect

Copy Rotation/Copy Lokation

Die IK Chain brauch einen Bone zur orientierung wo sie enden soll. In diesem Beispiel ist dies ctrl-IK. Damit der Food der Rotation des Controllers folgt ist er an diesen Geparented.

Damit die IK Chain weis in welche richtung sie Knicken soll braucht es einen Pole Bone. Dieser ist ebenfalls an Ctrl-IK geparented.

Aufgabe 07

4.05 Foot

Das Foot Rig soll für uns vor allen das Abrollen des Fußes erleichtern. So das wir ein Controller für die Position haben und einen für das Abrollen.

Hier stellen die beiden Grünen Bones den Fuß da und der graue Bone den Controller. Die beiden Grünen Bones haben die Constraints Limit Rotation und Copy Rotation von dem Controller Bone, alle constraints sind auf Local Space gestellt. Beim kleinen grünen Bone ist es noch wichtig die X-Achse zu Invertieren im Copy Rotation.

Rotiert man den Control Bone über die X-Achse rollt der lange grüne Bone sich entweder über seinen Head oder seinen Tail ab. Durch Limit Rotation bewegen sich die beiden Bones nicht in den Minusbereich.

Pfeil Legende:

Parent Keep Offset

Parent Connect

Copy Rotation/Copy Lokation

Aufgabe 08

4.06 Stretch Legs

Wir wenden uns noch mal den Beinen zu. Durch den Fuß Controller ist uns aufgefallen das sich der Fuß vom Bein löst. Damit das nicht passiert sorgen wir nun dafür das die Beine sich Stretchen durch die IK Chain. Des weiteren löst das Stretchen der beine das Popping(ein unschöner Effekt bei Geraden beinen) der Knie.

Inverse Kinematics haben von sich aus bereits diese Stretch funktion. Allerdings Skaliert diese in alle Richtungen. Unser Rig umgeht dies.

Aufgabe 09

4.07 Arm

Beim Rig für die Arme kommt wieder eine neue Besonderheit hinzu, wir bauen zwei Rigs für die Arme eines mit Inverse Kinematics und eins mit Forward Kinematics. Zwischen diesen beiden können wir je nachdem was wir brauchen hin und her schalten. Bei Forward Kinematics steuern wir den Arm Glied für Glied.

Pfeil Legende:

Parent Keep Offset

Parent Connect

IK

FK

Die IK Chain für den Arm wird genauso angelegt wie für das Bein.

Switch IK-FK

Hier bauen wir in die Schulter einen Follow ein wie schon beim Head.

Beim Switch machen wir uns zu nutze das der unterste Constraint immer die darüber überschreibt. So braucht es nur einen Driver auf dem Untersten Constraint um zu wählen welchem Constraint gefolgt werden soll.

Aufgabe 10

4.08 Hand

Das Hand Rig ist von der Logik überraschend einfach, da es kaum Automatisierungen gibt. Fast alles können wir direkt ansteuern.

Wir haben drei funktionen in dem Hand Rig. Als erstes steuern wir all Palm01 Target Bones mit nur einem Controller mit Copy Rotation.

Für alle Palm02 und Thumb01 benutzen wir einfach einen Copy Transforms, da wir diese direkt steuern wollen.

Für alle Palm 03 und 04 nutzen wir einen Controller der diese nur auf der X-Achse Rotiert, da diese Glieder sich nur gemeinsam krümmen können.

Pfeil Legende:

Parent Keep Offset

Copy Rotation/Copy Lokation

Aufgabe 11

An der Stelle könne man bereits komplett mit diesem Rig Animieren. Es ist quasi Fertig. Im letzten Kapitel kümmern wir uns nur noch ums aussehen des Rigs für einen besseren Animations Workflow. Natürlich lassen sich noch Zahllose weitere Funktionen einbauen, je nachdem was für den Animator wichtig ist.

05. Aussehen

Da es weder schön noch praktisch ist mit den dicken Joints im Charakter zu animieren, verpassen wir ihnen eigene Shapes und eine farbliche Unterteilung. Und schauen was uns der Bone Layer Manager für Animation bietet.

5.01 Rig UI in Bone Layer Manager

Rig UI ist eine vereinfachte Ansicht der Bone Layer die du selber sortieren kannst. Ich sortiere gerne nach dem Körperbau von oben nach unten. Und gespiegelte Layer nebeneinander.

Neben der Rig UI zeigt uns der Bone Layer Manager auch die Custom Properties der selektierten Bones an.

Aufgabe 12

5.02 Bone Groups

Bone Groups sind eine weitere möglichkeit um Bones zu gruppieren und zu unterscheiden. Wir werden die Einfärbe-Funktion davon nutzen.

Unter Objekt Data Properties ist der Bone Group Tab. Füge mit dem Plus einfach neue Bone Groups hinzu und benenne diese, dazu kannst du dich noch für ein Color Set entscheiden. Selektiere einfach die Bones die in die Gruppe sollen und Klicke auch Assign.

5.03 Custom Shapes

Ihr könnt euren Bones alle Formen geben die ihr wollt. Ihr baut dafür einfach Meshes vor die ihr im Pose Mode unter Bone Properties>Viewport Display>Custom Shape hinzufügt. Achtet beim bauen am besten darauf das die Koordinaten des Objekts mit denen des Bones übereinstimmen.

Ich benutze am meisten den Circle und generell Strich Objekte. Ihr könnt aber alles mögliche benutzen. Gelenke wie Hals, Arme oder Finger haben bei mir fast immer nur Ringe. Bei speziellen Funktionen wie den Bend Controllern versuche ich eine Form zu wählen die die Funktion erklärt.

Er reicht aus einen Ring zu haben und diesen in den Custom Shape einstellungen zu Drehen und Skalieren.

06. Weights

Jetzt wo das Rig fertig ist gibt es noch ein paar Tips wie Weights in Blender Funktionieren.

6.01 Vertex Groups

In Blender hat jedes Mesh unter Object Data Properties das Feld Vertex Groups. In einer Vertex Group können Vertices des Meshes mit einer Wichtung(Weights) von 0 bis 1 gespeichert werden. Wenn wir ein Mesh an eine Armature parenten bekommt das Mesh für jeden def Bone in der Armature eine Vertex Group. Und ein Amature Modifier der für die Deformation sorgt.

Wenn ihr einen Vertex des Meshes selektiert könnt ihr unter Item sehen welche Wichtung dieser von welcher Vertex Group hat. Wenn ihr mehrere markiert könnt ihr mit Paste Weight to Selected diese auf die anderen Kopieren. Dies hilft vor allem wenn man will das ein Loop die gleiche Wichtung erhält.

6.02 Weight Painting

Eine Artist freundlichere Methode ist das Weight Painting. Im Weight Painting Mode eines Meshes kann man hier die Wichtung einer Vertex Group einfach malen. Die Wichtung wird einem hier von Rot(1) nach Schwarz(0) dargestellt.

Mein vorgehen hierbei ist es meist mit dem Add und Sub Pinsel zu Arbeiten und dabei immer zwischen den Vertex Groups hin und her zu schalten. Dabei benutze ich ein flachen Falloff, damit mein Weight auf der ganzen Fläche des Pinsels gleich ist.

07. Export

Ich umschreibe und zeige hier den Export von Blender für Unity. Solltet du woanders hin exportieren wollen, könnten sich einige Einstellungen ändern. Ein wichtiger Punkt beim Export von Blender zu anderen Programmen ist das sich ändernde Koordinatensystem.

In dieser Grafik von @FreyaHolmér bekommst du einen guten Überblick über die verschiedenen Koordinatensysteme.

Hier nochmal verschriftlicht.

Blender Koordinaten:
Z Up
Y Back
X Left

Unity Koordinaten:
Z Forward
Y Up
X Right

7.01 Vor dem Export

Um dieses Koordinaten Problem zu beheben, machst du folgendes.
Rotiere die Meshes und die Armature auf der X-Achse um -90 Grad.
Apply die Rotation und Rotiere sie auf ihre ursprüngliche Position, so das die Rotation nun 90 Grad ergibt. So zeigt nun die Z-Achse nach oben und die Y-Achse nach vorne.

Bei mehreren Animationen, die in Actions gespeichert sind, wählen Sie vor dem Export immer die Idle- oder T-Pose Animation aus.

Ist alles soweit vorbereitet selektiere nun alle Mashes und das Rig. Dann gehe auf File > Export > FBX.

7.02 Export Settings

Hier siehst du nun die korrekten Einstellungen für den Export nach Unity.
Vor dem Export immer die Idle- oder T-Pose Animation auswählen.

Include:
Mache einen Haken bei Limit to Selected Objects und markiere mit gedrückter shift Taste bei Object Types Empty, Mesh und Armature. So exportierst du nur das Selektierte, ohne andere Objekte die sich vielleicht noch in deiner Szene befinden.

Transform:
Benutze beim Export bei Apply Scalings => FBX All, um in Unity das richtige Scaling zu erhalten.
Wähle bei Forward => Z Forward und bei Up => Y Up. Das sind die Koordinaten von Unity und von unseren gedrehten Rig.
Haken bei Use Space Transform: Sons haben die Bones in Unity eine falsche Rotation.
Keinen Haken bei Apply Transform: Dies sorgt nur bei Rig nur für Probleme. Bei Static Meshes kann es jedoch verwendet werden an Stelle der 90 Grad Rotation.

Geometry:
Hier könnt ihr die Einstellungen so lassen bzw. kommen diese eher auf euer Mesh an und was ihr noch damit machen wollt.

Armature:
Hier lasst ihr die Achsen so wie sie sind, die sind Korreckt.
Ihr macht einen Haken bei “Only Deform Bones”, so werden nur die Bones exportiert, die das Mesh deformieren und nicht unsere CTRL oder MCH Bones.
Macht keinen Haken bei “Add Leaf Bones”, sonst bekommt ihr ans Ende jeder Bone Kette einen extra Bone, den ihr nicht benötigt in der Engine.

Bake Animation:
Haken bei Bake Animation, sonst werden keine Animationen in Unity importiert.
Haken bei Key all Bones: Setzt einen Key auf jeden Bone, jedoch nicht für jede Action.
Kein Haken bei NLA Strips, sonst bekommt ihr unnötige Animationen mit Exportiert.
Haken bei All Actions, damit alle Actions nach Unity Importiert werden können.
Force Start/End Keying: Setzt Keys an Anfang und Ende jeder Aktion. Hier einen Haken setzen bei Main Animationen. Bei Override Animationen den Haken rausnehmen, damit nur die bewegten Bones Keys erhalten.
Simplify reduziert Keys, um Speicher zu sparen (Dateigröße und in Engine Arbeitsspeicher).
Ist ein Haken bei “Force Start/End Keying” kann Simplify angewandt werden (0.1) um Keys zu sparen. Hat man keinen Haken und wendet Simplify an, werden bei gleichbleibenden Animationen die Keys gelöscht (Flat Curves werden gelöscht).
Setzt man Simplify auf 0, wird bei jeder Bone in allen Action ein Key in jeden Frame gesetzt, auch wenn kein Haken bei “Force Start/End Keying” ist.
Die Sampling Rate bestimmt, wie häufig gebaked wird. Steht sie auf 1, wird jeder Frame gebaked.

 


Wenn ihr euer gerigtes Model in die Unity Scene zieht und der Scale ist 1 und die Rotation ist 0 ist alles richtig.

Extras

Die wichtigsten Shortcuts aus diesen Kurs.

“shift + r” = wiederhole die letzte Aktion.
“strg + p” = set Parent
“alt + p” = clear Parent

“shift + w”>Deform = De- und Aktivieren der Deform eigenschaften von Bones.
“ctrl + r” = Einstellen des Rotationstypen


Benennung:

def = deformation
tgt = Target
ctrl = Control
int = intermediate
mch = mechanism