こんにちは、CG開発室アニメーターの吉村です。
今回は、2016年1月10日にリリースされた「Spine 3.0.0」の新機能をご紹介します。
Spineは大まかなバージョンを出した後に小出しで機能の追加とバグ修正を行います。
また、バージョンの変更はいつでも行うことが出来るのですが、
バージョンの変わるアップグレード行う際は、新しくSpineをダウンロードし直す必要があります。
※ダウングレードは、基本的に再ダウンロードの必要はありません。
2016年2月現在、Spine Changelogにはバージョン「3.0.13」のリリースが予告されています。
今回のwhomor Picturesでは、「Spine 3.0.0」の新機能を紹介しながら、安定版の「Spine 2.1.27」と比べての使用感をご紹介していきます。
Spine 3.0.0は、Esoteric Software社による「Spine」の新バージョンです。
Spine 2.1.27をベースに、仕様が変更されました。
Spine 3.0.0の大きな注目ポイントは3つです。
スケールの計算方法の変更によって、Flip機能が廃止されたり、スケール変更時の挙動が前バージョンと変化しています。また、Unicodeが採用されたことで日本語を扱うことも可能になりました。
一番大きな特徴としては「Transform Constraints」機能の追加が挙げられます。
それでは、一つずつ機能を見ていきましょう。
Spine3.0.0の新機能「Skewing Scale」。Spineの大幅な改編の一つです。
画像を歪ませながらスケールを変える事ができます。
親のボーンのX方向とY方向どちらかの値を変えた場合に変化が確認できます。
Spine 2.1.27
Spine 2.1.27までのスケール。肩のボーンのX軸の値を2倍にしました。
腕と手が親の影響を受け、親と同様の伸び方をしています。
Spine 3.0.0
Spine 3.0.0のスケール。同様に肩のボーンのX軸の値を2倍にしました。
肩ボーンを親として、子である腕を曲げた際にSkewing Scaleの影響を確認する事ができます。
腕を横に回転させると横方向に腕のスケールが小さくなり、腕を縦に回転させると縦方向に腕が長く変形します。
このSkewing Scaleは場合によっては形が大幅に崩れてしまいます。
現在は、Skewing Scaleをオフに出来る機能が見当たりません。
今までのスケールを使用するには、安定版の「Spine 2.1.27」を使用するのが良いかと思います。
Flip機能が廃止され、スケールに「-1」の値を入れることで反転させる手法になりました。
Spine 2.1.27では、スケールに「-1」を入れてもFlipと同様の結果が得られませんでしたが、Spine 3.0.0ではFlipと同様の結果が得られるようになりました。
そのため、Flip機能が削除されました。Flipを使った場合のキーフレームの概念がSpine 3.0.0では無くなったということになります。
Spineのフォントサイズは今まで小さいものしか表示することができませんでした。つまり、解像度の高いディスプレイに映した場合でもフォントサイズは小さいままです。
Spine 3.0.0からはフォントサイズを2倍ほど大きく表示できるようになり、目が悪い方にも優しいUIとなりました。
「Spine 3.0.0」ではUnicodeがサポートされ、ファイル名を日本語で扱えるようになりました。
今まではSpineを開く際に少しでも日本語が混ざったパスが入っていると全く開けなかったのですが、ようやく日本語でフォルダを管理できるようになりました。
ただし、ボーン名などにも日本語を扱えてしまうため、実際には注意が必要かもしれません。
※ボーン名を日本語にするには、コピー&ペーストしなければなりません。
Export機能を使用したjsonファイル内にも日本語が書かれてしまいます。
日本語を使用したことでUnityなどに持ち込んで制御する際に、エラーの原因になる可能性もあるため、出来る限り半角英数字を使用していくことをオススメします。
と言うよりも、これまで通り半角英数字を使いましょう。
この日本語対応の機能は、あくまでも日本語のフォルダ内でもSpineが読み込めるようになったという位置づけであるべきだと思います。
こちらもSpine 3.0.0の大きな機能追加の一つです。
ボーン操作をまとめて動かせるため、効率的にボーンを制御することができます。
例えば一つのボーンを回転させると、その他のボーンを同様に回転させることが出来ます。
Transform Constraintsの適用の仕方は特殊ですので、一例をご紹介いたします。
今回は両腕をまとめて操作することができるコントローラーを作成してみます。
2-5-1.腕を制御するコントローラーとなるボーンを用意
一度Spineでキャラクターを組み立てておくと、分かりやすいかもしれません。
まずは「root」の直下にコントローラー「shoulder-control」を作ります。
コントローラーの名前は何でも大丈夫です。
2-5-2.shoulder-controlの子を2つ用意。肩ボーンの変わりになります。
shoulder-controlの子にTransform Constraintsのコンストレイント先になる点ボーンを作成します。一つ作成したら、コピーしましょう。
2-5-3.現在の肩ボーンに対して、コンストレイントします。
子の点ボーンを選択したらConstraintsからTransform Constraintsを選びます。
コンストレイント先に現在の肩を選択します。
コンストレイント先を選択するとTransform Constraints名を入力するウィンドウが現れます。
IKとは別にTransform Constraintsがリストに追加されます。
この作業を両肩やりましょう。分かりやすいようにshoulder-controlの子ボーンを青色にしておきました。
2-5-4.現在の肩についているスロットを、子に割り当てます。
このままshoulder-controlを回転させてみましょう。
shoulder-controlの子ボーンが一緒に回転しているのが分かるかと思います。
この子ボーンに現在の肩のスロットを埋め込んで画像が動くように設定していきます。
肩のスロットを埋め込んでshoulder-controlを回転させてみました。
腕が動いていませんね。
2-5-5.腕の親を子に割り当てて、完成です。
腕の親を子に割り当てると、ようやく腕も一緒に動くようになりました。
これで両腕を同時に制御できるコントローラーを作成することができました。
今まで使っていた肩ボーンを非表示にして、完成です。
ちなみに、Transform Constraintsを適用せずにコントローラーを回転させた場合はこのようになってしまいます。
コントローラーを基準に、子のボーンが回転してしまいます。これらの制御は「Spine 2.1.27」では出来ませんでした。
3DCGのようなリグを組む事ができるようになりそうですね。
その他にもSpine 3.0.0では細かい変更がされています。ここではその一部をご紹介いたします。
・Spineのプロジェクトファイルを操作して、画面を閉じたり新しいファイルを開こうとすると「Save Changes」ウィンドウが出現します。この時のContinue without savingがDiscard Changesという文言に変更されました。
・「Save Changes」にショートカットが割り当てられていませんでしたが、DかNキーでDiscard Changes、SキーでSave Changes、CキーでCancelができるようになりました。
・エディットメッシュモードの「Create」モードでShiftを押しながら頂点を移動させるとまっすぐに動かすことが出来るようになりました。
・「images」で指定したパスのフォルダを「Open」ボタンで開けるようになりました。
Spine 3.0.0の感想です。
良いと思ったところ
悪いと思ったところ
今回Spine 3.0.0を触ってみて、痒いところに手が届くようになった印象を受けました。
便利になった反面、思いがけない問題が発生する可能性は否めません。
特にUnicodeによる日本語サポートはUnityへ組み込む際にバグにならないかどうかが不安です。
と言うよりも、これまで通り半角英数字を使いましょう。日本語ダメ絶対。
いかがでしたでしょうか。
Spine 3.0.0はまだ実務で使うには不安定だという印象が強いです。
主にSkewing Scaleによる表示崩れ、日本語サポートによる将来的な不具合の発生が予想できます。
しかし、Skewing Scaleのオンオフ機能の実装とTree内でのUnicodeが非対応になれば、かなり便利にSpine 3.0.0を扱えるようになるかもしれません。
また、Transform Constraintsによるリグセットアップの幅が広がったことは非常に良いことだと思います。
効率的に作業ができるように工夫しながらセットアップが出来ると生産性も上がっていくかもしれません。
Spineの今後のアップデートに期待です。