Schwänze animieren, für die der Rigger keinen Knochen vorgesehen hat
Von Oleg Sidorkin, CTO und Mitgründer von Cinevva
Aktualisiert am 11. September 2026: Was wir von der Maus gelernt haben ergänzt elastische Biegungen, Bodenkontakt und eine zweite Art von schwanzbedingtem Anheben des Körpers.
Ein Nutzer riggte einen anthropomorphen Fuchs mit unserem Rigger und spielte den Walk-Clip ab. Der Körper sah gut aus. Der Schwanz faltete sich wie ein nasses Handtuch um das linke Bein, und dort, wo die Gewichtungen des linken und rechten Beins aufeinandertrafen, riss das Mesh auseinander. Dieser Fuchs dient im Folgenden als durchgängiges Beispiel, und die Lösung ist inzwischen sowohl im Rigger als auch in der Runtime-Bibliothek aktiv, die seine Clips abspielt.
Sowohl der Fuchs als auch die Maus in diesem Artikel wurden mit unserem 3D-Modellgenerator erzeugt und anschließend in Cinevva geriggt und animiert.

Von links nach rechts, mitten im Schritt und im selben Frame: das Rig direkt aus dem Rigger, dasselbe Rig mit dem Schwanz als ein einziges Teil am Becken und der Schwanz auf einer eigenen Knochenkette, den die Runtime schwingen lässt. Alle drei können Sie weiter unten frei umkreisen.
Warum ein humanoider Rigger das tut
Unsere Fast-Engine basiert auf Make-It-Animatable, das ein festes Skelett im Mixamo-Stil vorhersagt: 22 Körperknochen oder 65 mit Fingern. Jeder Vertex im Mesh muss einem dieser Knochen zugewiesen werden. Ein Schwanz steht nicht auf der Liste, also tut das Modell das Nächstbeste, das es kennt, und weist die Vertices des Schwanzes dem Körperteil zu, der in seinem erlernten Merkmalsraum am nächsten liegt. Bei diesem Fuchs war das das linke Schienbein, während der Rest auf die beiden Oberschenkel verteilt wurde.
Das ist kein Fehler in den Gewichtungen. Es liegt an der Vorlage. Keine Eingabeaufforderung und keine Einstellung bringt das Modell dazu, einen Schwanzknochen auszugeben, denn es gibt keinen Schwanzknochen, den es ausgeben könnte. Dasselbe passiert mit Flügeln, Umhängen, langen Haaren und allem anderen, was am Rumpf hängt.
Bevor wir irgendetwas änderten, maßen wir, was das bei den 1.582 Schwanz-Vertices des Fuchses bewirkte. Der Abstand jedes Vertex zu den Knochen, die ihn tatsächlich bewegen, gewichtet nach den Gewichtungen, betrug bei einem 191 cm großen Modell durchschnittlich 47 cm. Der Schwanz wurde aus einem halben Meter Entfernung gesteuert.
Den Schwanz finden
Das geriggte GLB ist zu diesem Zeitpunkt alles, was wir haben, und mehr brauchen wir auch nicht. Der Verarbeitungsschritt funktioniert mit der Ausgabe jedes Riggers, nicht nur mit unserer.
Ein Abstandsfeld über dem Skelett. Für jeden Vertex
und der Skelettabstand eines Vertex ist das Minimum über alle Segmente. Endgelenke erhalten hinter dem Gelenk einen kurzen Fortsatz, damit eine Schnauze oder eine Hand nicht als weit vom eigenen Knochen entfernt gilt. Ein Vertex ist weit entfernt, wenn dieser Abstand 7 % der Modellhöhe überschreitet. Beim Fuchs sind das 13 cm.
Zusammenhängende Bereiche weit entfernter Haut. Weit entfernte Vertices werden entlang der Faces des Meshes zu verbundenen Komponenten gruppiert. Ein Detail kostete uns eine Stunde: Exporteure trennen Vertices an UV- und harten Normalennähten. Dieses Mesh hat daher 23.129 Vertices, aber nur 29.081 Dreiecke, und der Face-Graph allein zerlegt einen einzigen Schwanz in Dutzende Inseln. Wir verschweißen die Vertices zunächst anhand ihrer Position, bestimmen die Zusammenhangskomponenten im verschweißten Graphen und schreiben die Gewichtungen anschließend für jeden ursprünglichen Vertex zurück.
Wo ist der Bereich befestigt? Der Ansatzring eines Bereichs besteht aus den nicht weit entfernten Vertices direkt daneben. Sein Mittelpunkt zeigt uns über das nächstgelegene Gelenk, wo der Bereich herabhängt – mit einer Bevorzugung: Ein Rumpf- oder Oberschenkelgelenk innerhalb des 1,5-Fachen der kürzesten Entfernung gewinnt, denn rund um das Becken liegen die Oberschenkelköpfe genauso nah wie die Hüften, und eine Schwanzwurzel zwischen ihnen gehört zum Körper. Den Gewichtungen des Ansatzrings vertrauen wir dabei bewusst nicht. Bei einem Schwanz, der als eigene Hülle modelliert ist – wie bei den meisten Spielmodellen –, ist der Ansatzring der eigene Wurzelring des Schwanzes und trägt dieselben fehlerhaften Gewichtungen, die wir gerade korrigieren wollen.
Ist es ein Körperanhang oder gehört es zum Körper? Dafür verwenden wir zwei Tests. Die weit vom Knochen entfernte Haut eines dicken Rumpfs umschließt einen Knochen, sodass ihr Schwerpunkt wieder auf dem Knochen liegt. Ein Schwanz ragt zu einer Seite heraus, weshalb sein Schwerpunkt weit von jedem Knochen entfernt ist. Wir verlangen, dass der Skelettabstand des Schwerpunkts mindestens 40 % der Reichweite des Bereichs beträgt. Dann folgt ein Formtest: Sind
Der Schwanz des Fuchses bestand aus zwei überlappenden Hüllen – Fell über Haut, niemals miteinander verschweißt. Deshalb werden Bereiche am selben Ansatz zusammengeführt, wenn sich ihre Bounding-Boxen um mehr als die Hälfte überlappen. Ein Schwanz, eine Kette.
Schritt eins: starr machen
Die ehrliche erste Lösung dauert einen Nachmittag. Jeder Vertex des Bereichs erhält auf Hips die Gewichtung 1,0. Der Schwanz hört auf zu reißen und bewegt sich als ein einziges Teil mit dem Becken. Er sieht wie ein Brett aus; das ist der mittlere Fuchs im Bild. Wir haben diese Version als Meilenstein veröffentlicht, weil ihre Dehnung konstruktionsbedingt exakt null beträgt und sie damit eine nützliche Referenz für die Messung weiter unten ist.
Schritt zwei: eine Kette entlang des Schwanzes wachsen lassen
Eine Koordinate entlang des Schwanzes. Wir führen Dijkstra vom Ansatzring über den Bereich aus und verwenden dabei die Kantenlängen als Kantengewichte. Jeder Schwanz-Vertex erhält einen geodätischen Abstand
Gelenke. Die Anzahl der Segmente beträgt Tail_1 bis Tail_K und werden durch ein gewichtungsloses Tail_End ergänzt. Sie sind Hips untergeordnet und verwenden dieselbe Bind-Rotation wie Hips, sodass jeder Knochen im Koordinatensystem seines Elternknochens eine reine Translation darstellt. Ihre inversen Bind-Matrizen ergeben sich direkt daraus, und die vorhandenen Clips referenzieren sie nie, sodass in nachgelagerten Schritten nichts kaputtgeht.
Gewichtungen. Mit
An einem Gelenk treffen sich die beiden Knochen mit einer 50/50-Gewichtung; in der Mitte eines Segments gehört die Haut vollständig einem Knochen. Beim Wurzelsegment ist „prev“ Hips, sodass der Schwanz fließend in den Körper übergeht, anstatt am Ansatzring einen Knick zu bilden.
Nach diesem Verarbeitungsschritt sank der gewichtete Knochenabstand am Schwanz von 47 cm auf 17 cm, was ungefähr dem Radius des Schwanzes entspricht. Näher kann Haut dem Knochen, der sie steuert, kaum kommen.

Schritt drei: Jemand muss die Knochen bewegen
Keiner der Clips in unserer Bibliothek enthält Schwanzspuren. Ohne weitere Arbeit behält die Kette daher ihre Bind-Pose bei, und der Fuchs läuft mit einem Brett herum. Spiele lösen das mit prozeduraler Sekundärbewegung, und wir tun dasselbe – in der Runtime-Bibliothek, die jedes geriggte Modell ohnehin lädt.
Jede Gelenkspitze ist ein Partikel
mit
Da die Partikel im Weltraum liegen, bleibt der Schwanz beim Drehen oder Beschleunigen der Hüften zurück und schwingt eigenständig. Nichts davon ist geskriptet.
Drei Fehler sind hier erwähnenswert, denn jeder davon sah gut aus, bis wir ihn gemessen haben.
Die erste Version zog jedes Partikel in jedem Frame um einen festen Anteil zu seinem Ziel: 12 % bei 60 fps. Als Feder ausgedrückt entspricht das
Die zweite Version speiste die Seilkorrektur als Geschwindigkeit zurück: Korrektur geteilt durch
Der dritte Fehler war der unten beschriebene Tragwinkel. Er wurde im lokalen Koordinatensystem jedes Gelenks angewendet, sodass ein Schwanz mit vier Knochen viermal angehoben wurde, sich zu einer Kugel am Rücken des Fuchses zusammenrollte und seine eigene Haut an jeder Biegung zerriss. Die Messung weiter unten deckte das auf: Die Kantendehnung des Schwanzes stieg auf ein p99 von 2,3 gegenüber einem Körper-Basiswert von 1,3 – schlechter als am Schienbein, mit dem alles begonnen hatte. carry bezeichnet jetzt die Anhebung des gesamten Schwanzes und wird auf seine Gelenke verteilt.
Clipping. Der Schwanz war so modelliert, dass er gerade zwischen den Beinen nach unten hing, und im Laufzyklus gingen die Füße durch ihn hindurch. Die Ruhepose, auf die die Feder zielt, entspricht daher nicht der des Meshes: Ein carry von 50° hebt die Ruheziele um die Seitenachse der Hüften nach hinten und oben an, so wie ein Fuchs seinen Schwanz in Bewegung trägt. Diese 50° sind die Anhebung des gesamten Schwanzes und werden auf seine Gelenke verteilt, sodass der Bogen sanft bleibt, unabhängig davon, ob die erzeugte Kette vier oder acht Knochen lang ist. Außerdem darf kein Partikel die durch die Schwanzwurzel verlaufende, nach vorn gerichtete Ebene überschreiten. So kann der Schwanz niemals zwischen die Beine schwingen.
Messung
Dies sind die ursprünglichen Messwerte des Fuchses vom 6. September, also vor den weiter unten beschriebenen Änderungen für die Maus. Sie dokumentieren den ersten Ketten-Solver und sind kein neuer Benchmark der überarbeiteten Standardwerte.
Standbilder beweisen nichts über das Zerreißen, deshalb messen wir die Kantendehnung während des Clips. Für jede Mesh-Kante, deren beide Vertices auf dem Schwanz liegen, berechnen wir zu 24 gleichmäßig über den Walk-Clip verteilten Zeitpunkten das Verhältnis ihrer geskinnten Länge zu ihrer Bind-Länge. Ein Verhältnis von 1 bedeutet unverformte Haut. Eine Kante, die über 1,5 gedehnt oder unter 0,67 gestaucht wird, gilt als zerrissen. Die Körperkanten werden auf dieselbe Weise gemessen und dienen als Basiswert für normale Skinning-Verformungen.
| Walk-Clip, 96.864 Schwanzkanten-Samples | p95 | p99 | Maximum | zerrissen |
|---|---|---|---|---|
| Ursprüngliches Rig | 1.60 | 2.42 | 4.03 | 11.4% |
| Starr an Hips | 1.00 | 1.00 | 1.00 | 0% |
| Schwanzkette | 1.09 | 1.18 | 1.30 | 0% |
| Körper, zum Vergleich | 1.13 | 1.29 | 1.78 | — |
Beim ursprünglichen Rig wurde eine von neun Schwanzkanten bis über die Rissgrenze gedehnt, und die schlimmste Kante erreichte das Vierfache ihrer Bind-Länge. Die schlimmste Kante der Kette ist 30 % länger und bleibt damit innerhalb des körpereigenen Basiswerts von 1,78; nichts reißt. Der starre Schwanz bleibt exakt bei 1,00, weil er sich als ein einziges Teil bewegt. Dieser Wert zeigte uns, dass das Testsystem selbst korrekt funktionierte, bevor wir seinen Ergebnissen für die Kette vertrauten.
Ein Schwanz, der tatsächlich schwingt, muss seine eigene Haut ein wenig verformen. Die Aufgabe der Kette besteht daher nicht darin, 1,00 zu erreichen, sondern unter den Werten zu bleiben, die der Körper ohnehin aufweist. Eine frühere Version dieser Tabelle zeigte für die Kette ein p99 von 1,03. Das sah besser aus, war aber schlechter: Der Schwanz bewegte sich kaum, weil der oben beschriebene Geschwindigkeitsfehler ihn so stark gedämpft hatte, dass er fast der starren Version entsprach.
Der Live-Vergleich
Drei Exemplare des Fuchses, derselbe Clip, derselbe Frame. Ziehen Sie zum Umkreisen und verwenden Sie das Mausrad zum Zoomen. Wechseln Sie zwischen Clips, schalten Sie die Schwanzphysik aus, um die Kette in ihrer angehobenen Ruhepose zu sehen, und blenden Sie die Knochen ein, um die Position der Kette zu erkennen.
Dieselbe Kette von der Seite, einzeln und mit eingezeichnetem Skelett. Im Clip „Sprint“ ist die Federwirkung am besten zu erkennen.Was uns die Maus beigebracht hat
Der Fuchs zeigte, dass eine Kette das Aufreißen verhindern konnte. Bei einer Maus mit langem, dünnem Schwanz waren die verbleibenden Bewegungsfehler deutlich leichter zu erkennen. Eine scharfe Biegung, die im Fell eines Fuchses verschwindet, wirkt bei der Maus wie ein gebrochenes Gelenk. Ihr Schwanz reicht außerdem bis zum Boden, und seine modellierte Form krümmt sich zu einer Seite. Das sind drei verschiedene Probleme; eine höhere Federsteifigkeit löst nicht alle davon.
Probiere die Maus unten mit verschiedenen Animationen aus. Ziehe die Figur, um die Ansicht zu drehen, scrolle den Streifen mit Vorschaubildern horizontal oder nutze Suche und Kategoriefilter, um eine Bewegung zu finden. Klicke auf eine Kachel, um sie in der großen Vorschau abzuspielen. „Walk“, „Crouch Backward“, „Crawl Idle“ und „Back Flip“ sind gute Ausgangspunkte, um den Schwanz zu untersuchen. Der Streifen verwendet dieselben Live-Animationsvorschauen wie unser Animations-Hero und stellt den vollständigen Katalog bereit, wobei die Bewegungen beim Durchsuchen geladen werden.
Die vollständige Animationsbibliothek öffnen →, um diese Bewegungen mit deinem eigenen geriggten Charakter auszuprobieren und die gewünschten Clips zu exportieren.
Auch eine Federkette braucht Biegewiderstand
Die Partikel waren so eingeschränkt, dass die Länge jedes Knochens erhalten blieb, doch jedes Gelenk konnte weiterhin nahezu unabhängig schwingen. Längenbeschränkungen verhindern Dehnung; sie verhindern nicht, dass ein Gelenk einknickt. Die Maus machte genau diesen Unterschied sichtbar.

Vor den Korrekturen: Die Segmentlängen beizubehalten reichte nicht aus, um die Kurve glatt zu halten.
Jetzt koppeln wir die zusätzlichen Biegungen benachbarter Gelenke, gemessen relativ zur Ruhekurve. Die Biegungen werden in einem gemeinsamen Referenzkoordinatensystem verglichen, damit unterschiedliche Knochenachsen eine Linksbiegung nicht in eine unzusammenhängende Verdrehung des nächsten Gelenks verwandeln. Jeder Schritt liest einen Schnappschuss seiner Nachbarn statt teilweise aktualisierter Werte. Die Kopplungsüberblendung beträgt
Die elastische Biegung eines Gelenks ist auf 30° über seine Ruherichtung hinaus begrenzt. Außerdem haben wir die Dämpfung auf 0,65 erhöht und entfernen Geschwindigkeit, die weiter gegen den Biegeanschlag drückt, damit sie sich nicht ansammelt und ruckartig freigesetzt wird. Die Basis bleibt von der Hüfte gestützt, während die Spitze weicher bleibt. Bodenkontakt kann die Biegegrenze außer Kraft setzen, wenn der Schwanz auf dem Boden liegen muss.
Kopplung von Rotationen statt Partikelpositionen. Nummerieren wir die
Diese Konjugation ändert das Koordinatensystem der Biegung; sie fügt dem Charakter keine weitere Rotation hinzu. Mit Schnappschüssen
An der Basis liegt das Nachbarziel auf halbem Weg zwischen der Biegung des nächsten Gelenks und dem Identitätsquaternion
Für ein Einheitsquaternion
Wir transformieren diese Biegung zurück in das Koordinatensystem des übergeordneten Elements und wenden sie vor den Kontaktprojektionen auf
Die geladene Pose ist nicht unbedingt die Bind-Pose
Die gespeicherte Datei der Maus enthielt bereits eine Rotation von etwa 28° am letzten Schwanzgelenk. Wir interpretierten diese geladene Rotation als neutral und addierten anschließend die Federbewegung. Dadurch wurde eine zuvor animierte oder exportierte Pose zu einem dauerhaften Bestandteil des Federziels.
Der Solver rekonstruiert jetzt, sofern vorhanden, neutrale lokale Transformationen aus den inversen Bind-Matrizen des Skeletts. Wenn ein Rig keinen Tail_End-Hilfsknochen besitzt, setzt sein letztes Segment die eingehende Tangente fort, ausgedrückt im lokalen Koordinatensystem dieses letzten Knochens. Einen Vektor aus dem Koordinatensystem des übergeordneten Elements zu kopieren ist falsch, sobald der Endknochen eine andere Ausrichtung hat.
Die einseitige Krümmung hatte noch eine weitere Ursache: Sie war in der eigentlichen Bind-Geometrie vorhanden. Die korrekte Rekonstruktion der Bind-Pose bewahrte daher diese Abweichung. Die Simulation verwendet nun standardmäßig einen zentrierten Ruhebogen, der im Hüftkoordinatensystem aufgebaut und in das Koordinatensystem jedes korrigierten übergeordneten Elements umgerechnet wird. Mit restCurve lässt sich die modellierte Krümmung wieder einblenden: 0 entspricht dem zentrierten Bogen, 1 behält die erstellte Kurve bei. Dadurch ändert sich das Ziel der Federn; das Mesh oder seine Skin-Gewichte werden nicht verändert.
Rekonstruktion der Referenztransformationen. Sei
Durch Zerlegen von
Konstruktion des zentrierten Bogens. Sei restCurve und
Dabei ist
Der Schwanz darf den Boden berühren, aber nicht die Maus anheben
Beim Bodenkontakt wird ein Segment auf den Schnittkreis seiner Längenkugel mit dem Boden gedreht. Würde man lediglich die Höhe eines Partikels begrenzen, würde sich der Knochen verkürzen; begrenzt man die Höhe und stellt anschließend die Länge wieder her, kann das Partikel erneut unter dem Boden landen. Für die Dicke lassen wir 0,025 Welteinheiten unterhalb der Mittellinie frei, verwerfen die nach unten gerichtete Kontaktgeschwindigkeit und dämpfen das Gleiten. Der ebene Boden liegt standardmäßig bei Welt-Y = 0 und kann verschoben oder deaktiviert werden. Dies ist eine Ebenenbeschränkung, keine Gelände- oder vollständige Mesh-Kollision.
Der Schnitt von Kugel und Boden. Schreiben wir
Liegt der vorhergesagte Endpunkt unter dem Boden, definieren wir
Seine Höhe ist exakt
Nach den übrigen Geschwindigkeitsprojektionen wird bei einem Partikel mit Bodenkontakt die verbleibende Abwärtsgeschwindigkeit entfernt und seine Geschwindigkeit gedämpft:
Dies ist ein unelastischer Kontakt mit einfacher Dämpfung, kein Coulomb-Reibungsmodell. Er verhindert, dass die Schwerkraft Abwärtsgeschwindigkeit aufbaut, während der Schwanz auf dem Boden ruht.
Damit war das Eindringen des Schwanzes behoben, doch es gab noch zwei andere Stellen, an denen ein Schwanz die Füße schweben lassen konnte.
Erstens setzte der Viewer den tiefsten Punkt des gesamten geladenen Meshes auf den Boden. Hing der gespeicherte Schwanz unter die Fußsohlen, wurde der gesamte Charakter angehoben, um Platz für den Schwanz zu schaffen. Bei der Platzierung im Viewer wird nun überwiegend vom Schwanz beeinflusste Skin-Geometrie ignoriert, wenn die Unterkante des Körpers bestimmt wird; die Kameraeinstellung berücksichtigt weiterhin den gesamten Charakter.
Zweitens berücksichtigte auch der Body-Grounding-Durchlauf des Retargeters den Schwanz. Während „Back Flip“ hob er das Becken an, um diese Skin-Geometrie vom Boden fernzuhalten, obwohl der unabhängige Schwanz-Solver sie anschließend ohnehin bewegen würde.
Welche Skin-Geometrie darf das Becken anheben? Sei
Dabei ist
Für den folgenden Vergleich ist die angegebene zusätzliche Anhebung die Differenz zwischen den endgültigen Beckenbahnen und nicht lediglich zwischen den Rohkorrekturen:
Gemessene Beckenanhebung gegen Ende von „Back Flip“
Wir haben dieselbe Maus zu denselben Animationszeitpunkten abgetastet und dabei nur geändert, ob der Schwanz beim Body-Grounding berücksichtigt wurde. Beide Spalten verwenden dieselben Weltkoordinaten des Modells; die Differenz isoliert die zusätzliche Höhe, die durch die Berücksichtigung des Schwanzes entsteht.
| Zeitpunkt im 1,93-s-Clip | Beckenhöhe: Schwanz berücksichtigt | Beckenhöhe: Schwanz ausgeschlossen | Zusätzliche Anhebung durch Berücksichtigung des Schwanzes |
|---|---|---|---|
| 1,16 s | 50,5 cm | 35,0 cm | 15,4 cm |
| 1,55 s | 81,3 cm | 70,3 cm | 11,0 cm |
| 1,84 s | 92,2 cm | 77,2 cm | 15,0 cm |
| 1,93 s | 90,6 cm | 77,2 cm | 13,4 cm |
Der Charakter soll sich beim Aufstehen nach der Landung anheben. Der Fehler ist die zusätzliche Anhebung in der letzten Spalte, nicht diese beabsichtigte Aufrichtbewegung. Die Werte wurden unabhängig voneinander aus den abgetasteten Weltpositionen gerundet.
Bei dieser Maus beseitigte der Ausschluss des Schwanzes gegen Ende von „Back Flip“ etwa 15 cm zusätzliche Beckenanhebung. Gegen Ende blieb die Körperprüfung innerhalb von etwa einem Millimeter zum Referenzboden, statt mehrere Zentimeter darüber zu schweben. Die Skin-Geometrie des Schwanzes bestimmt nun weder den Boden des Körpers noch die Korrektur, die sein Becken anhebt. Der Schwanz-Solver selbst dreht ausschließlich Schwanzknochen; er verschiebt niemals das Modell, die Hüfte oder die Füße.
Eine Animation kann eine Pose übernehmen, bevor du sie überhaupt abspielst
Die angehobene Hocke machte ein separates Problem sichtbar. Wir erzeugen die Bibliotheksclips schrittweise, damit der Viewer mit der Wiedergabe beginnen kann, bevor alle Clips bereit sind. Das Retargeting verwendete dasselbe Skelett wie die Wiedergabe. Zwischen den Berechnungen konnte die Vorschau das Becken bewegen, woraufhin der nächste Clip diese animierte Pose als Kalibrierungsreferenz einlas. Ein Zurücksetzen beim Wechsel zwischen Clips konnte eine fehlerhafte Referenz nicht reparieren, die bereits in die erzeugten Tracks übernommen worden war.
Das Retargeting arbeitet nun mit privaten Skelettkopien, die aus einer stabilen, vor Beginn der Wiedergabe erfassten Kalibrierung erstellt werden. Spätere Clip-Anfragen verwenden diese Referenz erneut, und parallele Anfragen besitzen separate Knochen. Ein Regressionstest bewegt und dreht die Live-Hüfte absichtlich zwischen ausgelieferten Clips; die erzeugten Tracks müssen mit denen eines sauberen Durchlaufs identisch bleiben, und die Berechnung darf die Live-Pose nicht verändern. Nicht jede sichtbare Bewegung war ein Fehler. „Climb Idle“ weist in seiner Quellschleife ein leichtes Wippen des Beckens auf, während der Root unbewegt bleibt. Und bei einer neuen Berechnung von „Crawl Idle“ blieben die Hände der Maus während der gesamten Schleife unterhalb ihres Kopfes; der Screenshot mit erhobenen Händen passte zu einem früheren verunreinigten Clip und war kein Beleg dafür, dass die Quellanimation diese Pose vorsah. Der Vergleich von Quelle, neuer Berechnung und abgespieltem Ergebnis verhinderte, dass wir beabsichtigte Bewegungen glätteten, um einen Kalibrierungsfehler zu kaschieren.
Was wir jetzt prüfen
Die Prüfungen umfassen schnelle Hüftbewegungen bei Ketten unterschiedlicher Länge, gleichmäßigere Biegungen benachbarter Glieder, identische Reaktionen auf der linken und rechten Seite, die Wiederherstellung der Bind-Pose, einen gedrehten Endknochen ohne Hilfsknochen sowie einen sauberen Schleifenschluss nach dem Aufwärmen. Bodentests decken das Hocken, angehobene Bodenebenen sowie das Absetzen und Lösen beim Anheben der Hüfte ab. Separate Regressionstests stellen sicher, dass der Kontakt des Schwanzes niemals den Körper bewegt und dass die Hautgewichtung des Schwanzes keine Anhebung des Beckens auslösen kann.
Diese Prüfungen sichern konkrete Invarianten ab. Sie ersetzen weder die Beobachtung der Maus während ihrer Bewegungen noch liefern sie neue Werte für die Dehnung des Fuchses. Die Live-Beispiele verwenden den überarbeiteten Solver; die frühere Fuchstabelle bleibt als Dokumentation der ursprünglichen Messung erhalten.
Was sich dadurch für dich ändert
Wenn du unter cinevva.com/tools/rigger einen Charakter mit Schwanz riggst, erhält der Schwanz automatisch eine eigene Knochenkette, der Jobstatus enthält einen appendages-Eintrag mit einer Beschreibung des erkannten Fortsatzes und die Vorschau lässt ihn schwingen. Über die Plattform-API geriggte Modelle erhalten dieselbe Datei. Seit der ursprünglichen Integration in rt/1.1.12 erkennt createAnimator Tail_*-Knochen und animiert sie ohne zusätzlichen Code. Frequenz, Dämpfung, Gravitation und Tragewinkel der Feder lassen sich anpassen, wenn du einen schwereren oder trägeren Schwanz möchtest. Ältere Dateien ohne Schwanzkette können durch erneutes Rigging noch einmal durch diesen Verarbeitungsschritt geschickt werden. Die oben beschriebenen Änderungen vom 11. September sind jetzt in den Webvorschauen von Cinevva verfügbar. Spiele, die eine ältere Runtime-Version verwenden, und bereits exportierte Clips werden nicht automatisch aktualisiert. Vorhandene gebackene Clips müssen neu erzeugt werden, damit die Korrekturen wirksam werden.
In Blender. Das Add-on führt denselben Verarbeitungsschritt in der Rig-Tabelle aus, bevor es die Armature erstellt. So erhält ein auf deinem eigenen Rechner geriggter Schwanz dieselbe Kette mit denselben Namen. Neben „Fingers“ befindet sich ein Kontrollkästchen für „Tail“, und die Ergebniskarte zeigt an, was erkannt wurde.
Außerhalb unserer Runtime. Eine Feder in einem Spiel hilft niemandem, der die Datei in Blender, Unity oder Unreal öffnet, denn dort bliebe der Schwanz unbewegt. Deshalb wird sie beim Export jetzt gebacken: Jeder ausgewählte Clip wird simuliert, und die Rotationen des Schwanzes werden als echte Keyframes aufgezeichnet. Der Exporter lässt den Clip lautlos laufen, bis der Schwanz wieder an der Ausgangsposition des Verarbeitungsschritts angekommen ist, und beginnt erst dann mit der Aufzeichnung. Denn ein aus dem Kaltstart gebackener Zyklus schließt nicht sauber, sodass der Schwanz beim Schleifenanfang springt. Die Spitze ist absichtlich das weichste Glied. Daher klingt ihre Einschwingbewegung am langsamsten ab, und ein einziger Aufwärmdurchlauf genügt nicht immer.
Der Verarbeitungsschritt ist bewusst konservativ. Er erzeugt nur für ein langes, vom Becken herabhängendes Körperteil eine Kette. Ohren, Haare und Ärmel bleiben ebenso unangetastet wie breite Teile am Rumpf: Eine frühere Version ordnete einen Umhang oder Rock starr dem jeweiligen Rumpfknochen zu, doch die Ergebnisse bei echten Uploads haben uns umdenken lassen. Eines dieser Kleidungsstücke hatte 6.540 Vertices im Hüftbereich, die der Rigger sinnvoll auf Hüfte und beide Oberschenkel verteilt hatte; mit nur einem Knochen hätte es den Beinen überhaupt nicht mehr folgen können. Ein Kleidungsstück anhand einer Vermutung über seine Art einem einzelnen Knochen zuzuordnen, ist ein erheblicher Eingriff in den Charakter eines Nutzers. Deshalb geschieht dies jetzt nur noch auf ausdrücklichen Wunsch und nicht mehr automatisch. Abgesehen von der vorderen Ebene gibt es keine Kollision mit den Beinen und auch kein Schwingen im Leerlauf, wenn der Charakter stillsteht. Der Schwanz eines stehenden Fuchses hängt daher ruhig in seiner Tragepose. Diese beiden Punkte stehen als Nächstes auf der Liste, ebenso wie eine entsprechende Behandlung von Flügeln, die eine andere Ruhepose und eine andere Feder benötigen.