Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog
Bones, IK, Morphing
-
Bones
-
Idee: Komplexes Objekt gemäß einem einfachen Skelett verformen,
wie Haut (deshalb: Skinning). Das ist die Methode zum Animieren
von Gliedmaßen (Beine, Arme, Finger, Wirbelsäule usw.).
-
Die Knochen (Bones) des Skeletts sind Pseudo-Objekte. Sie erscheinen nicht
im fertigen Rendering, sondern steuern nur die Verformung der sichtbaren
Haut. Die simplen Bones werden animiert; die komplexe Haut folgt.
-
Jeder Bone kennt seine Ruhelage und seine aktuelle Lage. Die Verformung
des Skins hängt davon ab, wie stark der Bone aus der Ruhelage bewegt
ist. In der Ruhelage verformt er den Skin nicht.
-
Damit die Haut nicht an gebeugten Gelenken aufreißt, muss sie elastisch
mit den Knochen verbunden sein. Im Gelenkbereich müssen beide benachbarten
Knochen wirken. Jeder Vertex der Haut muss wissen, welcher Knochen wie
stark auf ihn wirkt.
-
Möglichkeit 1: Je näher man an einem Knochen ist, umso stärker
wird dessen Einfluss. Problem: Z.B. die Zeigefingerknochen nehmen auch
die Haut des Mittelfingers mit. Demo: Cinema 4D
-
Möglichkeit 2 (die übliche Lösung): Für jeden Knochen
malt man per Hand seinen Einflussbereich (weich!) auf das Objekt. Demo:
Cinema 4D, Maya
-
Rechnung: Zu jedem Knochen gibt man 4x4-Matrix an, die ihn aus seiner Ruhelage
zur aktuellen Verschiebung/Drehung/Skalierung bringt. Um einen Vertex des
Skins entsprechend zu verformen, berechne die neue Position des Vertex
unter jeder dieser Matrizen. Dann bilde den gewichteten Mittelwert der
Ergebnisse. Die Gewichte sind dabei die Zuteilungen des Vertex zu den Bones,
z.B. 0,5 zum ersten Bone, 0,3 zum siebten Bone und 0,2 zum dreizehnten
Bone (Summe = 1).
-
entsprechende Verformung auf der Grafikkarte: Matrix Palette Skinning.
Die besagte Sammlung der Matrizen ist die Matrix-Palette. Daraus kann man
dann pro Vertex z.B. vier wählen, um nicht zu viele Daten pro Vertex
speichern und berechnen zu müssen. Nvidia-Demo.
-
Inverse Kinematik
-
In ein Skelett sind Bones meist hierarchisch eingeordnet: Der Unterarm
erbt Verschiebung/Drehung/Skalierung vom Oberarm und fügt seine Verschiebung/Drehung/Skalierung
hinzu, die Hand erbt Verschiebung/Drehung/Skalierung vom Unterarm usw.
Das sind im Endeffekt Matrizenprodukte.
-
Ohne Hilfsmittel stellt man also den Oberarm ein, dann den Unterarm, dann
die Hand ("Vorwärts-Kinematik", FK). Auf diese Weise ein vorgegebenes
Ziel (Kaffeetasse auf dem Tisch?) zu erreichen, ist schwer.
-
Alternative: Inverse Kinematik, IK. Hier wird simuliert (komplexe Rechnung!),
wie sich eine Gliederkette verhält, die man am "unteren" Ende zieht.
-
fast immer mit einstellbaren Winkelbeschränkungen; ggf. auch mit dehnbaren
Gelenken und mit physikalischer Simulation (pendelnder Arm usw.).
-
IK geht natürlich auch mit anderen Objekten als Bones. Etwa bei einem
Roboter können es sofort die Bauteile sein.
-
Morphing
-
Idee: Grundformen einer Figur speichern und die Figur geometrisch (Vertizes,
nicht Pixel!) in wechselnde Mischungen der Grundformen verformen. Das ist
die Methode zum Animieren von Gesichtern.
-
typische Grundformen: normales Gesicht, eine Handvoll "Viseme" (Mundstellungen
für Sprachlaute = Phoneme), eine Handvoll Mimiken (Lachen, Stirnrunzeln
usw.)
-
Erzeuge die Grundformen alle aus dem gleichen Drahtgitter, so dass nur
Vertizes verschoben werden, keine gelöscht werden oder neu hinzukommen.
-
Rechnung: Für jeden Vertex bilde die gewichtete Summe seiner Versionen
in der unverformten Figur und den diversen Grundformen. Die Summe der Gewichte
muss eins sein. Setze dazu das Gewicht der unverformten Figur als 1,0 minus
die Summe der übrigen Gewichte.
-
Demo: Cinema 4D, Maya