[Spine]スケルトンの複製・反転の注意

スケルトン構造の勉強

Spineで色々作業していく中で、スケルトンの複製・反転やアニメーションの複製などで気を付けるポイントをメモしていく。あくまで個人的作業でのメモなので、「もっといい方法あるのに」と言う方がいたら是非コメント頂きたいです。

はじめに

参考サイトにあるようにボーンやメッシュをまとめた構造体のことをスケルトンと呼ぶ。下画像でいうとSpineのヒエラルキーの最上位に人体マークのオブジェクトがあるが、これがスケルトンだ。Spineで動きを付けたキャラクターを反転や複製をする場合、スケルトンを複製・反転せずボーンだけ複製・反転するとコンストレイントが外れてしまっていたりする。

下画像は動きを付けたボーンをまとめたborn2を複製してborn3を生成した結果。コンストレイントが外れたので足がグニャッている。コンストレイントを設定し直すより、スケルトンごと複製した方がいいのかもしれない。

1.スケルトンの反転

Spineで作成したスケルトンを反転しようとrootボーンのスケールを-1にしたら足下がズレていた。

原因は継承の回転のチェックを外していたからだ(凡ミス)。チェックを入れれば反転できるのだが、Spine上で反転したい場合、継承の回転のチェックを外すと反転はできないということなのかも。そもそもSpine上で反転させる機会があるのか謎だが。

Unityに持って行ってスクリプトで反転すると継承の回転を無効にしてもズレない。

ちなみにUnityでスケルトンを反転する際、FlipScaleの2パターンあるのだが、参考サイトにあるように、今Flipは非推奨なので注意。Scaleを-1にして反転させるべし。

//これはダメ
GetComponent<SkeletonAnimation>().Skeleton.FlipX = true;
GetComponent<SkeletonAnimation>().transform.localScale = new Vector3(-1, 1, 1);

2.アニメーションのインポート

公式のSpineboyの構造でもそうだけど基本的にSpineでは一つのスケルトンに複数のアニメーションを作成し、SkeletonAnimationでアニメーションを適宜切り替える。スケルトンごとに一つのアニメーションを作るのではない。ましてやファイルごとにアニメーションを作るものでもない。例えば歩く人のファイルを作成した後、別ファイルで走る人のファイルを作成してしまったら、アニメーションのミックスなどができなくなってしまう。

ただ別ファイルのアニメーションデータを別ファイルにインポートはできる。左上Spineアイコンのプロジェクトインポートでアニメーションを選択して呼び出すと、アニメーションがスケルトン内に追加される。

ただ、これを行うには同名のボーン・イメージ・コンストレイントが同ポジションで作られていないと基本的にズレまくる。なのでSpineで制作する場合は後々のことを考えて設定画面ではよくある棒立ち状態で、各動きはドープシート状で作るのがいいだろう。

結論のようなもの

なんとなくわかったのが、1キャラクター1スケルトン。1スケルトンに1キャラクター全てのアニメーションを作成する。1つのファイルに複数体キャラクターを置く場合にスケルトンは追加される。反転はSpine上よりUnityなどエクスポート先で行うのがよい。

コメント