『横空手 :yokoKarate』
2Dスケルタルアニメソフト 「Spine」 を触っていた所、 javaScript & WebGL で動作するランタイム があった。
サンプルも充実してて、これなら割と楽に実装まで行けるので、タップでいじれるアニメを作ってみた。
(画像クリックで別窓で再生。再生しなければ、javascriptの有効化、ブラウザのWebGL対応などご確認ください。)
空手の基礎の「形」をモチーフにしたアニメ。画面上半分のタップで上半身、下半分のタップで下半身が動く。
突きや受け、蹴りが綺麗に決まると楽しい。適当に連打すると不審な挙動をしてくれて楽しい。
上半身と下半身、前と次などアニメとアニメの間はSpineがいい感じにブレンドしてくれてる。いい感じでないところもある。
縦長の画面だとちょっとプレイし辛い。
Spine雑感。
使用バージョンは 3.7.92、 3.8.11 beta あたり。
エディタ
- アトラス書き出しの項目が充実していてよい。
- 公式スタッフさんの twitter にhowtoが多くてよい。
- 2Dスケルトンの制約に馴染めば色々出来そう。
- 複数の原画(横と正面など)をきれいなボーンにまとめるのがとても大変。
- 正面方向へ膝を曲げるなど2Dからはみ出ようとするとコツが要る。
- 作業時にキーフレームに作ったポーズを、実行時に必ずしも表示しない。
- 例えば10フレーム目にキーを打ったアニメも、実行環境によっては9.6フレーム目の次に10.5フレーム目みたいな半端なタイミングの中割りを表示するので、蹴上のインパクトなど一瞬の動作が潰れてしまう事がある。
- エクスポートの設定により、エディタ内のプレビューと実際の挙動が異なる場合がある。(後述キーフレームの話参照)
ランタイム
- API Reference もあるが、細かいところは見て覚えろ系。
- パーツの表示順序(drawOrder)はアニメ中に差し替えられるが、「表示順序」でひとつのタイムラインを持つため、優先順の高いトラックの指定のみが有効になる。
- 今回の場合、上半身(track0)と下半身(track1)で表示順序をいじっていると、上半身の分は反映されない。
- なので揚げ受けや手刀受けで腕の重ね順がおかしい場合がある。
- mixDurationは自トラック内のディゾルブ時間の設定。mixBlendは下位トラックとのブレンド設定。まぎらわしい。
- TrackEntry.attachmentThreshold, draworderThreshold の効果がないように見えた。
- など、不具合?もあるけどフォーラムが活発なので言えば改善してくれそう。
アニメのミックスにはキーフレームがとても重要
公式でも端々で言及されているが、トラック間のミックスや前と次のアニメのミックスには、キーフレームが打ってあるかがとてもとても重要となる。
アニメによってキーフレームを打ってたり打ってなかったりするボーンはミックス時に不具合が起こりがち。
経験上、 mixDuration > 0 で mixBlend == add だったりするとスケルトンが爆発する。
ところで、エクスポート設定に「アニメーションクリーンアップ」というものがある。動きに関係ない無駄キーフレームを自動で削除してくれる機能。
アニメ作成時、熱が入るとどうしても適当にたくさんキーフレームを打ってしまうのでとてもありがたい。
エディタ内にも各アニメーションに対してこれを行えるボタンがある。
で、これをすると上記の不具合が起こる。動いていない個所のキーが消えてしまうため。
クリーンアップをOFFにすると無駄データが残る。痛し痒し。
というのをバグだと信じて追っていたが、明確に仕様らしい。
ただ公式でも懸念はしており、クリーンアップにボーンのロックなどの 機能追加 を考えているらしい。
などなど、Spineは今後の開発ロードマップ を公開しているので、ざっと眺めると面白い。