Biped-Skinning

Weiter geht es mit dem Skinning in Szene “physique_01_start.max”. Wir selektieren das Mesh und weisen diesem im Modify-Panel den Physique-Modifier zu. Die Initialisierung des Modifiers wird über den Attach to Node-Button im Physique-Rollout eingeleitet. Um den Vorgang fortzusetzen, selektieren wir das Element “nils_Bip Pelvis”, was wiederum (nachdem nun das Zentrum definiert wurde) den Physique Initialization-Dialog öffnet. Wir behalten die Grundeinstellungen im Physique Initialization- Dialog bei und aktivieren Initialize. Siehe Szene “physique_02_initialize.max”.

Der Grund für die Wahl des Pelvis-Elementes während der Initialisierungsphase ist folgender: Wir befinden uns in einem zentralverwalteten Konstrukt, das heißt, dass alle Elemente ihr Root im Pelvis haben. Das COM-Objekt “nils_Bip” können wir uns ähnlich dem Character Assembly als übergeordnete Instanz vorstellen, über die sich das gesamte Biped bewegen lässt. Das Prinzip funktioniert vom Mittelpunkt (COM/Pelvis) nach außen gehend.

Wird dieser Fluss durch die Verlagerung des Zentrums auf ein anderes Element unterbrochen, weil es in einem Child-Parent-Verhältnis zum nächsten Element in Richtung Pelvis steht, funktioniert die IK nur noch partiell. Wenn wir beispielsweise den rechten Oberschenkel als Zentrum definieren, würde die IK nur von dort abwärts funktionieren, weil dieser zwar “Parent” des Unterschenkels ist, jedoch “Child” des Pelvis- Objekts. Das Element “nils_BipSpine2” würde etwa Nacken, Kopf, Arme und Hände mit einschließen, jedoch keines der unteren Elemente. Ich spreche immer wieder von Elementen, weil 3ds max die Character Studio-Bones nicht als wirkliche Bones ansieht und als Folge dessen die Benutzung des Auswahlfilters “Bones” nicht zulässt. Die hierarchische Struktur des Bipeds lässt sich einfach im Schematic View überschauen – später mehr dazu.

1. Envelopes

Um nun die Verformbarkeit des Charakters zu testen, verlassen wir den Figure Mode. Andernfalls würden wir die “Neutrale Pose” des Bipeds durch Bewegungen verändern. Wenn wir nun Teile des Bipeds bewegen (zum Abschalten des Ghosting- oder See Through-Effekts, Objekt auswählen und (Alt) + (X) drücken), bemerken wir, dass die Deformationen dank der genauen Anpassung des Bipeds bereits halbwegs funktionieren, jedoch diverse Problemstellen noch zu bearbeiten sind. Wir selektieren das Mesh, gehen in den Envelope-Subobject-Level des Physique-Modifiers, wählen dort den Envelope des rechten Oberschenkels aus, indem wir auf das passende Segment des gelben Deformation Splines klicken, “Link” genannt, welches das gesamte Biped durchläuft. Wenn wir die Option Shaded in der Display-Sektion aktivieren, sehen wir dessen Einfluss auf das Modell.

Als Erstes werden wir das Volumen der Envelopes anpassen, hierzu stehen uns diverse Möglichkeiten zur Verfügung: Wir können den Durchmesser des “Inner”- und “Outer”-Envelopes – gleichzeitig oder einzeln – mittels Radial Scale modifizieren, die Länge durch Parent/ Child Overlap steuern, vorhandene Cross Sections skalieren oder weitere über die Insert-Funktion hinzufügen. Eine andere Alternative ist die Control Points-Option, die wir im Selection-Level aktivieren und durch Verschieben der Kontrollpunkte die Form derart abwandeln, dass die Einflussbereiche der Envelopes stimmig sind.

Siehe Szene “physique_03_envelopes_a.max”.

Um die benötigten Funktionen verfügbar zu machen, wechseln wir im Selection-Level auf den Auswahlfilter Link (Segment des Deformation Splines) und aktivieren in der Edit Commands- Sektion in angegebener Reihenfolge folgende Befehle:

  1. Copy
  2. Wir selektieren den Link des linken Oberschenkels.
  3. Wir weisen über Paste den veränderten Envelope des rechten Oberschenkels zu.
  4. Wir spiegeln diesen mittels Mirror. Da die Mirror-Funktion nicht ganz einwandfrei arbeitet, muss von Fall zu Fall erprobt werden, ob das gewünschte Ergebnis erzielt wird.

Mittels der eben beschriebenen Arbeitsschritte passen wir die Envelopes der rechten Seite an und spiegeln diese anschließend. Die Envelopes der Hand- und Finger-Links sind am schnellsten über die Radial Scale-Optionen (Both, Inner, Outer) anpassbar.

Die Envelopes der Wirbelsäule beeinflussen Schultern und Arme zu stark, was durch Verkleinern des Outer-Radial Scale leicht anzupassen ist. Der Pelvis-Envelope, der den Beckenbereich nur unzureichend abdeckt, kann mittels Parent Overlap in seiner Länge vergrößert und danach über Control Points justiert werden. Szene “physique_04_envelopes_b.max”.

Tipp: Um genauere Kontrolle über Deformationsergebnisse in Gegenden zu erhalten, in denen sowohl weiche Übergänge als auch unverformbare Bereiche gefragt sind, wie zum Beispiel dem Schienbein oder dem Kopf, kann eine Kombination aus Rigid und Deformable Envelopes eingesetzt werden. Der Deformable Envelope umfasst das gesamte untere Bein. Der Rigid Envelope hingegen ist nur auf den Bereich des Schienbeinknochens positioniert und mit einer höheren Strength versehen, um Glättungseffekten entgegenzuwirken. Um eine solche Envelope-Kombination anzulegen, müssen wir lediglich in der Active Blending-Sektion neben der Deformable- Checkbox zusätzlich Rigid aktivieren. Zu den bereits vorhandenen Inner und Outer Envelopes der Option Deformable erscheinen dieselben Komponenten für die Rigid-Variante (aus Darstellungsgründen grün und orange eingefärbt). In der Envelope Parameters-Sektion können wir in dem Dropdown-Menü zur Bearbeitung zwischen Deformable und Rigid hin- und herschalten. Wir wählen im Dropdown-Menü Rigid aus, passen die Form der Envelopes wie oben beschrieben an und erhöhen den Wert für Strength.

Um den Effekt auf die Deformationen zu verdeutlichen, weise ich dem Mesh einen Mesh Smooth-Modifier zu und erhöhe die Auflösung. Einsehbar in Szene “physique_05_combine.max”.

2. Link

Wir können im Link-Subobject-Level durch Manipulation des Deformation Splines zu brauchbaren Verbesserungen der Verformung in Relation zur jeweiligen Pose beitragen – leider nur begrenzt und nicht sehr intuitiv. Das Deformation Spline entsteht mit der Initialisierung des Modifiers und durchläuft (gelb dargestellte Splines) alle Elemente der Biped-Hierarchie.

Das praktikabelste Tool ist in der Joint Intersections- Sektion zu finden, das in seiner Funktion mit dem Joint Angle Deformer vergleichbar ist. Die optischen Ergebnisse, die durch maximale Werte erzielt werden können, schaffen zwar wertvolle Details, sind aber nicht in einem zufrieden stellenden Maße steuerbar. Wenn wir beispielsweise die Pose des leicht angewinkelten Knies beibehalten (Frame 20), erkennen wir leichte Überschneidungen im Bereich der Kniekehle.

Siehe Szene “physique_06_link_a.max”.

Um dem entgegenzuwirken, selektieren wir das Link-Segment des rechten Unterschenkels, aktivieren Crease at Parents Joint und geben unter Blend From • 1, To • 1 ein. Danach wiederholen wir den Vorgang für das Link-Segment des rechten Oberschenkels, aktivieren die Option Crease at Links Joint und vergeben hierfür ebenfalls Blend From • 1, To • 1. Die Überschneidung ist zwar behoben, der Effekt jedoch nicht zu verstärken. Wenn wir für den Oberschenkel auch noch Crease at Parents Joint einschalten, wird derselbe Effekt zwischen Innenschenkel und Bauch erzeugt. Einsehbar in Szene “physique_07_link_b.max”. Diese Art der Korrektur lässt sich in allen Beugungsbereichen einsetzen.

3. Bulge

Wie der Name schon sagt, geht es hierbei um das Pendant zum Bulge Angle Deformer, der ebenfalls winkelbasiert Verformungsergebnisse abruft, die mittels Lattice-Verformung definiert wurden. Um einen solchen anzulegen, ist es sinnvoll, im Vorfeld eine Animation zu erstellen, damit man nicht ständig den Subobject-Level verlassen muss, um die Auswirkungen von Bewegungen auf das Mesh betrachten zu können. Als Ausgangsbasis dient uns die Szene “physique_08_bulge_a.max”, in der in Frame 20 eine Handbewegung beendet wird. Wir selektieren im Bulge-Subobject-Level das lange Link-Segment des rechten Unterarms (dieser besteht zwecks Forearm Twist aus zwei Segmenten). Ein grünes Gizmo erscheint. In den Bulge Angle Parameters rechtsklicken wir Insert Bulge Angle (siehe Schritt 2) – es ist wichtig, dass dies in der neutralen Pose, also Frame 0, geschieht. Wir bewegen den Time Slider auf Frame 20 und sehen, dass Nils die Hand abgewinkelt hat. Wir aktivieren Set Bulge Angle und haben damit den Winkel definiert, in dem der Bulge zu 100 Prozent vorhanden sein soll.

Als Nächstes öffnen wir den Bulge Editor und fügen über Insert CS-Slice an der grün markierten Stelle eine neue Cross Section (CS) ein. Anschließend verschieben wir die grün und gelb markierten Cross Sections mittels Translate CS an die angezeigten Stellen, um den Wirkungsbereich des Bulge genauer bestimmen zu können. Jetzt wechseln wir in der Selection-Level-Sektion in den Control Point-Modus. Mittels der jetzt aktivierten Control Points können wir den Bulge wie gewünscht formen. Wenn wir den Time Slider zwischen Frame 0 und 20 hin- und herbewegen, können wir seine Auswirkung beobachten. Siehe Szene “physique_09_bulge_b.max”.

4. Tendons

Wie bereits erwähnt, können wir durch den Einsatz von Tendons Verformungen verschiedener Art über mehrere Links hinweg erzeugen, die sich primär für “Skin Sliding”, aber auch bedingt zur Deformationskontrolle einsetzen lassen. Wir bleiben bei dem Beispiel des rechten Oberschenkels, verschieben zuerst den Time Slider auf Frame 20 und öffnen dann den Tendons- Subobject-Level. Dort angekommen selektieren wir das hervorgehobene Link-Segment, das den Oberschenkel mit der Wirbelsäule verbindet. In der Insert Settings-Sektion können wir im Vorfeld die Parameter der Cross Section definieren und diese dann durch Aktivieren der Insert-Funktion dem ausgewählten Link-Segment zuweisen. Wenn wir Mauszeiger auf dem ausgewählten Link-Segment platzieren, wird die Position der Cross Section auf dem Link durch einen kleinen Kreis visualisiert. Mit einem Rechtsklick auf das Link-Segment erzeugen wir dann die Cross Section.

Wir wechseln in den Control Point-Selection- Level, selektieren die beiden seitlichen, äußeren Kontrollpunkte, aktivieren in den Edit Commands die Attach-Funktion und klicken dann auf das Link-Segment des rechten Oberschenkels.

Anschließszlig;end wechseln wir wieder in Link-Selection- Level, selektieren das zu “nils_spine01” gehörende Link-Segment und fügen über Insert eine Cross Section ein, deren vorderen rechten Kontrollpunkt wir dann über Attach ebenfalls mit dem rechten Oberschenkel verbinden.

Die Ergebnisse lassen sich in der Bewegung am besten beobachten – siehe hierzu Szene “physique_10_tendons.max” Frame 0 bis 20.

5. Vertex

Die letzte Möglichkeit, unerwünschtem Mesh-Verhalten entgegenzuwirken, finden wir im Vertex-Subobject-Level, wo wir die Link-Zugehörigkeit über den Einfluss der Envelopes hinweg kontrollieren und darüber hinaus die individuelle Gewichtung verändern können. Eine typische Anwendung für die genaue Festlegung der Link-Zugehörigkeit sind Finger oder Zehen. Da diese sehr nah beieinander liegen, sind Überschneidungen der Einflussbereiche praktisch nicht zu verhindern. Bevor wir uns mit diesen Schnittmengen beschäftigen, noch ein paar Anmerkungen zu den verschiedenen Vertice-Arten und -Operationen:

  • Rot: Wenn alle Envelopes richtig proportioniert sind und nichts an den Blending-Einstellungen verändert wurde, stellt diese Farbe den Basiszustand dar, in dem Vertices dem Deformation Spline folgen.
  • Grün: Vertices solcher Art folgen ausschließlich dem Link, dem sie zugewiesen wurden.
  • Blau: Wenn ein Vertice blau dargestellt wird, weiß Physique nicht, welchen Link diese zuzuordnen sind, und bindet sie deshalb an das Root.

Die farbigen Kreuze in der Vertex Type-Sektion sind Selektionsfilter, durch die wir die jeweiligen Vertex-Arten auswählen können (alle gleichzeitig oder einzeln). Man kann aber auch ihren Status durch Selektion, Umstellung auf die neue Farbe und anschließendes Zuweisen über Assign to Link verändern.

Als Erstes werden wir uns mit der bereits angesprochenen Link-Zugehörigkeit auseinander setzen. Wieder einmal gilt, je genauer die Envelopes im Vorfeld angepasst wurden, desto weniger Arbeit haben wir am Ende. In Szene “physique_11_vertex_a.max” ist die Ausgangssituation zu fi nden.

Innerhalb des Vertex-Subobject-Level aktivieren wir in der Vertex Operations-Sektion die Funktion Select By Link und klicken auf das erste Link-Segment des Zeigefingers – es erscheint eine Auswahl der zu diesem Link gehörigen Vertices. Um die zum Mittelfinger gehörenden Vertices (gelb markiert) abzukoppeln, schalten wir Select an und wählen zunächst alle Vertices des Zeigefingers aus. Danach heben wir deren Zugehörigkeit durch das Aktivieren der Remove From Link-Funktion und durch anschließendes Klicken auf das Link-Segment, von dem diese ausgeschlossen werden sollen, auf. Denselben Vorgang wiederholen wir für jedes Finger- Segment, bei dem nicht zum Link gehörende Vertices durch Select By Link ausgewählt werden.

Da Änderungen an Envelopes der Finger-Segmente die Zuweisungen zunichte machen würden, wählen wir großzügig alle Finger-Vertices aus und sperren deren Zustand über Lock Assignments. Siehe Szene “physique_12_vertex_b.max”.

In dem folgenden Bild können wir uns den Effekt (links vorher, rechts nachher) der Vertex Assignments in einer extremen Pose ansehen – Frame 30.

6. Type In Weights

Einem Vertex, das in das Volumen eines Envelopes fällt, wird ein bestimmter Gewichtungswert in Bezug auf ein Bone-Objekt zugewiesen. Je höher dieser Wert ist, desto stärker ist der Einfluss des Bones. Teilweise können mehrere Bones aufgrund ihrer Nähe, insbesondere in Gelenkgegenden, Einfluss nehmen, so dass die Gewichtung aufgeteilt wird. Und genau hier setzen wir an, indem wir die zugewiesenen Gewichtungen nach Belieben abändern. Individuelle Gewichtungen für einzelne Vertices zu vergeben würde jedoch selbst bei einem niedrig aufgelösten Mesh äußerst zeitaufwändig sein und ist aus diesem Grund nur in besonderen Problemfällen sinnvoll. Die Type In Weights-Funktion ist als zusätzliches Finishing-Tool zu betrachten, das Unzulänglichkeiten in der Envelope-Justierung auffangen kann. Wenn diverse Verformungsfehler auftreten, sollte eine Überarbeitung der Envelopes die naheliegendste Konsequenz sein.

Wenn wir in Szene “physique_13_vertex_c.max” den Time Slider auf Frame 30 bewegen, sehen wir, dass eines der Vertices im Nackenbereich übermäßig stark durch die Kopfbewegung beeinflusst wird. Im Vertex-Subobject-Level wählen wir die markierten Vertices mittels Select aus und sperren deren Zustand über Lock Assignments. Die selektierten Vertices werden nun als Vierecke dargestellt. Der Zustand Locked ist die Grundvoraussetzung, um anschließend deren Gewichtung verändern zu können.

Als Nächstes aktivieren wir über Type In Weights gleichnamiges Dialogfenster. Die Option Currently Assigned Links Only zeigt die Links an, die auf die ausgewählten Vertices einwirken. Manchmal werden Links mehrfach in dem Fenster dargestellt – einfach ignorieren!

Relative Scale sollte dann aktiviert werden, wenn mehrere Vertices gleichzeitig bearbeitet werden sollen. Wenn der Fall auftreten sollte, dass nur ein Link auf das jeweilige Vertex einwirkt, können wir über All Links einen Bone auswählen, der das selektierte Vertex beeinflussen soll, und diesem dann eine Gewichtung zuweisen.

Wir selektieren das markierte Vertex, verringern die Wirkung von “nils_Bip Head” und erhöhen dafür den Wert für “nils_Bip Neck”. Einsehbar in Szene “physique_14_vertex_d.max”.

Danach schließen wir das Fenster, wählen alle Vertices des Modells mittels Select aus und sperren diese über Lock Assignments. Im Top- Level des Physique-Modifiers speichern wir dann unsere Skinning-Arbeit ab.