Neuzuweisung von 3D-Skeletten
Optionen für Neuzuweisung
Knochen-Map
Wenn Sie den Skeleton3D-Node im erweiterten Szenenimportmenü auswählen, erscheint auf der rechten Seite ein Menü, das den Abschnitt "Neuzuweisen" enthält. Der Abschnitt "Neuzuweisen" hat eine einzige Property bone_map.
Wenn der Skeleton-Node ausgewählt ist, legen Sie zunächst eine neue BoneMap und SkeletonProfile an. Godot hat eine Vorgabe namens SkeletonProfileHumanoid für humanoide Modelle. Dieses Tutorial geht davon aus, dass Sie SkeletonProfileHumanoid verwenden.
Bemerkung
Wenn Sie ein anderes Profil als SkeletonProfileHumanoid benötigen, können Sie ein SkeletonProfile aus dem Editor exportieren, indem Sie ein Skeleton3D auswählen und das Menü Skeleton3D in der Toolbar des 3D-Viewports verwenden.
Wenn Sie SkeletonProfileHumanoid verwenden, wird ein automatisches Zuordnung durchgeführt, wenn das SkeletonProfile gesetzt ist. Wenn die automatische Zuordnung nicht gut funktioniert, können Sie Knochen manuell zuordnen.
Fehlende, doppelte oder falsche Zuordnungen von Parent-Child-Beziehungen werden durch einen magentafarbenen/roten Button angezeigt (je nach Editoreinstellung). Sie blockiert den Importvorgang nicht, warnt aber davor, dass Animationen möglicherweise nicht korrekt geteilt werden.
Bemerkung
Die automatische Zuordnung verwendet Pattern Matching für die Knochennamen. Wir empfehlen daher, gebräuchliche englische Namen für Knochen zu verwenden.
Nachdem Sie die bone_map eingerichtet haben, stehen Ihnen in den folgenden Abschnitten verschiedene Optionen zur Verfügung.
Tracks entfernen
Wenn Sie Ressourcen als AnimationLibrary importieren, die gemeinsam genutzt werden sollen, empfehlen wir, diese Optionen zu aktivieren. Wenn Sie jedoch Ressourcen als Szenen importieren, sollten diese Optionen in einigen Fällen deaktiviert werden. Wenn Sie zum Beispiel einen Charakter mit animierten Accessoires importieren, können diese Optionen dazu führen, dass die Accessoires nicht animiert werden.
Außer Knochen-Transform
Entfernt alle Tracks außer dem Knochen-Transform-Track aus den Animationen.
Unwichtige Positionen
Entfernt andere Positions-Tracks als root_bone und scale_base_bone, die in SkeletonProfile definiert sind, aus den Animationen. In SkeletonProfileHumanoid bedeutet dies, dass andere Positions-Tracks als "Root" und "Hips" entfernt werden sollen. Seit Godot 4.0+ schließen Animationen die Knochen-Standardpose in den Transform-Wert ein. Wenn Sie diese Option deaktivieren, kann die Animation die Körperform unvorhersehbar verändern.
Nicht-zugeordnete Knochen
Entfernt nicht zugeordnete Knochen-Transform-Tracks aus den Animationen.
Knochen-Umbenenner
Knochen umbenennen
Umbenennen der zugeordneten Knochen.
Einzigartiger Node
Macht das Skelett zu einem eindeutigen Node mit dem in skeleton_name angegebenen Namen. Dies ermöglicht die Vereinheitlichung der Animationspfade unabhängig von der Szenenhierarchie.
Ruheposen-Fixer
Für die in SkeletonProfileHumanoid definierten Referenzposen gelten die folgenden Regeln:
Für Humanoide gilt die T-Pose
Der Humanoide ist im rechtshändigen Y-oben-Koordinatensystem nach +Z ausgerichtet
Der Humanoide sollte keinen Transform als Node haben
Richtet die +Y-Achse vom Parent-Gelenk zum Child-Gelenk
Die +X-Rotation beugt das Gelenk wie ein Muskel, der sich zusammenzieht
Diese Regeln sind praktische Definitionen für Blend-Animationen und Inverse Kinematik (IK). Wenn Ihr Modell nicht dieser Definition entspricht, müssen Sie es mit diesen Optionen korrigieren.
Node-Transform anwenden
Wenn das Asset nicht korrekt für die gemeinsame Nutzung exportiert wurde, kann das importierte Skelett einen Transform als Node haben. Ein aus Blender exportiertes glTF, bei dem kein "Apply Transform" ausgeführt wurde, ist beispielsweise ein solcher Fall. Es sieht so aus, als ob das Modell mit der Definition übereinstimmt, aber die internen Transforms unterscheiden sich von der Definition. Diese Option behebt solche Modelle, indem Transforms beim Import angewendet werden.
Bemerkung
Wenn die importierte Szene andere Objekte als Skelette enthält, kann sich diese Option nachteilig auswirken.
Positions-Tracks normalisieren
Der Positions-Track wird hauptsächlich für die Bewegung des Modells verwendet, aber die gemeinsame Nutzung der Bewegungsanimation durch Modelle mit unterschiedlichen Höhen kann aufgrund der unterschiedlichen Schrittlänge zu einem Verrutschen führen. Diese Option normalisiert die Werte des Positions-Tracks basierend auf der scale_base_bone-Höhe. Die scale_base_bone-Höhe wird im Skelett als motion_scale gespeichert, und die normalisierten Position-Track-Werte werden beim Abspielen mit diesem Wert multipliziert. Wenn diese Option deaktiviert ist, werden die Positions-Tracks nicht normalisiert und die motion_scale des Skeletts wird immer als 1.0 importiert.
Bei SkeletonProfileHumanoid ist scale_base_bone "Hips", daher wird die Höhe der Hüfte als motion_scale verwendet.
Achse überschreiben
Vereinheitlicht die Knochen-Standardposen der Modelle durch Überschreiben, damit sie mit den im SkeletonProfile definierten Referenzposen übereinstimmen.
Bemerkung
Dies ist die wichtigste Option für die gemeinsame Nutzung von Animationen in Godot 4.0+, aber seien Sie sich bewusst, dass diese Option zu schrecklichen Ergebnissen führen kann, wenn die ursprüngliche, extern gesetzte Knochen-Ruhepose wichtig ist. Wenn Sie Animationen unter Beibehaltung der ursprünglichen Knochen-Ruhepose teilen möchten, sollten Sie das Realtime Retarget Module verwenden.
Korrigieren der Silhouette
Versucht, die Silhouette des Modells an die in SkeletonProfile definierten Referenzposen, wie z. B. T-Pose, anzupassen. Dies kann keine Silhouetten korrigieren, die zu unterschiedlich sind, und es funktioniert möglicherweise nicht für die Korrektur von Knochen-Rollen.
Mit SkeletonProfileHumanoid muss diese Option für T-Pose-Modelle nicht aktiviert werden, sollte aber für A-Pose-Modelle aktiviert werden. In diesem Fall können die Ergebnisse für den fixierten Fuß jedoch schlecht sein, abhängig von der Fersenhöhe des Modells, so dass es notwendig sein kann, die SkeletonProfile Knochen-Namen, die nicht fixiert werden sollen, in das Filter-Array einzufügen, wie im folgenden Beispiel.
Außerdem kann es bei Modellen mit gebeugten Knien oder Füßen notwendig sein, die Höhe der scale_base_bone anzupassen. Hierfür können Sie die Option base_height_adjustment verwenden.