昨年5月、人気アクションアドベンチャー『アンチャーテッド』シリーズの最新作『アンチャーテッド 海賊王と最後の秘宝』(以下『UC4』)がソニー・インタラクティブエンタテインメントからリリースされた。同シリーズを開発しているNaughty Dogは、米サンタモニカの開発会社で、『アンチャーテッド』シリーズのほか、現在2作目を開発中の『The Last of Us』でも高い評価を受けている。GDC 2017では、そのNaughty Dogが開発者のリクルートを目的に、合計で15コマものセッションを開催していた。そのうち4つのセッションを受講することができたのでレポートしたい。

TEXT&PHOTO_谷川ハジメ(トリニティゲームスタジオ
EDIT_山田桃子 / Momoko Yamada
©2016 Sony Interactive Entertainment America LLC. Created and developed by Naughty Dog LLC

<1>高品質なカットシーンを生み出すNaughty Dog流のモーションキャプチャ

まず最初に紹介したいのは、キャラクターに個性を与え魅力的なアクションを生み出すキャラクターアニメーションに関してのセッションだ。「Uncharted 4': Workflow and Prototyping」と題されたこのセッションでは、同作の制作ノウハウが惜しげもなく公開された。

同セッションの内容で最も注目したいのはNaughty Dogのプリビズの方法論だ。モーションキャプチャデータの撮影に先立ってシーンの全体像をDCCツールで組み立て問題点を洗い出すプリビズは、映像の世界のみならず、ゲームのカットシーンでも一般的になったと言える。Naughty Dogのプリビズで興味深いのは、DCCツールで制作したプリビズを参考に、実際にスタジオや野外で演技を行うライブアニマティックスで、現実世界での実現性を検証している点だ。

さらにゲームシーンと完全にマッチしたキャプチャデータを得るために、現実のキャプチャスタジオの空間とそこで使用される大道具を、DCCツール内に同じスケールで制作し、ゲーム内とモーションキャプチャスタジオの状態を物理的に一致させている。こうすることでモーションキャプチャデータの撮影現場ではコンテやイメージボードから動きを想像するのではなく、完璧な計画にしたがって撮影を進行させることができる。この方法はスタッフ同士のみならずアクターとコミュニケーションをとる際にも有効で、プリビズ上に撮影現場があらかじめつくられているため、アクターはどのように演技をすれば良いか、視覚的に理解することできるという。

このモーションキャプチャのワークフローでは、撮影したデータをゲームでそのまま使用するため事後に改変する必要がなく、非常に効率的だ。日本の開発フローではモーションキャプチャデータを単なる素材と捉え、撮影後に見栄えを優先してアクターの演技を大幅に変更することも多いが、このような手法は、伝統的にアクターの演技に対するリスペクトの大きいハリウッド映画でも採用されることが多い。プログラムで制御する必要のあるモーションに使うには難しいかもしれないが、映画的なカットシーンの場合には効率的な方法だ。

▲セッションで公開されたモーションキャプチャデータの撮影風景、プリビズ、ライブアニマティックスのスライド

またゲーム内のキャラクターの動きとの「馴染み」を良くするために、プレイ中のキャラクターアニメーション(プレイヤーが動かすプログラムで制御されたキャラクターの動き)のために撮影されたモーションキャプチャデータを、素材としてカットシーンにも活用している。先のプリビズのながれとは異なり、こちらは日本でもお馴染みの手法だろう。『UC4』のようにプレイアブルな場面からシームレスにカットシーンに繋げる必要のあるゲームでは、モーションキャプチャデータの数を減らすという意味だけではなく、プレイヤーに与える違和感を低減させるためにも有効だ。

▲大量のアニメーションデータやタスク、フィードバックを管理する方法も解説された。Naughty DogではTaskerというツールが活用されている

▲ほかにも「Cinematic Environment Production for 'Uncharted 4'」というセッションでは、カットシーンにおいてプレイヤーに対してよりシーンを印象付けるための方法論が語られた。もっとも、このセッションの中身にはあまり目新しいものはなく、プレイヤーの注視点を誘導するための構図や色づかい、ライティングといった話題が中心だった

次ページ:
<2>ゲームシステムとアートワークの巧みな連携

[[SplitPage]]

<2>ゲームシステムとアートワークの巧みな連携

「Uncharted 4': Workflow and Prototyping」の後半では、キャラクターがドアを開けて進む際のごく短いトランジション(カットとカットの間の切り替え効果)のカメラ演出や、カーチェイスをしながらの活劇、群衆の中を進む際のNPCの自律的な動作のプロトタイピングについて解説された。前項で紹介したカットシーンとは異なり、こちらはイベント発生時の各キャラクターの振る舞いがプログラムで制御されている。ただし、ひとつのアクションに対してどのアニメーションを再生するかの選択や、アニメーションの組み合わせ、カメラ位置やパスといった要素は、全てスクリプトやスクリプト内のパラメータを変更することでアーティストが調整可能となっている。

意外だったのは、提供されている開発者向けのフロントエンドが、アーティストに優しいタイムラインベースの編集環境ではなく、ストイックなテキストベースのスクリプトであったことだ。Naughty Dogではテクニカルな作業に精通した人材に困らないということなのだろうが、全て意図通りに制御するには、なかなか骨が折れそうだ。

▲疾走する四輪駆動車に飛び乗ったり振り落とされるなど、キャラクターのアニメーションは多彩。基本的な動きはモーションキャプチャによるものだが、車のスピード・車の方向・車上のキャラクターがしがみついている位置といった変動する要素がスクリプトにより取得され、自律的にキャラクターが振る舞いを変えるようにつくられている

▲プレイヤーと群衆のインタラクションやカメラの制御については、複数の案を開発環境でテストする

ゲーム内でアニメーションするキャラクターは「生物」だけではない。カーチェイスに登場する四輪駆動車もアニメーションの対象だ。こちらは別セッション「The Science of Off-Roading: 'Uncharted 4's' 4x4」において、プログラムで四駆の挙動をシミュレートしてリアルな動きをつくるためのアプローチが解説された。

『UC4』で目指された四輪駆動車のアニメーションは、『マリオカート』のようにリアリティはなくともゲーム的な楽しさを重視した動きと、『グランツーリスモ』のように実際の車の動きを忠実にシミュレートしたゲームとの中間だ。これはなかなか野心的な試みである。というのも「中間」であるということは、この両者が与えるゲームの楽しさを併せもつゲームにしなければならないことを意味するからだ。

実際のところ『UC4』の四輪駆動車を動かすシステムは、かなり本格的だ。同セッションでシステムの詳細を知る前は、プレイ中の画面や操作感からもっと『マリオカート』よりのイージーなシステムを想像していたのだが、良い意味で裏切られた。『UC4』では、プレイヤーがアクセルをどれだけ吹かせたかとエンジンの回転数から車輪のトルク(タイヤを回す力)を計算している。さらにハンドルを左右に切ると、その状態によって、4つのタイヤそれぞれのトルクが変化するようになっている。また、タイヤが受ける力も駆動力・ブレーキ・タイヤの滑り(摩擦抵抗)が考慮されている。そのおかげで悪路でのタイヤの食いつきや、ステアリングを切るタイミング、量からリアリティのある車の動きが再現されている。

▲『UC4』の四輪駆動車の動きは、運動に対する物理的な影響のうち代表的な値を抽出し、かなり本格的にシミュレートされている

<3>頂点シェーダが担う役割

『UC4』では、ゲームルックのかなりの部分を頂点シェーダで加工してから出力している。ひと言で言うと、いわゆる「プロシージャル技法」ということになるのだろうが、その範囲はかなり広範に渡る。「Technical Art Techniques of Naughty Dog: Vertex Shaders and Beyond」と題されたセッションでは、この頂点シェーダの役割について解説された。

モデルの形状が変化するアニメーションは、そのほとんどが頂点シェーダ単独によるものか、あらかじめデータとして用意されたシェイプアニメーションと頂点シェーダとの合わせ技だ。とりわけ、風のながれを受けてキャラクターの衣服がバタバタとたなびくさまや、雨天で雨に濡れたときに髪の動きが重くなる表現は秀逸だ。空間中に常に風がながれており、その強さや方向を制御するウインドシステムや、水中から陸上に上がった際、水濡れが次第に乾いていく水濡れの表現は他社の作品にもあるが、『UC4』では、さらに一歩進んだ表現を行なっている。

具体的には、衣服が風になびく様子は通常使用するノーマルマップ以外に、別途用意した向き情報をもったノーマルマップを参照して頂点シェーダで変化を与えている。風に押されてできるシワがシャツ全体ではなく一部にだけに及ぶように、この向き情報をもったノーマルマップをマスクして、衣服のシワの形状をつくり出し、これにさらに下向きにスクロールする2軸のノーマルマップとブレンドして、最終的な衣服の動きをつくり出すといったようにかなり芸が細かい。また髪の水濡れも、衣類のシワ同様の拡張ノーマルマップを活用したウィンドシステムと物理演算による重力との掛け合わせで実現している。

▲衣服のシワが変化する際に参照される情報。拡張ノーマルマップに加えて、下方に向かう大きな動きをつくるためのフロー用ノーマルマップが用意されている。物理的に正しいしくみが多い『UC4』のしくみのなかで、後者は珍しくかなり作為的だ

▲雨に濡れるにしたがいキャラクターの髪の動きに変化が生じる。雨が降っていないときには重力パラメータはゼロで計算され、動きが大きい

キャラクター以外のアニメーションでは、旗がたなびく様子もウインドシステムで制御される。旗は頂点カラーに格納した値を参照して、無風でポールに沿って垂れ下がっている状態から、風を受けて真横にたなびいている状態の間をモーフィングアニメーションするようつくられている。そこに、さらにウィンドシステムによる動きをブレンドして最終的な表現としている。

▲無風状態(左)と風を受けた状態(右)。ポールが水平でぶら下がっている旗でも、ピボットとノーマルによる風のシミュレーションでアニメーションしている

モーフィングは衝突によって進んで行く自動車の変形にも活用されている。変形を表現するために、あらかじめ頂点カラーとして衝突によって生じる凹凸を表現するための座標が車体モデルに埋め込まれている。変形状態の変化を管理するレンダーターゲットにダメージを書き込めば、頂点シェーダがその値を参照して車体の表面に変形が現れる「スキンドモーフターゲット」というシステムが用意されている。

このほか、画面内のディテールを充実させるために、雨の強弱を制御する情報をスケールアニメーションのデータとして格納しておき、ゲーム内の天候の変化に応じて自律的に変化するシステムにレイキャストを応用していたり、水面に浮かぶボートと水面との境目の部分に描かれる泡沫の表現が、ボートの上下動と左右の回転ブレの動きにしたがって自動的に発生するなど、細やかなつくり込みがなされている。これらは全て頂点シェーダのレベルで実装されている。

▲四輪駆動車が衝突して破壊されていく様子は、「スキンドモーフターゲット」というシステムで実現している

▲雨の状態によって水濡れ表現は変化していく。またボートに打ち寄せる波が引き起こす水泡もボートの運動から計算され、水面を描く際にシェーダが計算結果を参照する

総括

Naughty Dogのセッションで感じられたことは、あらゆる面において「芸が細かい」ということだ。通常のプロジェクトの場合、ここまで何から何まで細かくつくり込むことは難しいだろう。とは言え、たとえ一部でもこれらのテクニックからヒントを得て、自分たちのプロジェクトに合うようアレンジして導入することができれば、ゲームのビジュアル品質が向上することは間違いない。同レポートがクオリティ向上の一助となれば幸いだ。