スケルトンデータのインポート

April 18th, 2023

このチュートリアルでは、Spineプロジェクトが手元に無いためにエクスポートされたファイルを使ってスケルトンをインポートしたい場合のインポート手順を説明します。


テクスチャアトラスページのアンパック

手元にテクスチャアトラスとしてパックされる前の個別に分かれた画像がある場合、この手順はスキップできます。持っているのがパック済みの画像だけの場合は、まずはそれをアンパックしてSpineエディターで使用できるようにする必要があります。アンパックは、SpineのUI上で行うかコマンドラインで行うかのどちらかで実行できます。どちらで行うにしても、最新のSpineを使用してアンパックすることが推奨されます。

そのアトラスが乗算済みアルファ画像としてパックされている場合は、アンパック時にアルファを元に戻す必要があります。比較的新しいバージョンのSpineでパックされたアトラスの場合は、アトラスファイルにそのアトラス画像が乗算済みアルファでパックされたかどうかの情報が記録されています。この行がある場合は、テクスチャ・アンパッカーはこの情報を利用します。

古いバージョンのSpineでパックされたアトラスの場合、そのアトラス画像が乗算済みアルファでパックされたかどうかを自分で確認してアンパック時に指定する必要があります。画像のアルファ値が乗算されている場合は画像の半透明な部分が暗くなっています。以下が乗算済みアルファ画像とそうではない画像(ストレートアルファ画像)の比較です:


UI経由でアンパックする場合

SpineのUI経由でアンパックを行うには:

  1. まずアトラスファイルとアトラス画像を同じフォルダ内に配置してください。
  2. Spineエディターを開いて、メインメニューからTexture Unpacker(テクスチャ・アンパッカー)を選択してください。
  1. Texture Unpacker(テクスチャ・アンパッカー)ウィンドウで以下を設定してください:
    • Atlas(アトラス)ファイルのパスを入力してください。Unity用にエクスポートされたファイルの場合は拡張子が.atlas.txtになっているかもしれませんが、そのままでも読み込めます。
    • アンパックされた画像を保存したいフォルダのパスをOutput folder(出力フォルダ)に入力してください。
    • アトラスが乗算済みアルファでパックされたものであればUnpremultiply alpha(日本語UIでは「乗算済みアルファ」)をチェックしてください。アトラスファイルの中に "pma:true" という行があるならこのチェックボックスの代わりにそちらが使用されます。

  1. 最後に、Unpack(アンパック)をクリックしてください。すると、アトラスに記載されたテクスチャ領域ごとに個別の画像ファイルが作成されます。

CLI経由でアンパックする場合

コマンドラインインターフェース (CLI)経由でアンパックを行うには、以下のパラメーターを指定してください:

Spine --input <アトラス画像のフォルダのパス> --output <アンパックされた画像の出力先パス> --unpack <テクスチャアトラスファイルのパス>

また、以下のように各パラメーターの省略形を使用することもできます:

Spine -i <アトラス画像のフォルダのパス> -o <アンパックされた画像の出力先パス> -c <テクスチャアトラスファイルのパス>

--updateまたは-uを使用すれば特定のバージョンでアンパックを実行することができます。例えば、上の例に-u 4.1.20を追加すると、Spine 4.1.20を起動してアンパックを実行します。また、-u latestを使えば(betaバージョンを除いた)最新のSpineでアンパックを実行できます。


スケルトンデータのインポート

スケルトンデータをインポートするには、必ずそのデータがエクスポートされたのと同じバージョンのSpineを使用してください。これは特にバイナリデータの場合に重要な条件ですが、JSONデータでも同様です。

次に、アトラスファイルの中にアトラスのスケールについての行があるかどうかを確認してください。この情報は後でインポートを行う際に必要になります。もし見つからない場合、それはそのスケルトンのアトラスのスケール値が1のまま(元々の画像サイズのまま)でパックされたか、そのアトラスが古いバージョンのSpineでパックされたかのどちらかを意味します。

スケルトンデータをインポートするには:

  1. メインメニューを開いて Import Data(データインポート)を選択してください。
  1. Import Data(データインポート)ウィンドウで以下を設定してください:
    • File(ファイル)にインポートしたいJSONまたはバイナリファイルのパスを入力してください。
    • テクスチャアトラスがスケールされたものである場合は、Scale(スケール)の値を設定して、アンパックされた画像のサイズとスケルトンのサイズが一致するようにしてください。
    • インポートするスケルトンにつけたい名前を入力してください。

  1. Import(インポート)をクリックするとスケルトンが表示されますが、正しいイメージの代わりにMISSINGと書かれたボックスが表示されるかと思います。これはイメージパスがまだ設定されていないために起こります。次のステップで修正しますので、まずは一度Spineプロジェクトを保存してください。
  1. Tree (ツリー)ビューでImages(イメージ)ノードを選択して、Path(パス)に画像フォルダへのパスを入力してください。

これでスケルトンが正しく表示されるようになります:


トラブルシューティング

正しい画像パスを設定したのに画像が抜けてしまっているのはなぜですか?

もしそのスケルトンがSpine Professionalで作成されたもので、しかしそのスケルトンデータをインポートしようとしたのSpine Essentialである場合、メッシュアタッチメントコンストレイントなど、Spine Professionalの機能が使用されている部分をインポートすることができません。Spine Professionalの機能を使用している部分を含んでいるスケルトンをインポートするには、Spine Professionalを利用してください。

画像の透明な部分の周囲に黒い境界線があるのはなぜですか?

これはアトラス画像が乗算済みアルファ画像であるにも関わらず、アトラスをアンパックする際にUnpremultiply alpha(乗算済みアルファ)をチェックしなかった場合に起こります。Unpremultiply alphaチェックを入れて再アンパックしてください

画像の透明な部分の周囲に白い境界線があるのはなぜですか?

これはアトラス画像が乗算済みアルファ画像ではないにも関わらず、アトラスをアンパックする際にUnpremultiply alpha(乗算済みアルファ)をチェックしていた場合に起こります。Unpremultiply alphaチェックを外して再アンパックしてください

一部のパーツが正しいサイズよりも小さいor大きいのですがなぜですか?

これはアトラスがパックされた時のスケール値が1よりも大きかった、または小さかった場合に起きます。そのアトラスがパックされた時と同じスケール値を指定してスケルトンを再インポートしてください。正しいスケール値が分からない場合は、0.5や0.25など一般的な値を試してみてください。

インポートしたスケルトンのアニメーションが正しくないのはなぜですか?

正しくインポートを行うには、必ずそのデータがエクスポートされた際に使われていたのと同じバージョンのSpineを使用してください。そのデータがエクスポートされたSpineバージョンの情報は、以下のようにデータを任意のテキストエディターで開くと最初の方に記述されているのを確認できます:

バイナリ形式でエクスポートされたファイルの場合、バージョン番号を確認するのには hex editor を使用すると良いかもしれません。

お持ちのデータが古いバージョンのSpineからエクスポートされたものの場合は、まずはそのバージョンを起動してデータをインポートし、Spineプロジェクトファイルを保存してください。それから保存したプロジェクトファイルを新しいバージョンのSpineで開いて使用してください。

ボーンのアイコンがデフォルトアイコンに変更されてしまっているのはなぜですか?

ボーンアイコンはSpine内でのみ必要な情報なので、エクスポートされたスケルトンデータには含まれません。そのため、インポートしたスケルトンのボーンアイコンは全てデフォルトのものが使用されます。

ボーンのカラーがリセットされていたり、メッシュ頂点間のエッジがなくなっているのはなぜですか?

Nonessential data (非必須データ)にチェックを入れずにスケルトンをエクスポートすると、実行時には通常必要ない情報がエクスポート対象から除外されます。インポートされたスケルトンはそれでも動きますが、必須ではない情報が失われます。将来そのデータをインポートする可能性がある場合は、エクスポートの際にNonessential dataにチェックを入れるのを忘れないようにしてください。


エクスポートファイルからスケルトンをインポートする手順について何かお困りでしたら、どうぞご遠慮なくSpineフォーラムにてご質問ください!