2017年9月5日(火)

『人喰いの大鷲トリコ』CEDEC 2017で語られたプロシージャルアニメーションが実現したトリコの生物らしさ

文:電撃PlayStation

 発表から7年の時を経て、昨年12月にリリースされた『人喰いの大鷲トリコ』

 プレイ中、本当に生きているのではないかと錯覚してしまうほど動物らしい動きをする“トリコ”だが、いったいどのようにして制作されたのだろうか?

 8月30日~9月1日に行われた“CEDEC 2017”のセッション“トリコの動かし方 ~『人喰いの大鷲トリコ』におけるプロシージャルアニメーション技術~”にて、“genDESIGN”の田中政伸氏が本作におけるトリコのアニメーション手法を解説した。

『CEDEC 2017』
▲genDESIGN 田中政伸氏。

トリコを“生物”として表現することを目標に制作

 まず田中氏は“トリコをパズルを解く道具としてではなく、一匹の生物として表現したい”という重要な目標があったと語った。

 この目標を達成するには、細かな仕草などの高品位のアニメーションを用意するだけではなく、トリコが自分で考えているかのように感じられるような、従来以上になめらかな動きが求められたようだ。

『CEDEC 2017』

 トリコの特徴として“動物らしさ”や“大きな身体を持つこと”などが挙げられたのだが、これらを実現するにあたって課題が多くあったとのこと。セッションでは移動時に足が滑ると巨大感が失われたり、逆に滑らないように動かすとぎこちなくなってしまうといった事例も交えつつ課題が紹介された。

『CEDEC 2017』
『CEDEC 2017』
▲トリコ実現における課題の数々。

 今回挙げられた課題はアニメーションのアセットだけでは対応できなかったのだが、ハードウェアスペックの向上もあったので、プロシージャルアニメーション(以下、PA)での実現を目指すことにしたという。

 本題に入る前にトリコの処理の流れをおさらい。PAだけでなく、トリコのAIやファーの処理についても解説が行われたので処理の順を追って紹介する。

『CEDEC 2017』

AI編 トリコの興味の持たせ方

 トリコの動きはAIでの認識がきっかけとなっている。AIの目的は“トリコが心を持っているとユーザーに感じてもらう”こと。そのためにはトリコ自身が現在の状況を判断し、意思決定をすることが必要とのこと。

 トリコのAIは、最初に何に対して行動するかという興味対象の決定を行い、興味対象へ移動後にアクションを決定するというのが基本的な流れだ。

 まずは興味対象の決定について。トリコが興味を持つ対象には興味レベルという値が設定されており、各対象のなかで値の高いものにトリコは興味を持って行動する。

『CEDEC 2017』
『CEDEC 2017』
▲鎖に15、少年に34、樽に54と興味レベルが割り当てられている場面。値の大小により、トリコはタルを食べたいと考えているのがわかる。

 この興味レベルは変動もする。例えば少年に頬ずりをすると少年への興味レベルは一時的に下がり、次に興味レベルの高いオブジェクトが1番になることで興味対象が入れ替わるといった具合だ。

 下がった興味レベルは次第に戻っていくので、何かしらのオブジェクトが興味対象になり続けることになる。変動の要素にはオブジェクトまでの距離も影響し、遠かったりすると興味レベルは低くなるので、近くにあるものを興味対象とする確率が高くなるようだ。

『CEDEC 2017』
『CEDEC 2017』
『CEDEC 2017』
▲少年への興味レベルが一度0になり、興味レベル10の画面外のオブジェクトにトリコは興味対象を変更。その間に少年の興味レベルは少しずつ回復していく。

 高所から少年をトリコに向かってジャンプさせた際、くわえてキャッチしてもらえるパターンと、無視されて少年が床に打ち付けられてしまうパターンを経験したことはないだろうか?

 田中氏に聞いたところ、これらについても興味レベルが影響しているとのこと。ただ進行度によっては、まだ少年になついていないというのも1つの要因として考えられるようだ。

 興味対象が決まったら移動後にアクションを開始。トリコは巨大な身体を持つため、アクションを開始する前に実行可能かどうかのスペースチェックをしているということも明らかにされた。

 今回の例ではタルをその場で食べることができるかどうかを確認し、難しいようであれば前足で掻き出したり、鳴いて少年に助けを求めたりするようだ。

『CEDEC 2017』
『CEDEC 2017』

PA編 少ないアニメーションで生物らしさを演出

 これまで説明したようなシンプルなAIなのに動物らしさを感じるのは、PAによる演技力のおかげだという田中氏。そもそもPAとはなんなのかというと、数式やスクリプトなどを利用して自動生成されるアニメーションのことを指す。

 実例として『ICO』や『ワンダと巨像』でのPAを紹介。『ICO』をプレイしていたとき、段差にそって足が動いていたことにびっくりしたのだが、これを実現していたのがPAだったのだ。気がつかないうちにふれていたような歴史のある技術であることがわかる。

 『人喰いの大鷲トリコ』のPAは、アニメーションの完全な自動生成を目的としたものではなく、“主であるアニメーションをいかにうまく改編するか”という考えで設計されているとのこと。

『CEDEC 2017』
『CEDEC 2017』
『CEDEC 2017』

 もしPAを使わずに起伏のある地形に対応しようとすると、足が浮いてしまったり、巨大なキャラクターなのに重量感を失ってしまうそうだ。これではトリコの特徴を表現することは難しい。

 この問題への対策として、地形に合わせたアニメーションアセットを作成する方法もあるのだが、膨大なアセットが必要になるということに加え、アニメーションのクオリティを保つことが困難になってしまうことが問題になるとのこと。『人喰いの大鷲トリコ』では、すべてのアニメーションを手付けで制作しているので、あまり現実的ではないのだろう。

『CEDEC 2017』

 『人喰いの大鷲トリコ』におけるPAは、複雑な地形への対応だけでなく、接地感による存在感の向上や、アニメーションアセットを少なく保つことで各アニメーションのクオリティアップを図るといったことが主な目的だ。

 これらの目的をふまえたPAの設計思想は3つ。

 1つ目が量を抑えたアニメーションアセットを活用するということ。2つ目がPAにアニメーションを任せるのではなく、アニメーションありきでPAの処理を行うようにすること。そして3つ目がPA自体の処理をプログラマーにすべて任せるのではなく、“どうやったら生物らしくなるのか”とアニメーターも協力しながら取り組むということだった。

『CEDEC 2017』
『CEDEC 2017』

 ちなみに少ないアニメーションアセットと聞いてどれくらいの数と想像するだろうか? 田中氏に聞いたところ、その数なんと2500種類以上! これはカットシーンなどのアニメーションも含んだ数値だが、これでも抑えた方だという。もしPAを使わずに製作をしようとすると膨大な数になり、トリコの実現は不可能だったと語ってくれた。

 続いてトリコの代表的なPAについて解説が行われた。

『CEDEC 2017』

PA紹介 歩行・姿勢制御

 まずは歩行・姿勢制御におけるPA。最初は歩行時の背中のベンド(曲げ)処理についてだ。

 トリコはカーブを曲がる際に背骨を曲げながら移動するのだが、使用されているアニメーションアセットはまっすぐ歩いているモーションなのだという。ここではAIが生成するパス(道)に沿って背中へベンド処理を加えることで、歩きモーションを使用しながら曲がる動きを実現しているそうだ。

 また狭い曲がり角では極端に身体が曲がらないように、少しだけ外にふくらみながら曲がるような処理をしていることも明かされた。

『CEDEC 2017』
『CEDEC 2017』

 歩行における足の運びについては、トリコが足をあげた瞬間に着地点が決定され、この時点で高さや傾斜なども計算されているとのこと。

 トリコはどこにでも着地できるわけではなく、少年やタルといったオブジェクトがある場合など、特定のシチュエーションでは足をついてはいけないような条件付けを行い、そこを避けるように着地点を設定している。

『CEDEC 2017』
『CEDEC 2017』
『CEDEC 2017』
『CEDEC 2017』

 少年がいる場所は足をつけない条件なのに、トリコに蹴られてしまった人はいないだろうか? セッションでは蹴られてしまう理由も明らかになった。

 トリコの歩行モーションは4分割されており、この分割タイミングでのみ他のモーションへ移行することが許可されている。分割タイミングで接地していない足は再チェックが実行可能な仕様なので、1回の踏み出しに対して着地点のチェックは2回行われているとのこと。

『CEDEC 2017』

 つまりトリコが足をあげたあとに少年が最初の着地点に行った場合、2回目のチェック前であれば避けることが可能なのだが、この2回目のチェックを越えてしまうと蹴り飛ばしてしまうこともあるということだ。

 トリコ自身は少年を踏むまいと2回も頑張っていたということで、たとえ蹴られてしまっても笑って許してあげたい。

 着地点が決まったら足を移動する経路の作成に移る。着地点が段差の場合、本来のアニメーションの歩行動線が地面に埋まってしまっているのだが、今いる位置から段差上の目標点までの最短距離を計算し、本来の動線とブレンドすることで自然に登るような動きを実現しているという。

 また、滑ってしまうような足の動きには固定処理も必要になる。固定することで本来あるべき足の位置と固定した足の位置の間でズレが発生してしまうのだが、足を上げている間にあるべき位置まで補間するようにしてズレを解消しているとのことだ。

『CEDEC 2017』
『CEDEC 2017』

 姿勢は当初の着地点から異なる位置、例えば高いところに足を着地させた際の足の位置と本来あるべき足の位置の差を利用して制御を行っている。

 この制御にはかなり細かな調整が必要らしいのだが、SIE JAPAN Studioの開発陣ががんばってくれたのだという。

『CEDEC 2017』
『CEDEC 2017』
▲元となるアニメーションアセット。これが差分を出す基準値となる。
『CEDEC 2017』
▲PAで動いた足がきっかけとなり、元のアニメーションとの差分を計算して姿勢が変わっている。

 歩行制御の最後は天井補正だ。トリコには複数のセンサーが用意されており、天井を検知することで頭や身体を下げるようにしているとのこと。検知するセンサーは頭上に複数あるので、頭から順番に進むようになっているそうだ。

『CEDEC 2017』

PA紹介 注視

 次のPA紹介は、トリコの生物らしさを表現する注視についてだ。

『CEDEC 2017』

 開発初期は“FK”と呼ばれる手法を用いて、首の骨を時間差で折り曲げていたとのこと。これはこれで悪くない感じなのだが、どこか機械的で目標とする生物らしさからは異なっていたのでボツになり、新しい手法を考えることになったとのこと。

『CEDEC 2017』

 実際に首の長い動物を観察してみると、頭だけが空中に固定されたような動きをしていることに気付いたそうで、その動きを参考に頭の位置と回転だけを先に決定して首の動きをあとから決める“獅子舞方式”と呼ばれる方法が考案された。

 会場では、獅子舞方式の検証時に作成されたプロトタイプ映像が上映されたのだが、アニメーションを入れていないにもかかわらず、生物らしさが感じられる動きをしていたのには多くの人が驚いていた。これを受けて田中氏は、PA自体にもある程度の演技力が必要だと語った。

『CEDEC 2017』
『CEDEC 2017』
▲Unity上でのデモ風景。

 さらに演技力を高める工夫として、頭の回転軸をできるだけ頭の前方に置くように調整。これにより横を見るときに首を引くような演技も加わり、より生物らしさがでたとのこと。この動きは当初のFK方式では難しく、獅子舞方式にしてよかった点だったという。

『CEDEC 2017』
▲通常はもっと頭の根元側に回転軸を配置するとのこと。

PA紹介 タルのキャッチ食べ

 PA紹介の最後はタルのキャッチ食べアクションについて。このアクションは実際にものを食べるように上顎と下顎に用意したコリジョン(当たり判定)でタルを挟んで実現している。この際、ズルはしていないので無理な角度から投げるとキャッチに失敗してしまうようだ。

 タルの軌道は物理シミュレーションなので毎回変化する点や、ちょうどいいタイミングでタルをくわえるアニメーションの再生を開始しないといけないなど、キャッチ食べにも多くの課題があったとのこと。

『CEDEC 2017』
『CEDEC 2017』

 キャッチ食べの流れは次の通り。まずトリコにはタルをキャッチ可能な範囲が設定されており、投げられたタルがその範囲に入るまで毎フレームチェックを実施。キャッチ可能な範囲に入ったときにキャッチのモーション再生を開始する仕組みだ。

 モーション再生を開始してからは、キャッチの瞬間に向けてタルの未来の位置を再計算し続け、同時にモーションの補正も行ってキャッチするとのことだった。

『CEDEC 2017』
『CEDEC 2017』
『CEDEC 2017』

ファー編 トリコや空間の表現力をアップ!

 セッションの最後にはおまけとしてファーの表現を紹介。ファーにはシェル法とフィン法という大きく2種類の表現方法があり、『人喰いの大鷲トリコ』では羽を1枚1枚表現したかったため、短冊で表現するフィン法が用いられているそうだ。

『CEDEC 2017』

 『人喰いの大鷲トリコ』におけるファーは、怒りや緊張といったトリコの感情表現をはじめ、揺れることで風や空間を感じさせたり、画面の情報量をアップさせることが主な目的となる。今回は風を感じさせる表現について掘り下げて紹介していた。

『CEDEC 2017』

 まずは羽の設計のお話。実際の鳥の羽の場合、風が吹いたとしても羽同士に摩擦があるので、常に大きな動きをすることはない。ゲーム内でこの摩擦をリアルにシミュレーションすると大きな負荷がかかってしまうので、風の強さによって羽の動きを切り替えるようなパラメータを取り入れたとのこと。

 弱い風のときは、摩擦が働いているときと同様にあまり動かず、強い風が吹くと大胆に動くようにといった仕様だ。

『CEDEC 2017』

 次は羽を動かすための風の設計。『人喰いの大鷲トリコ』では、ただ風を吹かせるのではなく、風の波(ムラ)についても再現を試みている。

 どうやってこの波を再現したのかというと、空間に波状の風を配置するという、まさかの力技。この波状の風と羽が接触したところに影響を与え、動かしているとのことだった。

『CEDEC 2017』
『CEDEC 2017』

 セッションの内容は以上となる。専門的な用語も多く、難しい部分もあったが“大鷲のひみつ”を知ることができた非常に有意義なセッションだった。

 本記事を見てトリコに会いたくなった方は、ぜひセッションの内容を思い返しながらプレイしてもらえればと思う。トリコの興味レベルを考えながら観察してみたり、足の着地点などを意識しながら遊んでみると、新たな発見ができることだろう。

関連サイト