Spineランタイム:アニメーション再生タイムライン(トラック)の構成


以前にFlashとSpineのタイムラインの違いについて簡単にまとめましたが、Spine側をもう少し詳しく掘り下げてみようと思います。
以下、Spineツール4.3、ランタイムはSpine-Stralingの4.3を利用した場合で解説しますが、どの言語ランタイムでも基本は同じです。

Spineランタイムのタイムラインは映像編集ソフトのそれに似ている

Spineランタイムでは1キャラクターに対して、アニメーションの再生を同時にいくつでも行う事ができ、並列にアニメーションタイムラインが並んでいる状態になります。(対して、Spineツール上のタイムラインは1本です)。それぞれのタイムラインはトラックと呼ばれ、トラックは1つづつ個別のスピードで再生できます。各トラックのアニメーションで同じパーツを操作していても、うまい具合に全てが合成されて再生されます。

アニメーション再生命令の第一引数にはトラック番号が指定できます。これで複数のアニメーションを同時に制御できます。アニメーションの停止命令のclearTrackもトラック番号が指定できます。

sample.as
var trackIndex:int = 0; // これがトラック番号
// 再生
var animName:String = "hoge";
var loop:Boolean = false;
animationState.setAnimationByName(trackIndex, animName, loop);
// 停止
animationState.clearTrack(trackIndex);

その他、トラック番号が指定できる命令はいくつかあります。

連続アニメーションとアニメーション切り替え時のMixing

addAnimationなどの命令で連続アニメーションを指定した際は、指定トラックに複数のトラックデータが並ぶ状態になります。トラックデータ同士の合間に間を設けることも、それぞれのアニメーションをクロスフェードさせるような感じで、スムーズに切り替えることもできます。

この、アニメーションのmixingについては別途投稿にまとめます。

まとめ

アニメーションスピードの個別で調整や、合成するアニメーションの動的な追加など、Spineは他ツールと比較して、高度で柔軟な作業ができると言えます。弱点としては現在アニメーションツール側では複数のアニメーションを合成再生プレビューする機能が(おそらく)ない点です。しかし、ここはそのうち改善されると思いますし、SkeletonViewrを立ちあげつつ作業することで、ある程度カバーできそうです。

今回は以上です。