ニュース
[GDC 2012]次世代Unityはアニメーションシステムが大幅進化。「ステートマシン」と「ブレンドツリー」でアニメーションはどう変わるか
その第1弾となったのが「Creating Retargetable Animation Assets with Mecanim in Unity 4.0」(Unity 4.0のMecanimでリターゲット可能なアニメーション資産を生成する方法)という講演で,Unity Technologies(によって買収されたアニメーション技術企業であるMecanim)が現在開発中のキャラクターアニメーションシステムを技術プレビューとして示したものになる。
朝一番から立ち見が出る盛況ぶりだった本セッションの内容をまとめてみよう。
リターゲットを含め,アニメーション周りが
大幅に強化される次世代Unity
さて,アニメーションにおけるリターゲットとは,リファレンスとなるキャラクターの動きをほかのキャラクターに適用することを指す用語だ。通常,同じ関節構造を持ったキャラクターに適用される。
もっとも今回,セッションタイトルに出てくるリターゲット関連の話はあまり多くなく,Unityで作られているキャラクターアニメーションシステム自体についての説明が主体だった。「Unityのシステムで制御されるアニメーションは,簡単にリターゲットできるよ」ということを,Unity Technologiesは伝えたかったのだと思われる。
モーションキャプチャなどで作られたアニメーションパターン同士をつなぐ,いわゆるトランジション部分を自動的に生成してくれるものとなっているわけだ。
セッションは,開発中のツールを使った操作と動作の実演が中心で行われたが,印象的だったのは,「キャラクターがどういう状態にあって,どういうモーションが選択されているのか」という「動きの遷移」をリアルタイムで確認できる様子が示されていたこと。Unityにおいて,Inspector部分で実行時の各種パラメータを確認できるのは珍しくないのだが,数値の変化だけではなく,「どの枝分かれが選択されているのか」が,リアルタイムかつ視覚的に表示されているというのは面白い。
ブレンドツリーは,比較的高度なアニメーションシステムで使われるものだが,Unityのプレファブ(Prefab,プレハブともいう)機能とも相性がいいように思われる。基本的な動きをするプレファブと,特定のルールによる動きなどとを組み合わせて継承させれば,複雑な挙動をするキャラクターを比較的手軽に作れそうだ。これがゲームエンジンの標準システムに組み込まれることになると,いろいろ楽しそうである。
基準となるキャラクターのボーン数は最低50個程度とのことだが,キャラクター制御のところで,「関節」ではなく「筋肉」という表現が多用されていた点はちょっと気になった。たとえば可動範囲の場合,「関節の動く範囲」ではなくて,「筋肉の動く範囲」という設定になっていたのだ。おそらく,UnityのInspectorで使いやすくなるよう,1次元のデータに落とし込んであるのだろう。
Character Controllerでは,カプセル型をした,簡略化版の当たり判定エリアが用いられているのだが,本セッションのデモだと,当たり判定はちゃんと手足の各部で取られるようになっていた。
ここで,キャラクター制御がどのように実装されているのかの説明があったので紹介してみよう。今回のセッションでは,「左に曲がる」「直進する」「右に曲がる」といった3つのアニメーションパターンが,下に挙げる定数設定で用意されている。
- TurnLeft −1
- Run 0
- TurnRight 1
そしてこのとき,キャラクターの進行方向を示す「Direction」という変数を−1〜1の範囲で変化させると,キャラクターの進み方を細かく調整できる,というわけである。たとえばTurnLeftの変数を−0.6に設定すれば,左に曲がる成分6割,直進成分4割となり,0.2に設定すれば,右に曲がる成分2割,直進成分8割となる。Directionの設定値に合わせて,ブレンドされたアニメーションが生成されるのだ。
なお,右旋回と左旋回は同じパターンのアニメーションに「Mirror」指定を加えて“2通り化”した実装になっている。ループアニメーションを自動生成して,始点と終点を滑らかにつないだり,アニメーションパターンを編集したりする機能も備えているとのことだった。
また,キャラクターが走っていて,目の前に障害物があるときに「Jump」という論理変数がTrueになった場合,追加の条件によっては,手を使って乗り越えたり,大きな壁ならよじ登ったり,低い障害物なら飛び越えたりといった動作が自動的に選択され,直前の状態と適切にブレンドされた,滑らかな動きで対応できる。そうやって作った「アニメーションキャラクターの原型」を,リターゲットによってさまざまなモデリングデータに適用可能というわけなのだ。
飛び越えたり,手を付いて宙返りしたりと状況によって動きが変わる | |
「Exit Time」が0.9でJumpがTrueだったときに移行する例。スクリプトには簡単なプログラムが設定される |
以上,細々と説明してきたが,ムービーを見てもらったほうが早いかもしれない。ぜひチェックしてみてほしい。
セッション中に示された動作デモだと,開発途上版ということで,まだ一部おかしなことになるところもあったが,完成すれば,多くの局面に対応できるシステムとなるはずである。
多くのプラットフォームで使われているゲームエンジンだけに,機能強化は無条件で歓迎したいところだ。早期の完成に期待しよう。
Unity Technologies公式Webサイト
- 関連タイトル:
Unity
- この記事のURL: