特集

地味にスゴイ。「脚が階段にめり込んで興ざめ」を防ぐ3D技術たち

「ゼンレスゾーンゼロ」からの1カット。脚が極力階段にめり込まないよう、自然なアニメーション処理がなされている(Copyright © COGNOSPHERE. All Rights Reserved.)

 PC Watch編集部の担当者から、ゲームグラフィックス技術において、「歩行アニメーション技術について解説してほしい」という打診があった。担当編集者は、このあたりの話題を取り扱った下記の動画を見て大きな関心を抱いたようだ。

「ゲームにおいて階段はなぜ問題になったのか?」という題名の「ゲーム業界の歩行アニメーションへの取り組み」をまとめた動画。中国語である。担当編集者は中国語が堪能な人物である

 ということで、筆者はこの話題について解説記事を書くことにしたのだが、このあたりは、ゲームによって採用する方法が異なってくるので、本稿では現在も主流で用いられる理論や手法を紹介し、その後に、最近ブームとなっているAI支援を導入した比較的新しい手法についての紹介も行なうことにした。

 本誌読者の多くは、技術的なテーマには関心が高くても、その専門家ではないと思われるので、本稿では、ざっくりとしたアルゴリズム的な理屈を述べることにしたい。

FKから始まりIKへと進化した歩行アニメーション

 担当編集者が興味を抱いたテーマは「階段の昇降アニメーション」だったようなので、そのあたりを意識して解説したい。

 3Dゲームグラフィックスのキャラクターのアニメーション(モーション)は、その3Dモデルの内部に仕込んだ「骨」(ボーン)を動かすことで実践している……ということは聞いたことがあると思う。

「METAL GEAR SOLID4」(コナミ、2008年)の主人公スネークのボーンを曲げたときの腕の様子(出典:筆者のGAME Watch誌での連載記事からの引用。以下同)

 初代プレイステーション時代前期、いわゆる3Dゲームグラフィックスの“最”黎明期では、各ボーンを繋いでいる関節を、時間方向に曲げていくことでアニメーションを実践していたタイトルが少なくなかった。そのプロセスは、たとえれば、ほぼクレイアニメ制作のようなイメージに近い。

クレイアニメのイメージ

 時間方向に行なわれる関節駆動で、3Dモデルの姿勢を制御するアニメーション手法は、FK(Forward Kinematics: 順方向運動学)などと呼ばれる。あらかじめ、決め打ちのアニメーションを制作しておき、キャラクターの移動時は、このアニメーションを固定で再生し、そのキャラクターのXYZ座標を動かすだけのシンプルなものになる。

 最初期の3Dグラフィックスのゲームでは、壁に衝突しながらも、コントローラの入力がある限り、歩行アニメーションをし続ける主人公キャラクターを目の当たりにしたことがあるだろう。

 それこそ、今でも超人気の「マインクラフト」の主要キャラクターのアニメーションはまさにこのFKタイプとなっている。

 この後、急速に採用が進んだのが、FKの対義語に相当するIK(Inverse Kinematics: 逆方向運動学)方式のアニメーションだ。

 これは、歩行でたとえるならば「ある目的の場所に足先を移動させたい場合」に「脚部の各関節をどう回転させたり、曲げたりすればいいか」を求めるものだ。

 今回のお題のような「階段を上る」という状況においては、このIKという概念がとても重要になるのである。

 モーションキャプチャ技術は、ゲームグラフィックスの動きの表現を劇的に向上させ、今ではすっかり当たり前の技術となっているのはご存じの通り。しかし、木が倒れてきたり瓦礫が崩れてきたりして、ゲーム世界が動的に変貌した場合、モーションキャプチャベースのアニメーションをそのまま再生すると可笑しなことになる。

 たとえば、平地に対する歩行アニメーションをモーションキャプチャで取得したとしよう。これをそのまま、階段で再生したのでは、つま先が階段の段差に突き刺さってしまうだろう。

 そこで、階段に差し掛かったことを察したら、階段の段上のどこに足(つま先とかかと)を置けばいいのかを先に確定し、IKで脚部の関節の変移量を求め、そのゴールに向かって「平地に対する歩行アニメーション」の脚部の動きを修正/補正させればいい。

歩行アニメーションに対してIK補正なし。足が地面に潜り込んでしまっている。「ロストプラネット」(カプコン、2006年)より(©CAPCOM CO., LTD. ALL RIGHTS RESERVED.)
歩行アニメーションに対してIK補正あり。雪の斜面に追従するように足の位置や姿勢を制御(©CAPCOM CO., LTD. ALL RIGHTS RESERVED.)

 この修正・補正の仕方にこそ「秘伝のタレ」があるのだが、さすがに本稿ではこの部分を深くまでは掘り下げない。とはいえ、次節で基本概念については触れておこう。

IKからフルボディIKへ。そしてその先は?

 たとえば、人体系キャラクターであれば、解剖学的にあり得ない関節の曲げ方や、常人ではとりづらい姿勢になってしまっては、プレイヤーから笑われてしまう。IKは、そうしたへんてこな事態にならないよう効果的に活用するのだ。

 より具体的に言えば、「手先を動かしたり足先を動かしたりしたときに、手や足の関節だけでなく、身体全体の姿勢までを制御しましょう」というIK制御を行なうことになる。

 こうした「自然な人体の動きになるような身体全体に対するIK制御」の仕組みは、「フルボディIK」と呼ばれる。

 重心を維持するような姿勢を心がけるフルボディIKが最も基本的なものになるが、転びそうになったら、自発的に手を付いて衝撃を和らげようとしたり、あるいは急所を守るような仕草を発動するなどの「知性を感じさせる先進的なフルボディIKシステム」もなくはない。

2017年で新規採用終了となったNatural Motionの「Euphoria」は、プロシージャル・フルボディIKシステムとして一時期注目を集めた。「Grand Theft Auto」シリーズで有名なROCKSTARは、Euphoriaの初期ライセンシーの一社で、同社の独自ゲームエンジン「RAGE」には、このEuphoriaが統合済みで今も存続活用されているといわれている

 もっと実直なアプローチのフルボディIK技術もある。たとえば、スクウェアエニックスが、自社ゲームエンジンの「Luminous Studio」を開発した際に生み出された技術について紹介したカンファレンス「第1回 スクウェア・エニックス オープンカンファレンス」(2011年開催)では、同社独自のフルボディIK技術として「データ駆動型アプローチの歩行モーション生成」システムを発表していた。

 これは約40個程度の歩行モーションおよび走行モーションのモーションキャプチャを事前に行なって、このモーションデータ群をベースにして新しいモーションを算術生成する……という技術だ。

データ駆動型アプローチの歩行モーション生成
基本ループ
要素技術
最低限のモーションデータはモーションキャプチャにて取得。データの正規化や解析は事前計算で行なう

 実際のランタイムにおける歩行モーション生成では、まず次に踏み出す足の位置を移動方向や地形に配慮して決定し、その足の位置に至る歩行モーションを合成することになるのだが、面倒そうなのは足と地面の衝突位置決定だ。階段で言えば、どこまで足を上げたらいいか……の部分だ。

 これについては、事前計算で対処する。具体的には、足を踏み出した際に着地しうる足の位置をたくさん事前に求めておき、各位置に衝突判定用の仮想球を生成しておく。「なぜ球か」といえば、球の中心座標とその半径の2パラメータだけで、簡単かつ高速に衝突判定が取れるから。

 ランタイムでは、まず踏み出し先の足位置がどの仮想球になるのか……を決定する「仮想球と地面との衝突判定」を行なう。そして、出力するモーションは、その仮想球に着地するものとする。下の図や動画を見ると、このアルゴリズムが理解しやすい。

「歩行の際の地面との衝突判定」は「事前計算で生成した仮想球の選択」に置き換えられる
そのパフォーマンス
ランタイムで衝突判定に用いる仮想球は事前に生成
歩行モーション再生中に、試験的に仮想球を可視化させた映像

 下に示したのは、この「データ駆動型アプローチの歩行モーション生成」によるランタイムデモの映像だ。

凹凸の激しい地面を歩いたり、走ったりする様子
階段を歩き上がる様子

 凹凸地面のシーンでは、つま先がめり込んだりすることもなく、うまく歩き回れている。また足を「つま先」と「土踏まず&かかと」に分けて制御しているために、斜面への足の追従も自然だ。階段のシーンでは、「かかと」が段差にめり込むこともなく、自然に階段を昇降できているし、後半では階段を一段飛ばして昇降する様子も見せている。

 と、まあ、このように、現在の多くのゲームにおける歩行アニメーションには、最低でもなんらかのIK技術、あるいはフルボディIK技術が、使われていると考えていいだろう。

 なお、少し先進的なゲーム開発スタジオだと「モーションマッチング」技術(後述)などを採用しているところもあるようだ。

AI支援系アニメーション生成にはどんなものがある?

 昨今のAIブームもあって、マシンラーニング技術を用いたアニメーション生成に取り組んでいるゲーム開発スタジオも多くなっているようだ。

 ここでは、最近、筆者が耳にした「その手」の技術をいくつか紹介したい。

モーションマッチング×ANN法

 Naughty Dog は「The Last of Us Part II」のアニメーションにおいて、モーションマッチング技術を導入したことを発表している

「Motion Matching in 'The Last of Us Part II」(GDC2021)

 モーションマッチングとは、簡単に言えば現在フレームにおけるキャラクターの移動方向や速度、腕や脚といった関節の角度、角速度、向き、場合によってはゲームパッドの操作状態といった多彩なデータから「次に再生すべきモーションをデータベースから探索する」技術のこと。

 このモーションマッチング技術に「いちばん近い(似ている)」ものを高速に探索する手段にAIとしての「近似最近傍探索法」(ANN:Approximate Nearest Neighbor)を組み合わせる手法が注目を集めている。

 ちなみにその推論はCPUで実行できるレベルの軽さだとされる。近年ではUEやUnityが正式採用したことでも注目を集めている。

PFNN: Phase-Functioned Neural Networks

 歩行の“位相(Phase)”を入力して学習させ、フレームごとにニューラルネットワークの重みを補間して不整地でも滑らかに歩くポーズシーケンスを生成する技術。

 ここでいう「位相」とは、1ループ分(0→2π)の歩行アニメーションのフレーム単位の姿勢(たとえば足の位置、関節の回転角など)で、そのほか、必要に応じてはゲームコントローラの入力状態なども含める。

 推論時は、現在の位相と姿勢から、次の状態の姿勢を予測させる。歩く/走る/段差越え/障害回避のモーション生成に向いている。学習データは10MB~数十MBのオーダーとされ、ランタイム推論の実行速度は最新CPUのシングルスレッドでμ秒級でとても軽いとされる。

ML Deformer

 ポーズ(骨の回転やアニメーションカーブ)と、部位の「筋肉のふくらみ」「皮膚のつぶれ」「衣服のしわなど」の対応関係を学習させ、推論では、再現対象要素(ふくらみ/つぶれ/しわ)の補正・変形パラメータを出力。

 ランタイム推論はCPUベース実行でμ秒級・学習データも数MB級。Unreal Engine(UE)が正式導入済み

Deep Mimic

 モーションキャプチャや物理シミュレーションベースで生成した正確な「モーションデータ」を“お手本”に深層強化学習させて、ゲーム内物理シミュレーション適用後のキャラクターに、適切なモーション(振る舞い)を推論させる手法。

 転倒などの外乱に対しても堅牢なアクションが生成できる。ランタイム推論はCPUベースの1ms未満で実行可能。学習データは数MB級。

AMP: Adversarial Motion Priors

 Deep Mimicの進化系に相当する。“お手本”モーションから「不自然さはないと判定できる」敵対性ネットワーク(GAN)識別器を生成してDeep Mimicに組み込む手法。

 Deep Mimic的な深層強化学習フェーズは共通。学習させたモーション以外の挙動は生成できないが、外的要因によるタイミングや速度の変化、モーションのつなぎ方経路の自律的な変更に対応する(つまり、パルクール的なアクションに向いているとされる)。

 まだほかにもあると思うが、本稿ではこのあたりで勘弁願いたい。

AIベースのアニメーション生成技術は使えるのか

 先日、このあたりの技術について、大手ゲーム開発スタジオの某社のエンジニアの方達に意見を伺ったのだが、AI支援系アニメーション技術は、望んだ振る舞いをしなかった場合のチューニングが難しく、すべての登場キャラクターのモーションを、すべてこうしたAI支援系技術に置き換えることは、今後も難しいだろう、と話していた。

 ディープラーニングやマシンラーニングを基盤としたAI技術の場合、その推論結果が想定外や意図しない振る舞いだった場合、学習データの部分修正というアプローチは、かなり難度が高いとされる。むしろ「学習のさせ方」や「学習データの工夫」のような角度でのチューニングのほうが現実的なアプローチとなるのだが、その試行錯誤の繰り返しの先に、理想の結果を出してくれるAIができあがるかは、見通しが立てにくい。

 では、AI支援アニメーション技術はまるでだめか、というと、そういうわけでもなく、ユーザーの評価が厳しくならない「町人」や「商人」などのNPCの立ち振る舞い生成には十分使えるのではないか……とも述べていた。

 ゲームでは、リアルさや正しさよりも、プレイヤーの没入感を邪魔しない説得力の方が重視されるため、ゲーム開発者が介入できない領域が少なからず存在する、ディープラーニング/マシンラーニング系のAI技術の導入にはどうしても慎重になってしまうようである。

 そうした理由からか、AI技術は、ゲーム実行時(ランタイム)での活用よりは、ゲーム開発時での活用のほうが、現場における導入のモチベーションは高そうである。