PC Watch編集部の担当者から、ゲームグラフィックス技術において、「歩行アニメーション技術について解説してほしい」という打診があった。担当編集者は、このあたりの話題を取り扱った下記の動画を見て大きな関心を抱いたようだ。
「ゲームにおいて階段はなぜ問題になったのか?」という題名の「ゲーム業界の歩行アニメーションへの取り組み」をまとめた動画。中国語である。担当編集者は中国語が堪能な人物である
ということで、筆者はこの話題について解説記事を書くことにしたのだが、このあたりは、ゲームによって採用する方法が異なってくるので、本稿では現在も主流で用いられる理論や手法を紹介し、その後に、最近ブームとなっているAI支援を導入した比較的新しい手法についての紹介も行なうことにした。
本誌読者の多くは、技術的なテーマには関心が高くても、その専門家ではないと思われるので、本稿では、ざっくりとしたアルゴリズム的な理屈を述べることにしたい。
FKから始まりIKへと進化した歩行アニメーション
担当編集者が興味を抱いたテーマは「階段の昇降アニメーション」だったようなので、そのあたりを意識して解説したい。
3Dゲームグラフィックスのキャラクターのアニメーション(モーション)は、その3Dモデルの内部に仕込んだ「骨」(ボーン)を動かすことで実践している……ということは聞いたことがあると思う。
初代プレイステーション時代前期、いわゆる3Dゲームグラフィックスの“最”黎明期では、各ボーンを繋いでいる関節を、時間方向に曲げていくことでアニメーションを実践していたタイトルが少なくなかった。そのプロセスは、たとえれば、ほぼクレイアニメ制作のようなイメージに近い。
クレイアニメのイメージ
時間方向に行なわれる関節駆動で、3Dモデルの姿勢を制御するアニメーション手法は、FK(Forward Kinematics: 順方向運動学)などと呼ばれる。あらかじめ、決め打ちのアニメーションを制作しておき、キャラクターの移動時は、このアニメーションを固定で再生し、そのキャラクターのXYZ座標を動かすだけのシンプルなものになる。
最初期の3Dグラフィックスのゲームでは、壁に衝突しながらも、コントローラの入力がある限り、歩行アニメーションをし続ける主人公キャラクターを目の当たりにしたことがあるだろう。
それこそ、今でも超人気の「マインクラフト」の主要キャラクターのアニメーションはまさにこのFKタイプとなっている。
この後、急速に採用が進んだのが、FKの対義語に相当するIK(Inverse Kinematics: 逆方向運動学)方式のアニメーションだ。
これは、歩行でたとえるならば「ある目的の場所に足先を移動させたい場合」に「脚部の各関節をどう回転させたり、曲げたりすればいいか」を求めるものだ。
今回のお題のような「階段を上る」という状況においては、このIKという概念がとても重要になるのである。
モーションキャプチャ技術は、ゲームグラフィックスの動きの表現を劇的に向上させ、今ではすっかり当たり前の技術となっているのはご存じの通り。しかし、木が倒れてきたり瓦礫が崩れてきたりして、ゲーム世界が動的に変貌した場合、モーションキャプチャベースのアニメーションをそのまま再生すると可笑しなことになる。
たとえば、平地に対する歩行アニメーションをモーションキャプチャで取得したとしよう。これをそのまま、階段で再生したのでは、つま先が階段の段差に突き刺さってしまうだろう。
そこで、階段に差し掛かったことを察したら、階段の段上のどこに足(つま先とかかと)を置けばいいのかを先に確定し、IKで脚部の関節の変移量を求め、そのゴールに向かって「平地に対する歩行アニメーション」の脚部の動きを修正/補正させればいい。
この修正・補正の仕方にこそ「秘伝のタレ」があるのだが、さすがに本稿ではこの部分を深くまでは掘り下げない。とはいえ、次節で基本概念については触れておこう。
AI支援系アニメーション生成にはどんなものがある?
昨今のAIブームもあって、マシンラーニング技術を用いたアニメーション生成に取り組んでいるゲーム開発スタジオも多くなっているようだ。
ここでは、最近、筆者が耳にした「その手」の技術をいくつか紹介したい。
モーションマッチング×ANN法
Naughty Dog は「The Last of Us Part II」のアニメーションにおいて、モーションマッチング技術を導入したことを発表している。
モーションマッチングとは、簡単に言えば現在フレームにおけるキャラクターの移動方向や速度、腕や脚といった関節の角度、角速度、向き、場合によってはゲームパッドの操作状態といった多彩なデータから「次に再生すべきモーションをデータベースから探索する」技術のこと。
このモーションマッチング技術に「いちばん近い(似ている)」ものを高速に探索する手段に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技術は、ゲーム実行時(ランタイム)での活用よりは、ゲーム開発時での活用のほうが、現場における導入のモチベーションは高そうである。






コメント