Work in progress

The content of this page was not yet updated for Godot 4.2 and may be outdated. If you know how to improve this page or you can confirm that it's up to date, feel free to open a pull request.

2D-Skelette

Einführung

Bei der Arbeit mit 3D sind Skelett-Verformungen für Charaktere und Kreaturen üblich, und die meisten 3D-Modellierungsanwendungen unterstützen sie. Für 2D wird diese Funktion nicht so häufig verwendet, daher ist es schwierig, Mainstream-Software zu finden, die darauf ausgerichtet ist.

Eine Möglichkeit besteht darin, Animationen in Software von Drittanbietern wie Spine oder Dragonbones zu erstellen. Ab Godot 3.1 wird diese Funktion jedoch direkt unterstützt.

Warum sollten Sie Skelett-Animationen direkt in Godot erstellen wollen? Die Antwort ist, dass es viele Vorteile hat:

  • Bessere Integration in die Engine, damit weniger Aufwand beim Importieren und Bearbeiten durch ein externes Tool entsteht.

  • Möglichkeit zur Steuerung von Partikelsystemen, Shadern, Sounds, Aufrufskripten, Farben, Transparenz usw. in Animationen.

  • Das in Godot eingebaute Skelettsystem ist sehr effizient und auf Leistung ausgelegt.

In der folgenden Anleitung werden dann die 2D-Skelettverformungen erklärt.

Einrichtung

Siehe auch

Bevor Sie beginnen, empfehlen wir Ihnen, das Cutout-Animation-Tutorial durchzuarbeiten, um ein allgemeines Verständnis für das Animieren in Godot zu erlangen.

In diesem Tutorial werden wir ein einziges Bild verwenden, um unsere Figur zu erstellen. Laden Sie es von gBot_pieces.png herunter oder speichern Sie das Bild unten.

../../_images/gBot_pieces.png

Es ist auch ratsam, das endgültige Charakterbild herunterzuladen gBot_complete.png, um eine gute Referenz für das Zusammensetzen der verschiedenen Teile zu haben.

../../_images/gBot_complete.png

Erstellen der Polygone

Erstellen Sie eine neue Szene für Ihr Modell (wenn es sich um eine animierte Figur handelt, sollten Sie einen CharacterBody2D verwenden). Der Einfachheit halber wird ein leerer 2D Node als Root für die Polygone erstellt.

Beginnen Sie mit einem Polygon2D-Node. Es ist nicht nötig, ihn irgendwo in der Szene zu platzieren, also erstellen Sie ihn einfach so:

../../_images/skel2d1.png

Wählen Sie ihn aus und weisen Sie die Textur den zuvor heruntergeladenen Charakterteilen zu:

../../_images/skel2d2.png

Das direkte Zeichnen eines Polygons wird nicht empfohlen. Öffnen Sie stattdessen das Dialogfeld "UV" für das Polygon:

../../_images/skel2d3.png

Gehen Sie in den Punkte-Modus, wählen Sie den Bleistift und zeichnen Sie ein Polygon um das gewünschte Teil:

../../_images/skel2d4.png

Duplizieren Sie den Polygon-Node und geben Sie ihm einen passenden Namen. Rufen Sie dann erneut den "UV"-Dialog auf und ersetzen Sie das alte Polygon durch ein anderes in dem neuen gewünschten Teil.

Wenn Sie Nodes duplizieren und das nächste Teil eine ähnliche Form hat, können Sie das vorherige Polygon bearbeiten, anstatt ein neues zu zeichnen.

Vergessen Sie nicht, nach dem Verschieben des Polygons die UV zu aktualisieren, indem Sie im 2D-UV-Editor für Polygone Bearbeiten > Polygon in UV kopieren wählen.

../../_images/skel2d5.png

Machen Sie so weiter, bis Sie alle Teile zugeordnet haben.

../../_images/skel2d6.png

Sie werden feststellen, dass die Teile für Nodes im gleichen Layout erscheinen wie in der Originaltextur. Das liegt daran, dass beim Zeichnen eines Polygons standardmäßig die UV und die Punkte gleich sind.

Ordnen Sie die Teile neu an und bauen Sie die Figur. Das sollte ziemlich schnell gehen. Es besteht keine Notwendigkeit, die Rotationspunkte zu ändern, also machen Sie sich nicht die Mühe, sicherzustellen, dass die Rotationspunkte für jedes Teil richtig sind; Sie können sie vorerst beibehalten.

../../_images/skel2d7.png

Ach ja, die visuelle Reihenfolge der Teile ist noch nicht korrekt, da einige die falschen Teile verdecken. Ordnen Sie die Reihenfolge der Nodes neu an, um dies zu beheben:

../../_images/skel2d8.png

Und da haben Sie es! Es war auf jeden Fall viel einfacher als in der Cutout-Anleitung.

Erstellen des Skeletts

Erstellen Sie einen Skeleton2D-Node als Child des Root-Nodes. Dieser wird die Basis unseres Skeletts sein:

../../_images/skel2d9.png

Erstellen Sie einen Bone2D-Node als Child des Skeletts. Setzen Sie ihn auf die Hüfte (normalerweise beginnen Skelette hier). Der Knochen wird nach rechts zeigen, aber das können Sie vorerst ignorieren.

../../_images/skel2d10.png

Erstellen Sie weiterhin Knochen in der Hierarchie und benennen Sie sie entsprechend.

../../_images/skel2d11.png

Am Ende dieser Kette befindet sich ein Kiefer-Node. Dieser ist wiederum sehr kurz und zeigt nach rechts. Das ist normal für Knochen ohne Child-Nodes. Die Länge der Kiefer-Knochen kann mit einer Property im Inspektor geändert werden:

../../_images/skel2d12.png

In diesem Fall brauchen wir den Knochen nicht zu rotieren (zufälligerweise zeigt der Kiefer genau in das Sprite), aber falls Sie es benötigen, können Sie es gerne tun. Auch dies ist nur wirklich nötig für End-Knochen, da Nodes mit Child-Nodes in der Regel keine Länge oder eine bestimmte Rotation benötigen.

Machen Sie weiter und bauen Sie das ganze Skelett auf:

../../_images/skel2d13.png

Sie werden feststellen, dass alle Knochen eine lästige Warnung über eine fehlende Standardpose ausgeben. Das bedeutet, dass es an der Zeit ist, eine zu erstellen. Gehen Sie zum Node Skelett und erstellen Sie eine Standardpose. Diese Pose ist die Default-Pose, zu der Sie jederzeit zurückkehren können (was für die Animation sehr praktisch ist):

../../_images/skel2d14.png

Die Warnungen werden verschwinden. Wenn Sie das Skelett ändern (Knochen hinzufügen/entfernen), müssen Sie die Standardpose erneut einstellen.

Deformieren der Polygone

Wählen Sie die zuvor erstellten Polygone aus und weisen Sie den Node des Skeletts ihrer Property Skelett zu. Dadurch wird sichergestellt, dass sie schließlich von ihm verformt werden können.

../../_images/skel2d15.png

Klicken Sie auf die oben hervorgehobene Property und wählen Sie den Skelett-Node aus:

../../_images/skel2d16.png

Öffnen Sie erneut den UV-Editor für das Polygon und gehen Sie zum Abschnitt Knochen.

../../_images/skel2d17.png

Sie können noch keine Gewichte malen. Hierfür müssen Sie die Liste der Knochen aus dem Skelett mit dem Polygon synchronisieren. Dieser Schritt wird nur einmal und manuell durchgeführt (es sei denn, Sie ändern das Skelett durch Hinzufügen/Entfernen/Umbenennen von Bones). Er stellt sicher, dass Ihre Rigging-Informationen im Polygon erhalten bleiben, selbst wenn ein Node des Skeletts versehentlich verloren geht oder das Skelett verändert wird. Drücken Sie die Schaltfläche " Knochen mit Polygon synchronisieren", um die Liste zu synchronisieren.

../../_images/skel2d18.png

Die Liste der Knochen wird automatisch angezeigt. Standardmäßig ist Ihrem Polygon keine Gewichtung zugewiesen. Wählen Sie die Knochen aus, denen Sie eine Gewichtung zuweisen möchten, und malen Sie sie:

../../_images/skel2d19.png

Punkten in Weiß wird ein volles Gewicht zugewiesen, während Punkte in Schwarz nicht von dem Knochen beeinflusst werden. Wenn ein und derselbe Punkt für mehrere Knochen weiß gemalt wird, wird der Einfluss auf sie verteilt (daher ist es normalerweise nicht notwendig, Zwischenstufen zu verwenden, es sei denn, Sie möchten den Biegeeffekt verbessern).

../../_images/skel2d20.gif

Nach dem Malen der Gewichte hat das Animieren der Knochen (NICHT der Polygone!) den gewünschten Effekt, dass die Polygone entsprechend modifiziert und gebogen werden. Da Sie bei diesem Ansatz nur die Knochen animieren müssen, wird die Arbeit viel einfacher!

Aber es ist noch nicht alles in Butter. Der Versuch, Knochen zu animieren, die das Polygon biegen, führt oft zu unerwarteten Ergebnissen:

../../_images/skel2d21.gif

Dies geschieht, weil Godot beim Zeichnen des Polygons interne Dreiecke erzeugt, um die Punkte zu verbinden. Sie biegen sich nicht immer so, wie man es erwarten würde. Um dieses Problem zu lösen, müssen Sie Hints in der Geometrie festlegen, um klarzustellen, wie Sie die Verformung erwarten.

Interne Vertices

Öffnen Sie erneut das UV-Menü für jeden Knochen und gehen Sie zum Abschnitt Punkte. Fügen Sie einige interne Vertices in den Bereichen hinzu, in denen Sie erwarten, dass sich die Geometrie biegt:

../../_images/skel2d22.png

Gehen Sie nun in den Bereich Polygon und zeichnen Sie Ihre eigenen Polygone mit mehr Details nach. Stellen Sie sich vor, dass Sie beim Biegen Ihrer Polygone sicherstellen müssen, dass sie sich so wenig wie möglich verformen, also experimentieren Sie ein wenig, um die richtige Einstellung zu finden.

../../_images/skel2d23.png

Sobald Sie mit dem Zeichnen beginnen, verschwindet das ursprüngliche Polygon und Sie können Ihr eigenes Polygon erstellen:

../../_images/skel2d24.png

Dieser Detaillierungsgrad ist in der Regel in Ordnung, auch wenn Sie vielleicht eine feinere Kontrolle über die Position der Dreiecke haben möchten. Experimentieren Sie selbst, bis Sie die gewünschten Ergebnisse erzielen.

Hinweis: Vergessen Sie nicht, dass Ihre neu hinzugefügten internen Vertices auch gewichtet werden müssen! Gehen Sie erneut zum Abschnitt Knochen, um sie den richtigen Knochen zuzuweisen.

Sobald Sie fertig sind, erhalten Sie viel bessere Ergebnisse:

../../_images/skel2d25.gif