Mecanim-Humanoide

Dieser Beitrag erklärt die Technologie hinter Mecanim Humanoids. Wie es funktioniert, welche Stärken und Grenzen es hat, warum einige Entscheidungen getroffen wurden und hoffentlich einige Hinweise, wie man das Beste daraus machen kann. Allgemeine Informationen zur Einrichtung und Anweisungen finden Sie in der Unity-Dokumentation.

Mecanim Humanoid Rig und Muscle Space sind eine alternative Lösung zu den standardmäßigen Skelettknotenhierarchien und geometrischen Transformationen, um humanoide Körper und Animationen darzustellen.
Das Humanoide Rig ist eine Beschreibung über einer Skelettknotenhierarchie. Es identifiziert eine Reihe menschlicher Knochen und erstellt für jeden dieser Knochen ein Muscle Referential. Ein Muskelreferenzial ist im Wesentlichen eine Vor- und Nachrotation mit einem Bereich und einem Vorzeichen für jede Achse.

Ein Muskel ist ein normalisierter Wert [-1,1], der einen Bone für eine Achse zwischen dem Bereich [min,max] bewegt. Beachten Sie, dass der auf Muskeln normierte Wert unter oder über [-1,1] liegen kann, um den Bereich zu überschreiten. Der Bereich ist keine feste Grenze, sondern definiert die normale Bewegungsspanne eines Muskels. Ein bestimmtes Humanoid-Rig kann den Bereich eines Muskelreferentials vergrößern oder verkleinern, um seine Bewegungsspanne zu vergrößern oder zu verkleinern.
Der Muskelraum ist die Menge aller auf Muskeln normierten Werte für das Humanoid Rig. Es handelt sich um eine Normalisierte Humanoide Pose. Ein Bereich von Null (min=max) für eine Knochenachse bedeutet, dass es für diese Achse keinen Muskel gibt.
Der Ellenbogen beispielsweise hat keinen Muskel für seine Y-Achse, da er sich nur nach innen und außen streckt (Z-Achse) und nach innen und außen rollt (X-Achse). Letztendlich besteht der Muskelraum aus maximal 47 Muskelwerten, die eine humanoide Körperhaltung vollständig beschreiben.

Das Schöne an Muscle Space ist, dass es vollständig von seinem Original oder einem Skelett-Rig abstrahiert ist. Es kann direkt auf jedes Humanoid-Rig angewendet werden und erzeugt immer eine glaubwürdige Pose. Eine weitere schöne Sache ist, wie gut Muscle Space interpoliert. Im Vergleich zur Standard-Skelett-Pose interpoliert Muscle Space immer auf natürliche Weise zwischen Animations-Keyframes, während des Übergangs von Zustandsautomaten oder bei der Mischung in einem Blend Tree.
Auch rechentechnisch ist es vorteilhaft, da der Muskelraum als Vektor eines Skalars behandelt werden kann, den man im Gegensatz zu Quaternionen oder Euler-Winkeln linear interpolieren kann.
Eine Annäherung an den menschlichen Körper und die menschliche Bewegung
Jedes neue Skelettrigg, das für eine humanoide Figur oder eine aufgenommene Animation erstellt wird, ist eine Annäherung an den menschlichen Körper und die menschliche Bewegung. Egal, wie viele Knochen oder wie gut Ihre MOCAP-Hardware ist, das Ergebnis ist eine Annäherung an die Realität.
Rigger, Spielefirmen, Schulen oder Softwarefirmen werden ihre eigene Version dessen vorschlagen, was ihrer Meinung nach den menschlichen Körper und die Bewegung am besten darstellt und was ihren Produktionsanforderungen am besten entspricht.
Die Ausarbeitung von Mecanim Humanoid Rig und Muscle Space war mit einigen schwierigen Entscheidungen konfrontiert. Wir mussten einen Kompromiss zwischen schneller Laufzeit und Animationsqualität oder Offenheit und Standarddefinition finden.

Das ist eine schwierige Frage. Warum 2 und nicht 3? oder eine beliebige Anzahl von Stacheln und Knochen? Lassen wir das Neueste beiseite, es geht nicht um biomedizinische Forschung. (Beachten Sie, dass Sie immer ein generisches Rig verwenden können, wenn Sie diesen Grad an Präzision unbedingt benötigen). Ein Wirbelsäulenknochen ist deutlich unterbestimmt.
Wenn Sie eine zweite hinzufügen, sind Sie schon fast am Ziel. Ein drittes oder gar viertes Exemplar wird nur einen kleinen Beitrag zur endgültigen menschlichen Pose leisten. Warum ist das so? Wenn Sie sich ansehen, wie sich die menschliche Wirbelsäule biegt, werden Sie feststellen, dass der Teil der Wirbelsäule, der auf dem Brustkorb liegt, fast starr ist. Was bleibt, ist ein Hauptbeugepunkt an der Basis der Wirbelsäule und ein weiterer an der Basis des Brustkorbs. Es gibt also zwei Hauptbeugungspunkte. Wenn man sich einen Schlangenmenschen auch in extremen Posen ansieht, wird dies deutlich. In Anbetracht all dessen haben wir uns für 2 Wirbelsäulenknochen für das Humanoid Rig entschieden.
1 Nackenknochen
Dies ist einfacher als bei der Wirbelsäule. Beachten Sie, dass viele Spiel-Skelett-Rigs nicht einmal einen Halsknochen haben und nur mit einem Kopfknochen zurechtkommen.
Rotation DoF
Wie bei den meisten Skelett-Rigs (bei Spielen ist das sogar noch häufiger der Fall) unterstützt das Mecanim Humanoid Rig nur Rotationsanimation. Die Bones dürfen ihre lokale Übersetzung relativ zu ihrem Parent nicht ändern. Einige 3D-Pakete bewirken eine gewisse Verschiebung der Knochen, um die Elastizität der Gelenke oder die Squash- und Stretch-Animation zu simulieren. Wir prüfen derzeit, ob wir Translation DoF hinzufügen können, da dies eine relativ kostengünstige Methode ist, um die Animationsqualität bei weniger detaillierten Skelett-Rigs zu kompensieren, was die Berechnungsleistung angeht. Außerdem könnten die Nutzer damit wiederholbare Squash- und Stretch-Animationen erstellen.

Keine verdrehten Knochen
Twist-Bones werden häufig zu Skelett-Rigs hinzugefügt, um Hautverformungsprobleme an Armen und Beinen zu vermeiden, wenn diese in extremer Twist-Konfiguration sind.
Verdrehknochen tragen dazu bei, die durch die Verdrehung hervorgerufene Verformung vom Anfang bis zum Ende der Gliedmaße zu verteilen.
Im Muskelraum wird der Grad der Verdrehung durch einen Muskel dargestellt, der immer mit dem übergeordneten Knochen einer Gliedmaße verbunden ist. Ex: Die Drehung des Unterarms erfolgt am Ellbogen und nicht am Handgelenk.

Humanoide Rigs unterstützen keine Twist-Bones, aber der Mecanim-Solver erlaubt es, einen Prozentsatz an Twist anzugeben, der aus dem Parent genommen und auf das Child der Gliedmaße übertragen wird.
Humanoide Wurzel und Massenschwerpunkt
Wie lassen sich nun die Position und die Ausrichtung des menschlichen Körpers im Weltraum am besten darstellen?
Der oberste Knochen in der Hierarchie (normalerweise Hüfte, Becken oder wie auch immer er genannt wird) ist der Ort, an dem die Positions- und Orientierungskurven im Weltraum in einem Standardskelett-Rig liegen. Während dies für einen bestimmten Charakter gut funktioniert, ist es für das Retargeting ungeeignet, da der oberste Bone in der Regel eine andere Position und Drehung relativ zum Rest des Skeletts hat.

Der Muskelraum verwendet den Massenschwerpunkt des Menschen, um seine Position im Weltraum darzustellen. Der Massenschwerpunkt wird anhand der durchschnittlichen Massenverteilung menschlicher Körperteile approximiert. Wir gehen davon aus, dass der Massenschwerpunkt für eine humanoide Pose nach der Maßstabsanpassung für jede humanoide Figur gleich ist. Das ist eine große Annahme, aber es hat sich gezeigt, dass sie für eine große Anzahl von Animationen und humanoiden Charakteren sehr gut funktioniert.
Es stimmt zwar, dass bei Animationen zum Stehen oder Gehen der Schwerpunkt um die Hüften herum liegt, aber bei dynamischeren Bewegungen wie einem Rückwärtssalto kann man sehen, wie sich der Körper vom Schwerpunkt wegbewegt und wie sich der Schwerpunkt als der stabilste Punkt der Animation anfühlt.
Orientierung am Körper
Ähnlich wie der Massenschwerpunkt für die Position des Muskels im Weltraum, verwenden wir eine durchschnittliche Körperorientierung für die Orientierung im Weltraum. Der durchschnittliche Aufwärtsvektor der Körperorientierung wird aus den Hüft- und Schultermittelpunkten berechnet. Der Frontvektor ist dann das Kreuzprodukt aus dem Aufwärtsvektor und den durchschnittlichen Vektoren der linken und rechten Hüfte/Schulter. Es wird auch angenommen, dass diese durchschnittliche Körperausrichtung für eine humanoide Pose für alle humanoiden Rigs gleich ist. Was den Schwerpunkt anbelangt, so ist eine durchschnittliche Körperausrichtung in der Regel ein stabiler Bezugspunkt, da die Ausrichtung des Unter- und Oberkörpers beim Gehen, Laufen usw. natürlich ausgeglichen wird.
Wurzelbewegung
Eine ausführlichere Abhandlung über Wurzelbewegungen wird folgen, aber als Einführung wird die Projektion des Massenschwerpunkts und der durchschnittlichen Körperausrichtung verwendet, um automatisch Wurzelbewegungen zu erzeugen. Die Tatsache, dass der Massenschwerpunkt und die durchschnittliche Körperausrichtung stabile Eigenschaften der humanoiden Animation sind, führt zu einer stabilen Grundbewegung, die für die Navigation oder Bewegungsvorhersage verwendet werden kann.
Die Skala
Eine Sache fehlt noch in Muscle Space, um eine völlig normalisierte humanoide Pose zu sein... die Gesamtgröße des Körpers. Auch hier suchen wir nach einer Möglichkeit, die Größe eines Humanoiden zu beschreiben, die sich nicht auf einen bestimmten Punkt wie die Position der Kopfknochen stützt, da diese von Rig zu Rig nicht einheitlich ist. Die Höhe des Massenschwerpunkts einer humanoiden Figur in T-Stellung wird direkt als Maßstab verwendet. Die Position des Massenschwerpunkts des Muskelraums wird durch diesen Maßstab geteilt, um die endgültige normalisierte humanoide Pose zu erhalten. Anders ausgedrückt: Der Muskelraum ist für einen Humanoiden normalisiert, der in der T-Stellung eine Schwerpunkthöhe von 1 hat. Alle Positionen im Muskelraum werden in normalisierten Metern angegeben.
Ursprüngliche Position der Hände und Füße
Bei der Anwendung eines Muskelraums auf ein Humanoid-Rig können Hände und Füße aufgrund der unterschiedlichen Proportionen von Humanoid-Rigs in einer anderen Position und Ausrichtung als in der ursprünglichen Animation erscheinen. Dies kann dazu führen, dass die Füße abrutschen oder die Hände nicht richtig greifen. Aus diesem Grund enthält der Muskelraum optional die ursprüngliche Position und Ausrichtung der Hände und Füße. Die Position und Ausrichtung von Händen und Füßen werden relativ zur Humanoiden-Wurzel (Massenschwerpunkt, durchschnittliche Körperdrehung und humanoider Maßstab) im Muskelraum normalisiert. Diese ursprünglichen Positionen und Ausrichtungen können verwendet werden, um die Pose des neu ausgerichteten Skeletts so zu fixieren, dass sie mit der ursprünglichen Position im Weltraum übereinstimmt, indem ein IK-Pass verwendet wird.

Das Hauptziel von IK Solver bei Armen und Beinen ist es, die ursprüngliche Position und Ausrichtung der Hände und Füße zu erreichen, die optional im Muskelraum zu finden sind. Dies ist, was unter der Haube für Füße passiert, wenn "Foot IK" Toggle in einem Mecanim Controller State aktiviert ist.
In diesen Fällen ist die neu angepeilte Skelett-Pose nie sehr weit von den ursprünglichen IK-Zielen entfernt. Der zu behebende IK-Fehler ist gering, da er nur durch unterschiedliche Proportionen der humanoiden Rigs hervorgerufen wird. Der IK-Solver verändert die Pose des neu ausgerichteten Skeletts nur geringfügig, um die endgültige Pose zu erzeugen, die den ursprünglichen Positionen und Ausrichtungen entspricht.
Da die IK die Pose des neu angepeilten Skeletts nur geringfügig verändert, kommt es nur selten zu Animationsartefakten wie Knie- oder Ellbogenknicken. Selbst dann gibt es einen Squash and Stretch Solver, der Teil des IK Solvers ist, um zu verhindern, dass Arme oder Beine in die Nähe der maximalen Streckung kommen. Standardmäßig ist der Umfang der erlaubten Quetschungen und Dehnungen auf 5 % der Gesamtlänge des Armes oder Beines begrenzt. Wenn ein Ellbogen oder ein Knie knackt, ist das auffälliger (und hässlicher) als eine Dehnung von 5 % oder weniger an Arm oder Bein. Beachten Sie, dass die Lösung für Quetschen und Strecken deaktiviert werden kann, indem sie auf 0 % gesetzt wird.
Ein ausführlicherer Artikel über IK-Rigs wird folgen. Es wird erklärt, wie man mit Requisiten umgeht, mehrere IK-Passes verwendet, mit der Umgebung oder zwischen humanoiden Charakteren interagiert, usw.
Optionale Knochen
Das Humanoide Rig hat einige Knochen, die optional sind. Dies gilt für Brust, Nacken, linke Schulter, rechte Schulter, linke Zehen und rechte Zehen. Viele bestehende Skelett-Rigs haben einige der optionalen Knochen nicht, aber wir wollten trotzdem gültige Humanoide mit diesen erstellen.
Das Humanoid Rig unterstützt auch optionale LeftEye und RightEye Bones. Die Augenknochen haben jeweils zwei Muskeln, einen, der nach oben und unten geht, und einen, der sich nach innen und außen bewegt. Die Augenknochen arbeiten auch mit dem Humanoid Rig LookAt Solver, der LookAt-Anpassungen an Wirbelsäule, Brustkorb, Hals, Kopf und Augen verteilen kann. Mehr über den LookAt Solver wird im kommenden Humanoid IK Rig Paper zu lesen sein.
Finger
Schließlich unterstützt das Humanoid Rig auch Finger. Jeder Finger kann 0 bis 3 Ziffern haben. Eine 0-Ziffer bedeutet einfach, dass dieser Finger nicht definiert ist. Es gibt zwei Muskeln (Dehnen und Spreizen) für die erste Ziffer und einen Muskel (Dehnen) für die zweite und letzte Ziffer. Wenn für eine Hand keine Finger definiert sind, gibt es keinen Overhead für den Solver.
Anforderungen an das Skeleton Rigg
Dazwischen liegende Knochen
In vielen Fällen haben die Skelett-Rigs mehr Knochen als die vom Humanoid-Rig definierten. In-between-Knochen sind Knochen, die zwischen humanoid definierten Knochen liegen. Zum Beispiel wird ein 3. Wirbelsäulenknochen in einem 3DSMAX-Zweibeiner als Zwischenknochen behandelt. Diese werden von Humanoid Rig unterstützt, aber bedenken Sie, dass die Bones dazwischen nicht animiert werden. Sie bleiben in ihrer Standardposition und -ausrichtung relativ zu ihrem im Humanoid-Rig definierten Elternteil.
Standard-Hierarchie
Das Skelett-Rig muss eine Standard-Hierarchie einhalten, um mit unserem Humanoid-Rig kompatibel zu sein. Das Skelett kann eine beliebige Anzahl von Zwischenknochen zwischen den humanoiden Knochen haben, muss aber das folgende Muster einhalten:
Hüfte - Oberschenkel - Unterschenkel - Fuß - Zehen
Hüften - Wirbelsäule - Brustkorb - Hals - Kopf
Brust - Schulter - Arm - Unterarm - Hand
Hand - Proximal - Intermediär - Distal

Der T-Stance ist der wichtigste Schritt bei der Erstellung eines Humanoiden-Rigs, da er die Grundlage für den Muskelaufbau bildet. Die T-Stance-Pose wurde als Referenzpose gewählt, da sie einfach zu konzipieren ist und es nicht viel Raum für Interpretationen gibt, was sie sein sollte:
- Stehend gerade zur Z-Achse
- Kopf und Augen zur Z-Achse gerichtet
- Füße auf dem Boden parallel zur Z-Achse
- Arme parallel zum Boden entlang der X-Achse geöffnet
- Hände flach, Handfläche nach unten, parallel zum Boden entlang der X-Achse
- Finger gerade und parallel zum Boden entlang der X-Achse
Daumen gerade und parallel zum Boden auf halbem Weg (45 Grad) zwischen x- und z-Achse
Wenn man "gerade" sagt, bedeutet das nicht, dass die Knochen unbedingt perfekt ausgerichtet sein müssen. Das hängt davon ab, wie die Haut am Skelett befestigt ist. Bei manchen Geräten sieht die Haut zwar gerade aus, aber das Skelett darunter ist es nicht. Daher ist es wichtig, dass die T-Stellung für den fertig gehäuteten Charakter eingestellt wird. Wenn Sie ein Humanoid-Rig für das Retargeting von MOCAP-Daten erstellen, empfiehlt es sich, zumindest ein paar Frames einer T-Stance des Darstellers in der MOCAP-Suite aufzunehmen.
Anpassungen des Muskelbereichs
Standardmäßig sind die Muskelbereiche auf Werte eingestellt, die die menschlichen Muskelbereiche am besten repräsentieren. In den meisten Fällen sollten sie nicht geändert werden. Für eine eher cartoonhafte Figur können Sie den Bereich verringern, um zu verhindern, dass die Arme in den Körper eindringen, oder ihn vergrößern, um die Bewegung der Beine zu übertreiben. Wenn Sie ein Humanoid-Rig für das Retargeting von MOCAP-Daten erstellen, sollten Sie die Bereiche nicht ändern, da der erzeugte Animationsclip die Vorgaben nicht einhält.
Retargeting und Animationsclip
Mecanim Retargeting ist in zwei Phasen unterteilt. Die erste Phase besteht darin, eine Standard-Skelett-Transformations-Animation in einen normalisierten humanoiden Animationsclip (oder Muskel-Clip) zu konvertieren. Diese Phase findet im Editor statt, wenn die Animationsdatei importiert wird. Sie wird intern als "RetargetFrom" bezeichnet. Die zweite Phase findet im Spielmodus statt, wenn der Muscle Clip ausgewertet und auf die Skelettknochen eines Humanoid Rig angewendet wird.

Die Aufteilung des Retargeting in zwei Phasen hat zwei große Vorteile. Der erste Punkt ist die Lösungsgeschwindigkeit. Die Hälfte des Retargeting-Prozesses findet offline statt, nur die andere Hälfte wird zur Laufzeit durchgeführt. Der andere Vorteil ist die Komplexität der Szene und der Speicherverbrauch. Da der Muscle Clip für sein ursprüngliches Skelett vollständig abstrahiert ist, muss das Quellenskelett nicht zur Laufzeit einbezogen werden, um das Retargeting durchzuführen.
Die zweite Phase ist sehr einfach. Sobald Sie ein gültiges Humanoid Rig haben, wenden Sie einfach Muscle Clip mit RetargetTo solver darauf an. Dies geschieht automatisch unter der Haube.
Die erste Phase, die Umwandlung einer Skelettanimation in einen Muscle Clip, kann etwas schwieriger sein. Der Skelettanimationsclip wird mit einer festen Rate abgetastet. Für jede Probe wird die Skelett-Pose in eine Muskelraum-Pose umgewandelt und ein Schlüssel zum Muskel-Clip hinzugefügt. Nicht alle Skelett-Rigs werden passen, denn es gibt so viele verschiedene Möglichkeiten, ein Skelett-Rig zu bauen und zu animieren. Einige Skelett-Riggs erzeugen eine gültige Ausgabe, aber möglicherweise mit Informationsverlusten. Wir werden nun prüfen, was benötigt wird, um eine verlustfreie normalisierte humanoide Animation zu erstellen... den Muskel-Clip.
Anmerkung: Mit verlustfrei meinen wir, dass beim Retargeting von einem Skelett-Rig zu Muscle Clip und anschließendem Retargeting zurück zum gleichen Skelett-Rig die Animation intakt bleibt. Sie wird sogar fast unversehrt sein. Die ursprüngliche Verdrehung der Arme und Beine geht verloren und wird durch das ersetzt, was der Twist Solver berechnet. Wie bereits in diesem Dokument erläutert, gibt es keine Darstellung der Zwillingsaufteilung im Muscle Space.
- Die lokale Position der Bones muss im humanoiden Rig und in der Animationsdatei gleich sein. Es kann vorkommen, dass das zur Erstellung des Humanoid-Rigs verwendete Skelett von dem in der Animationsdatei abweicht. Achten Sie darauf, dass Sie genau das gleiche Gerüst verwenden. Wenn dies nicht der Fall ist, wird beim Import eine Warnung an die Konsole gesendet.
- Dazwischen liegende Bones dürfen nicht animiert sein. Dies geschieht häufig bei einem 3DSMAX-Skelett, bei dem der dritte Wirbelsäulenknochen sowohl eine Translations- als auch eine Rotationsanimation hat. Es passiert auch, wenn Bip001 als Hüfte verwendet wird und das Becken eine Animation hat. Wenn dies nicht der Fall ist, wird beim Import eine Warnung an die Konsole gesendet.
- Die lokale Ausrichtung des Zwischenbones muss im Humanoid Rig und in der Animationsdatei gleich sein. Dies kann vorkommen, wenn die automatische Humanoid-Konfiguration verwendet wird, die sich auf die Hautbindungspose zur Erstellung der T-Stellung verlässt. Vergewissern Sie sich, dass die Drehung der Skin Bind Pose für die Zwischenbones die gleiche ist wie die in der Animationsdatei. Wenn dies nicht der Fall ist, wird beim Import eine Warnung an die Konsole gesendet.
- Mit Ausnahme der Hüften wird die Übersetzungsanimation bei Knochen nicht unterstützt. 3DSMAX Biped setzt manchmal Translationsanimationen auf Wirbelsäulenknochen. Warnungen werden an die Konsole gesendet, wenn dies nicht der Fall ist.
Das 3DSMAX Biped wird hier als problematisches Gerät bezeichnet. Das liegt wahrscheinlich an seiner Beliebtheit und an der Tatsache, dass wir viele Fälle unterstützen mussten, in denen es mit Mecanim verwendet wurde. Beachten Sie, dass Sie bei der Erstellung neuer Animationen, die mit Mecanim Humanoid Rig verwendet werden sollen, von Anfang an die oben genannten Regeln befolgen sollten. Wenn Sie bereits existierende Animationen verwenden wollen, die einige der Regeln brechen, ist das immer noch möglich. Der Mecanim Retarget Solver ist robust und wird eine gültige Ausgabe produzieren, aber die verlustfreie Konvertierung kann nicht garantiert werden.
Beachten Sie, dass Sie bei der Erstellung neuer Animationen, die mit dem Mecanim Humanoid Rig verwendet werden sollen, von Anfang an die oben genannten Regeln befolgen sollten. Wenn Sie bereits existierende Animationen verwenden wollen, die gegen einige der Regeln verstoßen, ist dies immer noch möglich, da der Mecanim Retarget Solver robust ist und eine gültige Ausgabe produziert, aber die verlustfreie Konvertierung kann nicht garantiert werden.
