Joints
Aus CINEMA 4D Wiki
Inhaltsverzeichnis |
Allgemeines
Am Anfang eines Rigs steht nun die Erstellung von Joint-Hierarchien. Sie ersetzen die früheren Bone-Objekte komplett. Joints haben gegenüber den Bones einige Vorteile:
Ein Joint selbst hat keine Länge, er beschreibt nur die Position und die Ausrichtung im Raum.
Joints selbst sind, im Gegensatz zu den alten Bone-Objekten, keine Deformer und daher ist es egal, wo sie sich hierarchisch befinden. In Joints-Ketten dürfen auch andere Objekte wie z.B. Nullobjekte eingebaut werden (bei Bone-Ketten war das nicht erlaubt). Die Deformation selbst erfolgt durch ein einziges Skin-Objekt, welches Unterobjekt des Meshs sein muss. Besteht der Character also aus mehreren Meshes, müssen diese Objekte auf einer Hierarchieebene mit dem Skin-Objekt liegen, wie bei allen Deformern. Durch ein Wichtungs-Tag an jedem Mesh wird festgelegt, welche Joints das Mesh beeinflussen dürfen.
Da nur mehr dieser eine Deformer ausgewertet werden muss, bedeutet das auch einen gewaltigen Geschwindigkeitszuwachs im Vergleich mit einem mit Hilfe von Bone-Objekten geriggten Character.
Der Bone zwischen den Joints
Im neuen System ist ein „Bone“, also ein Knochen des virtuellen Skeletts, nicht mehr ein eigenes Objekt mit einer festen Länge, sondern in den meisten Fällen einfach der Zwischenraum zwischen zwei „Gelenken“, sogenannten Joint-Objekten. Der „Bone“ ist hier im Wesentlichen nur noch eine visuelle Darstellung, die zu den Joint-Objekten gehört.
So lautet der Text im Handbuch.
Die Ausrichtung und Länge des Bones, der zwischen zwei Joints gezeichnet wird, hat jedoch mehr Bedeutung als eine visuelle Darstellung, vor allem was die Mesh-Deformation betrifft.
Am logischsten und vorhersehbarsten ist die Deformation, wenn der Bone-Modus "zum Unterobjekt" verwendet wird. In diesem Modus wird der gezeichnete Bone immer zum nächsten Joint in der Hierarchie zeigen. Dabei wird immer das erste Joint-Unterobjekt verwendet, sollten mehrere vorhanden sein. Dieser Bone, der hier gezeichnet wird, wird zur Deformation verwendet. Da dieser Bone sowieso immer zum nächsten Joint zeigt, ist die eigentliche Ausrichtung der Joint-Z-Achse nicht von großer Bedeutung. Und da ich in dieser Hinsicht oft Schwierigkeiten hatte, war dieser Modus für mich die Ideallösung.
Bei den Joint-Objekten gibts genauso wie beim alten Bone-Objekt den Parameter "Länge", den man möglichst unangetastet lassen sollte, da sonst im Bone-Modus "zum Unterobjekt" die Position der nachfolgenden Joints verändert wird.
Joint-Achsen
Ein oft genannter Vorteil von Joints ist die Fähigkeit, sie "auszunullen". Unter diesem "Ausnullen" versteht man, dass jeder Joint ein eigenes Koordinatensystem mit den Winkeln 0,0,0 anbietet, was für Expressions sehr sinnvoll und hilfreich ist. Dies ist allerdings noch nicht mit den Cinema4D-Joints möglich.
Die Ausrichtung der Achsen ist sehr wichtig fürs Verhalten des Rigs und der Deformation des Meshs. Mit dem Befehl "Ausrichten" ist es zwar möglich, die Z-Achse eines Joints so auszurichten, dass sie zum nächsten Joint zeigt, aber es gibt keine Option, die die Achse immer in diese Richtung zwingt, d.h. sie ist im Nachhinein immer noch veränderbar und wird z.B. durch das IK-Spline-Tag wieder anders ausgerichtet.
Eine Lösung für dieses Problem ist, jedem Joint ein eigenes Constraint-Tag zu geben, und dort die Ausrichtung zu bestimmen. Wichtig dabei ist, dass dieses Constraint-Tag erst nach den anderen Tags, die die Ausrichtung beeinflussen (z.B ein Spline IK Tag), ausgewertet wird. Die Priorität dieser Constraint-Tags muss somit höher sein.
Workaround zum "Ausnullen"
Für die Finger eines Rigs, die man durch Slider steuern möchte, wäre die Fähigkeit, Joints "auszunullen", sehr praktisch. Dazu würde man einfach der Slider fürs Abwinkeln der Finger mit dem P-Winkel der Finger-Joints verknüpfen. Hier würde einem solch ein eigenes Koordinatensystem, das die Startwinkel 0,0,0 anbietet, sehr zugute gekommen. Da dies momentan mit den Cinema4D-Joints noch nicht möglich ist, baut man am Besten zusätzliche Null-Objekte in die Fingerrigs ein:
Jeweils vor dem ersten Joint eines Fingers fügt man ein extra Null-Objekt mit derselben Ausrichtung wie das Joint-Objekt ein. Da das Joint-Objekt nun Unterobjekt eines Null-Objekts mit der selben Ausrichtung ist, hat das Joint-Objekt wieder die lokalen Winkel 0,0,0.
In Cactus Dan's "Joints & Skin"-Rigging-Suite bieten die Joints eine solche Möglichkeit, sie auszunullen.
