ニュース

【CEDEC2017】トリコの動きはプロシージャルアニメーションの塊!

生物らしい動きを実現するための工夫

8月30日~9月1日 開催

会場:パシフィコ横浜

ジェン・デザインの田中政伸氏

 ゲームを中心とするコンピュータエンターテインメント開発に関する話題を取り扱うカンファレンス「CEDEC2017」において、ジェン・デザインの田中政伸氏が「トリコの動かし方 ~『人喰いの大鷲トリコ』におけるプロシージャルアニメーション技術~」と題したカンファレンスを開催した。

 ジェン・デザインは、「ICO」や「ワンダと巨像」などを手がけた上田文人氏をはじめとして立ち上げられたスタジオで、「人喰いの大鷲トリコ」の制作をソニー・インタラクティブエンタテインメント ジャパンスタジオと共に手がけた。

 「人喰いの大鷲トリコ」は少年とトリコの冒険譚だが、ゲームとして重要な要素となったのが、「トリコ」の立ち位置だ。「パズルを解く道具ではなく生物として表現したい」という意向から、「生物らしさ」、「心を言葉で表現しない神秘性」、「重量感」などの“トリコ”らしさのポイントが挙げられた。ここには「生物らしい動き方」を実現することが重要ポイントで、そのための技術的な解決策として選択されたのが「プロシージャルアニメーション」となった。

 トリコの動きだが、横に長く四足歩行をするということで、それだけでハードルが高いのだという。斜面に立たせると足が浮いたり、逆にめり込んだりしてしまうことも多く、接地面を探して足が横滑りすると、それだけで重量感がなくなってしまう。巨体であるが故にごまかしもきかない。さらにゲームの舞台が閉鎖空間であることが多く、狭いところで巨体を動かすのは難しい……等々、解決しなければならない課題も多かったようだ。そして、投げたタルをキャッチして食べさせたかったのだという。この点では、物理エンジンも使用して、その動きをまじめに追求したのだという。

トリコの特徴と生物として表現したいという想い。この目標を実現するためにはどうすれば良いのか? ここでプロシージャルアニメーションでトリコを表現することを決定した

 まず、トリコの動きの起点は、AIからスタートする。AI自体は非常にシンプルで、目的としては「ユーザーにトリコが心を持っていると感じさせること」だという。まず主要なオブジェクトにはトリコがどれくらい興味を持っているかを数値化した「興味レベル値」を持たせている。これは固定値ではなく、常に変動している。たとえば1番近くに少年がいて、少年の興味レベル値が高ければ、トリコは少年にスリスリと頬ずりをする。だが、頬ずりをしたことでトリコは満足して、少年の「興味レベル値」が低下する。すると相対してこれまでは低かったタルの興味レベル値が高くなり、トリコはそちらに興味を持つようになる。こうやってなにに興味を持ってるかでトリコの行動が決定されていく。シンプルだが、確かに生物の行動原則を突いた作りだ。ちなみにトリコから近ければ近いほど興味を持ちやすくなっている。

 AIで行動が決定すると、移動が発生し目的地に着いたら最適なアクションを選択してアクションを実行する。最適なアクションの選択とは、たとえばタルを目の前にした場合、食べるほかにも、狭いところにあったら前足で掻き出そうとするかもしれないし、懇願するように鳴くこともある。これらの中から状況を判断しながら選択されたアクションが実行される。

調整しやすいようにあえてシンプルなAIとなっている。トリコの意思決定と、アクションの決定過程がわかる

 ここでアニメーションとなる。今回は講演名にあるとおり、「プロシージャルアニメーション」が採用されている。ある一定の条件で自動生成されるアニメーション技術の1つだが、ここ最近は技術的にも高度になってきたということで、今回採用が決定したという。

 たとえば段差のあるところを歩く場合、平面と同じように歩くアニメーションだと、足が浮いてしまう。これを解決するためには膨大なアニメーションアセットが必要となる。またアニメーションはアニメーターの手付けであるため、大量生産ができない。しかし、ここでプロシージャルアニメーションを利用すれば、1つの制御でどのような状況でも対応できるようになる。

 「人喰いの大鷲トリコ」におけるプロシージャルアニメーション設計の思想は、少ないアニメーションアセットの活用と、アニメーションを活かした処理、プログラマ主導ではなく、アニメーター主導で処理を考えるという3点。そしてトリコのプロシージャルアニメーションはモジュール単位であるため、眼球からツメ先まで多数のモジュールで構成されたトリコのプロシージャルアニメーションの制作はかなり大変だったようだ。

 歩くアニメーションのプロシージャルアニメーションを作成するだけでも大変で、足を上げた瞬間に着地点を決定する。このとき着地点をチェックし、少年やタルがあれば踏みつけないような判断が下される。タルは動くことはほぼないが、少年はプレーヤーの操作で動き回る。このため、チェックの後に少年が着地点に入ったらトリコに蹴られてしまう。こればかりは開発陣も仕方ないことと判断したようで、「トリコとしては最大限踏まないように努力しているんです」とかばっていた。

 このほかにも、姿勢制御、頭上にセットされたセンサーにより天井があれば屈んで移動したり、注目するものを目で追うときに首を振る行動など、どうアクションさせるかの様々な設定基準が講演では紹介された。

 そして、目標の1つであった少年が投げたタルをトリコが空中でキャッチするアクションだが、タルの動きは物理制御で組まれている。タルは物理エンジン制御されているため、その動きはある程度予想できる。タルが投げられてトリコのキャッチモーションから咥えるアニメーションまで一定の時間的な余裕がある。この時間の間にタルの物理軌道の予想とトリコが空中でキャッチできる範囲を計算し、タルとトリコの範囲がクロスしたところでアニメーションが発生して咥えようと首を動かし始めるようになっている。ちなみに、トリコの咥えるという行為は、上あごと下あごのコリジョンで挟み込むという正攻法で行なっているため、咥えられなければ落としてしまうこともある。そして最後に咥えたタルを飲み込むアニメーションが発生する。

トリコで取り入れられているプロシージャルアニメーション
歩行のプロシージャルアニメーション設定
姿勢制御について
頭上のセンサーで天井を検知してそれに会わせたプロシージャルアニメーションが動作する
注視行動では首の動きも関連してくるため、かなり複雑なようだ
そして念願の空中タルキャッチ。物理エンジンとも組み合わせてプログラムが組まれている

 このほかにも、羽のアニメーションについても簡単に説明があった。トリコの羽については、「感情表現」や羽がたなびくことでユーザーに風を感じてほしいことや、画面の情報量を高めるなどの意味がある。

 実際の鳥の羽は、羽同士の摩擦で風が吹いてもそれほどたなびくことはないという。ただ、それを毎回計算して決定していると、処理能力的にコストがかかってしまう。このため、波状の風が押し寄せて接触した箇所が揺れるようになっている。

 田中政伸氏は最後に、「トリコを妥協せず作り込んだおかげで、東京ゲームショウで展示した画面の中の巨大なトリコとふれあえるような付随企画も実現することが可能となった」と語り講演を終えた。

トリコの羽が揺れるのはユーザーに風を感じて欲しいなどの想いが込められている