Doku Ausgabe

Ein Skelett für Game-Engines exportieren

Datei ▸ Exportieren ▸ Skelett (JSON)… schreibt ein Knochen-Rig und seine Animationen als Daten, die eine Game-Engine abspielen kann, statt sie zu Bildern zu rendern.

Ein Sprite-Sheet speichert jedes Bild als Grafik. Ein Skelett-Export speichert stattdessen das Rig: die Knochen, die an ihnen hängenden Bilder und wie sich die Knochen mit der Zeit bewegen. Die Engine zeichnet die Figur dann selbst, die Animation bleibt also klein und läuft in jeder Größe und jeder Bildrate flüssig.

Exportieren

  1. Wähl Datei ▸ Exportieren ▸ Skelett (JSON)….
  2. Wähl einen Ordner. Der Export schreibt mehrere Dateien und fragt deshalb nach einem Ordner statt nach einem Dateinamen.
  3. Die Dateien werden sofort geschrieben. Einstellungen gibt es keine.

Im Ordner landen skeleton.json, ein Atlasbild skeleton.png mit den Bildern, die an Knochen hängen, und je Mesh eine PNG-Datei, benannt nach der Mesh-Ebene. Ein Zeichen, das in keinem Dateinamen stehen darf, wird ersetzt, und tragen zwei Meshes denselben Namen, bekommt die zweite Datei eine Nummer angehängt. Die Namen sind fest, ein erneuter Export desselben Projekts ersetzt also dieselben Dateien.

Was die Datei enthält

Der Aufbau ist an den von Spine angelehnt: Knochen, Slots, Anhänge und Animationen. Es ist keine Spine-Datei, und keine offizielle Spine-Laufzeit liest sie, aber der Aufbau ist vertraut genug, dass du einen Importer für deine Engine nur einmal schreiben musst.

TeilWas er enthält
KnochenJeder Knochen jeder Knochenebene mit seiner Ruhepose relativ zum übergeordneten Knochen. Statische Knochen, also die IK-Ziele, fehlen: Ihre Wirkung steckt schon in den Knochen, die sie steuern
Mesh-AnhängeJede Mesh-Ebene mit ihren Ruhe-Eckpunkten, ihren Dreiecken und dem Gewicht, das jeder Knochen auf jeden Eckpunkt hat
Bereichs-AnhängeEbenen, die über Ebene verknüpfen starr an einem Knochen hängen, auf dem Atlas platziert und mit ihrem festen Versatz zum Knochen
AnimationenEine Animation je Gruppenmarker in der Zeitleiste, benannt nach dem Marker. Ohne Gruppenmarker gibt es eine einzige Animation namens default, vom Anfangspunkt bis zum Endpunkt

Alles, was die Engine sonst nachbauen müsste, wird zu schlichten Zahlen eingebacken: IK, Knochendynamik, Steuerknochen und Aktionen werden zu gewöhnlichen Keys für Drehung, Verschiebung und Skalierung. Wo eine Aktion ein Mesh so verformt, dass Knochengewichte es nicht abbilden können, speichert die Animation stattdessen die Eckpunktpositionen des Meshs Bild für Bild. Die Engine muss also nicht wissen, wie Aktionen funktionieren.

Was noch fehlt

  • Das automatische Folgen innerhalb einer Knochenebene. Exportiert werden nur Gewichte, die du gebunden oder gemalt hast, und Ebenen, die mit Ebene verknüpfen verbunden sind. Eine Ebene, die dem Rig nur über die Bindung Flexibel oder Bereich folgt, bewegt sich im Export also nicht.
  • Ebenen, die sich mit eigenen Keyframes bewegen und nicht mit einem Knochen verknüpft sind. Exportier sie als Sprite-Sheet oder PNG-Sequenz.
  • Ein Mesh, das zusätzlich zu seinen Knochen eine eigene Position, Drehung oder Skalierung hat.
  • IK-, Transformations-, Pfad- und Physik-Constraints als echte Constraints, Ereignisse sowie Skins zum Wechseln von Kostümen.
Nur Knochen, die sich verschieben oder skalieren, bekommen Keys dafür. Die meisten Knochen drehen sich nur, ihre Animationen enthalten also nur Drehung. So bleibt die Datei klein.