企画記事
ゲームキャラの動きは,どうやってDoveチョコレートのようなシルキーななめらかさを実現したのか
いいゲームを作ることは簡単ではない
ゲームキャラの動きは,どうやってDoveチョコレート※のようにシルキーなスムースさを実現してきたのだろうか。
※「絹のような滑らかな舌触り」を謳うDoveには,“シルキースムース”というそのものズバリの人気商品がある
■キーフレームアニメーション
ゲームの良し悪しを判断するとき,すぐに分かるグラフィックスとゲームシステムは当然のこととして,もう一つ,パッと見では分からない重要な要素がある。それは,キャラアニメーションのクオリティだ。
グラフィックスはなかなかのものなのに,いざ遊び始めてみると気付かなかった不足部分が露呈してしまう。それを感じさせるのは,キャラアニメーションのクオリティが足りていないからである場合が多い。
キャラクターの動きがスムースかどうか,どれぐらい自然になっているかは,ゲーム表現を大きく変える。グラフィックスそのものより,アニメーションの方が重要な場合だってある。
2Dでも3Dでも,アニメーション作りの基本中の基本となるのは,手描きの「キーフレームアニメーション」※だ。
※一連の動きを構成するポーズのなかから特徴的な動きを複数選別し,それをキーフレームとして設定。これらを時間軸に沿って並べ,その間のフレームを補間することで動きを再現する,一般的なアニメーション手法
アニメーターはまず,対象キャラクターにいくつかのキーフレームを設定しておき,プログラムを使って欠けているフレームを補完する。キーフレームを連続再生していくことで,簡単なアニメーションが完成する。
こうしたアニメーションの制作方法は,コンピュータゲームによるアニメーションが生まれた時点から存在していて,今でも多数のゲームに応用されている。その理由は,比較的簡単で安価,操作しやすいからだ。
ゆえに,アタック,ジャンプ,そして歩くという動きは多くのゲームでパターンになっており,キャラクターがいつも同じ動きをしていることになる。プレイ時間が長ければ,機械的な硬さを感じてしまうだろう。
プロシージャルアニメーションは,動きを数式やスクリプトと組み合わせて,定められた規則でキャラクター各部位の動きをコントロールする。コンピュータにより計算されたアニメーションなので,プログラムの変数を変えればアニメーションも変わる。この手法で,アニメーションを環境に適応させ,リアルタイムで調整できるようになる。
プログラムで算出されたデータは,シミュレーションをかけることによってキーフレームアニメーションよりもリアルな物理効果を表現することができる。とくに周囲の環境と交わる場合,環境の状況によって違うリアクションをさせることができる。ラグドールも,プログラムを使ったアニメーションシステムだ。※1
事前に作られたアニメーションの場合,キャラクターが複雑な地形にいると,空中に浮いたりポリゴン欠けが起こったりする。アニメーションが環境とは別に固定されているので,キャラクターが立つときの高さも固定されていることになる。つまり,地形が変わればぎこちなく見える可能性がある。
しかし,プログラムで計算されたアニメーションは足と地面の距離や角度を正確に捉え,足の高さや角度をリアルタイムに調整でき,きちんと地面を踏んでいるように表現できる。ただのモーションではなく,正しく周囲の環境と相互に働きかけているのだ。
■モーションキャプチャ
一般的にゲームアニメーションに求められているものはリアリティだ。手描きのアニメーションでも,プログラム制作のアニメーションでも,できるだけ現実世界にあるような動きを再現するようにしているはずだ。
言うなれば“模倣”だが,それは一部の範囲の話でしかない。人の目は,リアリティに対して非常に敏感で,とくに人の動きは,とても細かいところであっても,違和感があると,普通に一目でバレてしまう。手描きのアニメーションでリアルな動きや重み,スピード感を出しているのは,とても深い芸術なのだ。
本物のような自然な動きを出すために,多くのゲームに使われているのが「モーションキャプチャ」だ。
モーションキャプチャは,現実の人間や物体の動きをデジタル的に記録して,それをキャラクターの骨格に付けることによって,アニメーションをよりリアルに近づけることができる手法だ。
モーションキャプチャをゲームに活用する歴史は,それなりに長い。1994年の「バーチャファイター2」は一番最初にモーションキャプチャ技術を使ったゲームの一つ※2だ。その時代のモーションキャプチャは最先端技術で,その設備は鈴木 裕がアメリカ陸軍から貸してもらったという話がある。※3
ビデオゲームの語り部たち 第2部:「バーチャファイター」のプロトタイプに込められた石井精一氏の人生
メディアコンテンツ研究家の黒川文雄氏が,ビデオゲームの歴史で記録・記憶しておくべき人々や場所などを振り返る連載「ビデオゲームの語り部たち」。第2部は,「バーチャファイター」のベースとなったプロトタイプについて,同作のディレクションを担当した石井精一氏に聞きました。
- キーワード:
- ビデオゲームの語り部たち
- 連載
- OTHERS
- ライター:黒川文雄
※3
(4Gamer編注):これは誤った情報らしい。軍から借りたのはテクスチャマッピングのチップであって,モーションは医療用で使われていたもの。しかも「借りた」のではなく「買った」と思われる本人の発言が公式サイトのインタビューの中にある。
外部サイト:バーチャファイター20周年記念特設ウェブサイト
その前に,1989年の「プリンス・オブ・ペルシャ」では原始的なモーションキャプチャを使っていた。役者が移動や戦闘の動きをして,制作チームが録画したものを元に,見よう見まねでキャラクターのキーフレームを描いたのだ。最終的に出来上がったアニメーション効果は,十分滑らかでリアルなものだった。
いまとなっては,モーションキャプチャはAAAゲームの基本スペックのようになっていて,多くのゲームスタジオは自前のキャプチャスタジオすら持っている。ゲーム内の動きもモーションキャプチャで制作されていることで,ゲームにも映画のような演出が見られるようになった。
カットシーンなどには,普段使われない動きが大量に含まれるので,“中の人”も映画役者のように一通り演じなければならない。一方,キャラクターがよく使う動きは,必要なアニメーションが細かくリストアップされ,役者はそれらを一つずつ演じることを求められる。
しかしながら,モーションキャプチャで得られるのは簡単なモーションでしかなく,モーション取得時の不完全さやズレが発生するので,より正確で自然な動きにするには手動での調整が欠かせない。アニメーション制作の基本は,まだまだ人の手作業にかかっているのだ。
幸い近年では,キャプチャ設備がどんどんシンプルに安くなっている。中小メーカーでも簡単なモーションキャプチャスキルを使えて,ゲームをより良くすることができる。また,VR設備やKinectを使って,モーションキャプチャ設備を自作する人も出てきている。
将来はきっと,モーションキャプチャを採用したインディゲームだっていまより多く登場するだろう。
■ステートマシン
ゲームでは,キャラクターがプレイヤーの操作に応じてリアクションをとることになる。ゆえに,どのアニメーション制作の手法であっても,モーションを作るのは最初の一歩に過ぎない。キャラクターに正確なタイミングで正しい動きを取らせるために,アニメーションとゲームを結びつけなくてはならないのだ。
ここで一般的に使われるのはステートマシン(状態遷移図)で,キャラクターの動きを「歩行」「走行」「ジャンプ」などの状態に分けていく。ステートマシンは,キャラクターがその瞬間どの状態にいるのかを判断して状態に合ったモーションを付ける。
キャラクターがいくつのステート(状態)を持っているかで,動作システムの複雑度が決まる。ステートが多ければ多いほど,キャラクターの動きが細部にわたって充実する。もちろん,制作もより複雑になるが。
より凝ったシステムになると,ジャンプという動きを「立ったままのジャンプ」と「前進中ジャンプ」の2つのステートに分けて作る。
さらにもう一歩進めるなら,高いところから飛び降りるというステートを加えることもできる。キャラクターが飛び降りたときに,よろける動きを加えるとか。3Dゲームなら,左右前後のジャンプを区別することもでき,横跳び,バク転など,基礎的な動きでも深掘りできる。作業量は増え続けることになるが。
3Dゲームに関しては,ステートにアニメーションをつけると同時に,アニメーションの間の遷移※とミキシングが必要となる。アニメーション遷移は,ステートの切り替えによるアニメーションの切り替えを滑らかにつなぎ,急激に変化して違和感をもたらすようなアニメーションになることを避けられる。
そしてミキシングは,複数のアニメーションを一個にまとめることを可能にする。例えば「攻撃」と「走る」の2つの動きはそれぞれが単独のアニメーションだが,「走りながらの攻撃」はそれら2つのアニメーションをミックスする必要がある。さもないと,とてもおかしなアニメーションになるだろうから。
※
ステートマシン:キャラクターやオブジェクトのアニメーション制御や順序づけを可能にする,状態のセット,遷移のセットおよび現在の状態の変数をひとまとめにしてステートマシンを構成している
アニメーション遷移:複数ステートのアニメーションの間での切り替えを可能にする
アニメーションミキシング:部分的に適用する複数のアニメーションを組み合わせること
参考:Unity ユーザーマニュアル
ゆえに,ステートマシンでキレイなアニメーションを作るには,それ相応の技術が必要とされるだけでなく,かなり高い人的コストが発生するのだ。
■モーションマッチング
ゲームアニメーションのもう一つの難所は,ゲームの自由度によるものだ。
キャラクターを操作するのはプレイヤーであって,プレイヤーがキャラクターにどんな動きをさせるのか,制作側では予測できない。プレイヤーは突然進行方向を変えたり,急に迅速に動きまわったりする。そんな場合は,キャラクターの動きに瞬間移動や位置ズレなどが起きかねない。
ステートマシンもすべての状態を予測できるわけではなく,キャラクターの動きがあらかじめ定義されたステートに当てはまらない場合,アニメーションは一つのステートから次のステートへと,すぐに途中の遷移なしに変わることになる。その場合,モーションキャプチャを使っていても,リアルな表現にできるかどうかの確証はないのだ。
この問題を解決するために,「モーションマッチング」という技術が発明された。
プログラムは,キャラクターの進行方向や位置,速度そして周りの環境などを変数として使って,キャラクターの動きを予測する。数フレームごとに一度判断し,ルートに明らかな変化がある場合,プログラムは次の動きの予測結果に基づき,データベースから適応するアニメーションを取り込むことで,スムースなアニメーション切り替えを実現させる。
近年ではモーションマッチングを使ったゲームも少なくない。「フォーオナー」「アサシン クリード」「The Last of Us Part II」などは,このテクノロジーのおかげでリアルかつ複雑,変化に豊んだアニメーションを実現した。
モーションマッチングは,現在最先端のモーションシステムだがデメリットもある。
いまのゲームは操作が多く,動きも複雑になってきている。移動一つ取っても,待機,歩き,走り,ジャンプ,しゃがみ,ダッシュなどが存在する。環境と絡んだ動きであれば,ドアを開ける,座る,拾う,飛び越える,騎乗……など。組み合わせで作った動きも含めると,数え切れないほど多い。
すべてのアニメーションの元の素材はモーションキャプチャからで,撮らないといけない量も驚くほどある。ましてやゲームプレイの最中も,メモリにあるアニメーションを随時取り込むことになるので,ハードウェアの機能の消耗度が高い。
■人工知能
どのアニメーション制作方法にも,それぞれのメリット・デメリットがある。多くの制作チームは,それらのテクノロジーを複合で使っている。
将来のモーションシステムであれば,長所と短所を補い合えるかもしれない。リアリティを増やすと同時に,制作難度とコストを減らすためのカギを握るのは,恐らく人工知能だ。
2016年,Daniel Holden氏が率いるチームが,PFNN(Phase-Functioned Neural Networks)というニューラルネットテクノロジーでキャラクターアニメーションの自動化コントロールを実現した。キャラクターにリアルで多様な動きをさせながらも,環境にしっかりフィットする行動を可能としたのだ。
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案
ゲーム内においてキャラクターの動きをいかに自然なものとするかは,とくにゲームが3D化してからの大きなテーマであり続けているが,そのテーマに向けた最新の研究結果がCEDEC 2017で紹介された。キーワードはニューラルネットワーク(深層学習)だ。
その後,Daniel Holden氏はUbisoftに加わり,機械学習とモーションマッチングを融合させ,ニューラルネットを訓練したのちに,アニメーション選出と取り込みの作業をAIに任せた。このテクノロジーは,アニメーションの品質向上を実現したばかりでなく,動画ファイルをメモリに置かなくても済むようになったことで,モーションマッチングに利用するメモリも590MBから8.5MBまで下がった。
外部サイト:Learned Motion Matching(開発者ブログ,英語)
エディンバラ大学の研究者もElectronic Artsの支援で※4,深層学習により複雑なアニメーションを処理するシステムを作った。AIに,キャラクターがバスケットボールをする動きをコントロールさせ,相当いい結果を出してきた。
キャラクターはプレイヤーの操作命令を受けたうえで環境に適応し,迅速かつ的確な反応を見せ,しかも正確かつ合理的な動きをずっと保っていた。ボールとのマッチングもリアルで,物理法則に反することはなかった。
※4
(4Gamer編注):この研究者(Sebastian Starke)は,エディンバラ大学とEAの両方に在籍していたので,「支援」というのは正確ではないかもしれない。
同プロジェクトは,AIに環境分布と逆運動学アルゴリズム※を学習させて,キャラクターと物体の間に隙のないリアルな相互作用を作ることで,実際の状況により,キャラクターアニメーションを自動調整することを可能にした。
例えば,椅子に座ること一つ取っても,椅子の大きさや高さ,形をどう変えても,キャラクターは正確に自然に座る。椅子が低すぎてキャラクターが空中に空気イスのように座っているような状況は起きない。
※ロボットを目標の座標に到達させるための動きを決定する運動学の方程式の一つで,与えられた姿勢を元に,その姿勢に対する関節の変移のさせ方を計算する。ロボットの関節の位置や角度から末端部の位置と動作を求める“順運動学”と反対の概念。(参考:MathWorks)
外部サイト:AI4Animationプロジェクトページ(英語)
前述のように,プログラムによるアニメーションマッチングでもこのような効果を実現できるが,同レベルの効果を達成するためには,制作チームは椅子ごとにそれなりの数のアニメーションを作らなければならない。一つのゲームの中には,椅子のようにインタラクトできるアイテムは数千数万とあるだろう。その分の作業量は果てしないほど多くなるに決まっている。それを避けたければ,ゲーム内の椅子の高さや大きさを統一すればよいのだが,それこそが“アンリアル”であることは言うまでもないだろう。
そこにAIテクノロジーを利用することによって,作業量は減るし,ゲームの多様性とリアリティも増すことができる。
最初からすべての椅子に全部座ってみる人はまずいないだろうけど……。モーションシステムのグレードアップはなかなか話題にならないが,このような少しずつの進歩が,以前と比べて今のアニメーションに雲泥の差が生まれた要因なのだ。
次世代ゲームへの期待の多くは,グラフィックスやライティングの効果に寄せられているが,すでに相当のレベルまで発展したグラフィックステクノロジーより,モーションシステムの革新のほうが,目新しい驚きを見せてくれるかもしれない。(著者:石叶)
- この記事のURL: