[PYTHON] Konvertieren Sie aus SpriteUV2 exportierte Netzdaten in ein Format, das von Spine importiert werden kann

Ich habe ein Konvertierungsprogramm (Python) wie den Titel geschrieben. Es gibt einige Teile, die nicht gut sind, aber ich werde sie veröffentlichen, weil es jetzt Nachfrage zu geben scheint.

suv2spine https://github.com/harayoki/suv2spine

Streich

SpriteUV2 hat eine großartige Funktion zum Integrieren mehrerer Spine-Daten, exportiert jedoch nicht die von ihm generierten Mesh-Daten als Daten, die von Spine importiert werden können. (Warum!) Nun, ich glaube, dass es von nun an unterstützt wird, aber wenn ich den Inhalt der zu schreibenden JSON-Daten für allgemeine Zwecke überprüfe, kommt es dem Datenformat, das von Spine gelesen werden kann, relativ nahe, sodass es möglich ist, die Konvertierungsverarbeitung mit einem einfachen Programm durchzuführen. Ich kann es schaffen

Der hier zu beachtende Punkt ist der beim Vergleich der beiden Daten

Das ist alles. Der letzte Punkt wird später beschrieben.

Wie benutzt man

 2017-05-01 0.07.43.png Generieren Sie zunächst ein Netz mit SpriteUV2 und exportieren Sie es zusammen mit den Atlasdaten als JSON-Daten.

Laden Sie das Python-Skript auf github herunter (https://github.com/harayoki/suv2spine/blob/master/suv2spine.py), erteilen Sie die Ausführungsberechtigung und führen Sie dann den Konvertierungsprozess aus.

./suv2spine hoge.json

hoge.json ist eine von SpriteUV2 exportierte JSON-Datei. Dieser Prozess erzeugt eine konvertierte Datei mit dem Namen "hoge_out.json". (Sie können den Namen der Ausgabedatei auch mit der Option -o angeben. Weitere Optionen finden Sie in der README-Datei auf der Github-Seite.)

 2017-05-01 0.29.16.png Starten Sie Spine und wählen Sie "Daten importieren" aus dem Menü "Spine".

 2017-05-01 0.28.11.png Der Importdialog wird angezeigt. Wählen Sie den vom Konverter ausgegebenen JSON-Ausgang aus und drücken Sie OK. Sie können auch die Importgröße anpassen und den Skelettnamen nach dem Import hier angeben. Wenn Sie Ihrem aktuellen Projekt ein Skelett hinzufügen möchten, anstatt ein neues zu erstellen, deaktivieren Sie "Neues Projekt".

 2017-05-01 0.28.51.png In einem solchen Dialogfeld wird hier eine Warnung angezeigt. Da dies jedoch die Spezifikation dieses Konvertierungsprogramms ist, ist es in Ordnung. Der Inhalt der Warnung lautet ungefähr "Es scheint, dass die Daten des Netzumrisses und der Netztrennlinie nicht exportiert wurden, sodass sie automatisch neu erstellt werden".

 2017-05-01 0.37.15.png Das Laden wird so abgeschlossen. Wenn das Bild nicht mehr referenziert wird und nur die Netzform angezeigt wird, stellen Sie es bitte manuell erneut ein. Setzen Sie den Pfad des Ordner "Bilder" zurück, wählen Sie jedoch das Netz aus, um den angezeigten Pfad zu ändern.

Haftungsausschluss

Erstens unterstützt dieser Konverter die Konvertierung mehrerer Netze nicht. Führen Sie die Konvertierung für jedes Netz durch. (Wenn die SpriteUV2-Exportdaten mehrere Netze enthalten, wird nur das erste konvertiert.)

Wenn Sie ein sehr feines Netz laden, kann die Umrissform auch merkwürdig werden. Auch in diesem Beispiel ist die Form auf der linken Seite des Kopf-Tsunos seltsam.

 2017-05-01 0.44.10.png

In diesem Fall muss das Netz auf der SpriteUV2-Seite oder der Wirbelsäulenseite angepasst werden. Auch wenn es oben in Ordnung ist, wurde der Spalt zwischen den Beinen manchmal als Teil des Netzes erkannt. Es ist möglicherweise besser, das Originalbild so vorzubereiten, dass beim Einstellen des Netzes keine Löcher geöffnet werden.

Der Grund für dieses Problem ist, dass auf der Wirbelsäulenseite zusätzlich zur Scheitelpunktdatenliste eine Liste der äußeren peripheren Scheitelpunkte (Rumpf) und Liniensegmentdaten (Kanten) erwartet wird, die die Scheitelpunkte verbinden. Es ist jedoch schwierig, die Daten aus dem von SpriteUV2 ausgespuckten JSON zu reproduzieren. Derzeit handelt es sich nicht um wesentliche Daten, sondern um Daten, die von Spine automatisch generiert werden können (die Warnung im vorherigen Dialog, dass dies durchgeführt wird). Selbst in diesem Fall funktioniert dies also so, die automatische Generierung jedoch Wenn es nicht funktioniert, scheint es, dass die obige Situation eintreten wird.

Es ist ungefähr 10 Jahre her, seit ich anständigen Python-Code geschrieben habe. Bitte behalten Sie ihn im Auge. mm

von jetzt an

Erstens wäre es schön, wenn die automatische Netzgenerierungsfunktion von Spine zu funktionieren scheint oder SpriteUV2 den Export von Spine-Daten unterstützt. In Bezug auf dieses Tool kann es bei Bedarf die Konvertierung mehrerer Netze unterstützen oder nicht.

Recommended Posts

Konvertieren Sie aus SpriteUV2 exportierte Netzdaten in ein Format, das von Spine importiert werden kann
Konvertieren Sie Bilder aus dem FlyCapture SDK in ein Formular, das mit openCV verwendet werden kann
Merkmalsmenge, die aus Zeitreihendaten extrahiert werden kann
So erstellen Sie eine Eigenschaft von Beziehungen, die durch bestimmte Bedingungen vorab abgerufen werden kann
Ein Mechanismus zum Aufrufen von Ruby-Methoden aus Python, der in 200 Zeilen ausgeführt werden kann
Implementieren Sie einen Thread, der durch Ausnutzen von Yield angehalten werden kann
Ich habe versucht, einen Dienst zu entwickeln, der Artikel nach Zweck auflisten kann
Konvertieren Sie Wetterdaten im GRIB2-Format, die mit pygrib nicht geöffnet werden können, in netCDF und visualisieren Sie sie
Kann ich Datenwissenschaftler werden?
[Python] Ein Programm, das ein Paar findet, das durch einen bestimmten Wert geteilt werden kann
Ich habe einen einfachen Timer erstellt, der vom Terminal aus gestartet werden kann
Konvertieren Sie Daten im XML-Format in Daten im TXT-Format (yolov3)
So konvertieren Sie das Format einfach aus Markdown
Hinweise zum Erstellen von Zahlen, die mit matplotlib in Zeitschriften veröffentlicht werden können
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Aggregieren Sie die Anzahl der Schritte pro Tag aus den iPhone-Gesundheitsdaten, um eine CSV-Datei zu erstellen
Konvertieren Sie Daten im JSON-Format in txt (mit yolo)
Ich habe versucht, eine Memo-App zu erstellen, die Pomodoro sein kann, aber eine Reflexionsaufzeichnung
Aus einem Buch, das der Programmierer lernen kann ... Konvertieren von Zeichen, die Zahlen darstellen, in einen ganzzahligen Typ