Loading

『バトルフィールド1』のエフェクトはこうして作られた HOUDINIが可能にするモダンなワークフロー

Text 小野 憲史

直感的な操作と優れたパフォーマンスで、映画・コマーシャル・ゲームなど、さまざまなコンテンツ制作に活用されているHoudini。ツール単体だけでなく、ゲームエンジンと組み合わせたワークフローを構築することで、さらなる威力を発揮する。

ボーンデジタルは2017年9月3日、EA DICEで一人称視点シューティング『バトルフィールド1』の制作に参加したVFXアーティスト、アンドレアス・グラッド氏をゲストスピーカーに迎え、「VFX FOR AAA GAMES with Houdini」と題した特別セミナーを実施した。全世界で1000万本以上のセールスを記録した大ヒットタイトルにおける、Houdiniの活用事例について情報が共有された。

バトルフィールド1とEA DICE

『バトルフィールド1』は第一次世界大戦をモチーフとした一人称視点シューティングで、エレクトロニック・アーツ(EA)からPC・PlayStation4・Xbox One向けに2016年10月にリリースされた人気タイトルだ。シリーズの原点でもある「陸・海・空」の総力戦が史実をもとに展開され、アラビアのロレンスなどの著名人も登場。一人でプレーするだけでなく、オンラインに接続すれば最大64人まで同時に対戦・協力プレーも楽しめる。開発はスウェーデンのEA DICEだ。

本作でアンドレアス氏はアソシエイトVFXリードとして、シングルプレイヤーモードとシネマティクス(カットシーン)」でのエフェクトを担当した。当時、EA DICEのVFXチームは全11名で、『バトルフィールド』『バトルフロント』など、同社が開発している全タイトルに係わっていた。リリース後はEA DICEを離れ、機械工学を学ぶために大学に復学。同時にPARTIKCL社を立ち上げ、フリーランスのVFXアーティストとしてインディゲームの開発支援などに従事。自宅の寝室を主な作業場として、リモートワークを行っているという。

もっとも『バトルフィールド1』の開発では同社の内製ゲームエンジン「フロストバイト3」が使用された。Direct X11.1対応で、2013年に発売された『バトルフィールド4』から採用されており、さっくり言って一世代前(PlayStation3世代)のエンジンとなる。アンドレアス氏も「最新ではないが、必要十分な機能が備わったエンジン」として、講演ではUnreal Engine (UE)4とHoudiniを組み合わせた使用法についても触れた。

そのうえで講演全体を下記の三部構成とし、UE4やHoudiniといった高性能なツールが普及したことで、VFXアーティストがフリーランスで活躍できる環境が整ってきていると指摘。自らの経験にもとづき、AAAタイトルとフリーランスでの働き方の違いについても触れた。

  • 再利用可能なアセット生成
  • 高品質なPBR対応エフェクト
  • 高速なイテレーションを可能にするツール生成

1:アセットの再利用

はじめにアンドレアス氏は2016年5月に初公開されたトレーラーを上映した。ゲームの開発終盤に制作されたもので、本トレーラーで使用されたエフェクトは約2週間で納品する必要があった。エフェクトはゲームの完成度を高めるために必要不可欠な存在だが、凝れば凝るほど処理負荷がかかるため、全体のバランスをとりながら進める必要がある。アンドレアス氏は「ゲーム本編よりも美麗にする訳にはいかなかった。最終的にゲーム本編のエフェクトを、トレーラーよりも美麗にすることで解決した」とふりかえった。

前述の通り『バトルフィールド1』は最大64人が同時対戦できる一人称視点シューティングゲームだ。そのためプレイヤーの操作に伴い、戦場のあちこちで、破壊や噴煙などのエフェクトが発生する。さらに、本作では新たに風・雨・霧といった天候の変化が盛り込まれた。その一方で快適なゲームプレイを実現するために、60fpsの死守が求められた。つまり、どれだけ派手なエフェクトが発生しても、必ず描画処理を2ミリ秒内に納めなければいけないというわけだ。

アンドレアス氏は「仮に64人のプレイヤーが一箇所に集まって、一斉に手榴弾を爆発させても、60fpsを保つ必要がありました。これはエフェクトにとって、非常に大変でした」と振り返った。そのために行われたのが徹底した最適化だ。アンドレアス氏はパーティクルに対してはノーマルマップを使用せず、ほとんどのエフェクトはテクスチャの連番ファイルで作成し、ビルボードで実装、パーティクルシェーダーやカスタムシェーダーは限定的な使用に留めた。エミッターの数もできるだけ削減したLODを最大限に活用した――とあかした。

このように本作では見た目の派手さとは裏腹に、エフェクトについては泥臭いともいえるやり方が踏襲されている。これには近年のAAAタイトルのトレンドともいえる、超巨大なステージ空間が関係している。ステージ上のすべての表示物をリアルに再現していては、とても処理がおいつかないからだ。そのため遠方の戦闘機や兵士はパーティクルやビルボードで表示したり、空中戦のステージでは雲をリアルに描く一方で、地表を1枚の板ポリゴンで表示したりといった工夫が行われているという。

その一方で「印象的なエフェクトをできるだけ画面内に残す」方針が採用されたと語った。時にはエミッターを追加してでも、エフェクトの余韻を残すなどして、プレイヤーがエフェクトの中を移動できるようにするといった具合だ。「大爆発がおきても数秒後には視界がクリアになるのでは、現実的なのかもしれませんが、没入感が薄れてしまいます」(アンドレアス氏)。このようにプレイヤーの体験を引き上げるために、エフェクトにメリハリをつけるように心がけたという。

1-1:スモーク

ただし、前述のようにVFXアーティストはEA DICE全体で11人だった。そのため『バトルフィールド1』では、ほとんどのシーンで担当したVFXアーティストの人数は2名に留まったという。そこで重視されたのが「アセットの再利用」だ。好例がスモークで、スモークボールというテクスチャを作って、あらゆるシーンで再利用したという。「まったく同じシミュレーションキャッシュを使って、シェーディングとライティングを変えるだけで、煙と炎を再現しています。トレーラーの中では約50個のスモークテクスチャを使用しました」(アンドレアス氏)

Houdiniの中に3Dボリュームとしてスモークボールテクスチャを作成し、密度と透明度を調整可能にしている。αチャネルを利用してグラデーションマップが作られ、Houdiniの中にあるブラックボディというランプタイプのテクスチャを用いてコントロールされている。

1-2:ドラゴンブレス

アンドレアス氏は実際のワークフローについて、アンドレアス氏が個人制作し、リアルタイムエフェクトコンペティションでアワードを受賞した作品『DRAGON’S BREATH』を用いて説明した。使用ツールはHoudiniとUE4で、サンプルモデルの豚とブルーマンが使用されている。古城風のステージ上を逃げるブルーマンを、豚が炎を吹き出しながら追いかけていくというものだ。スモークと炎はHoudiniのPyroシミュレーションをベースとしており、ディストーションはPOP VOPのディスプレイメントマップをベイクして使用している。

アンドレアス氏は「高度なことをやるのではなく、簡単なものをたくさん積み重ねて、最終結果を出している」と語り、『バトルフィールド1』のエフェクトも同じ考え方で作られていると説明した。複雑なやり方を使うことで、時にはすばらしい効果が実現できるかもしれないが、簡単な設定を積み重ねるほうが、何度もイテレーションを重ねられて、結果的にクオリティも上昇することが多いというわけだ。アンドレアス氏はこの姿勢を「KISS(KEEP IT SIMPLE, STUPID=シンプルにしておけ! この間抜け)」という、IT業界でよく用いられる略語を引用する形で説明した。

炎とスモーク

はじめにHoudiniのPyroで煙の柱を作成する。煙の柱がたなびくように、シミュレーションを64フレームで設定。その後、タイムシフトを用いて発生時の動きを取り除き、ループ再生することで、煙がずっとたなびくようにしている。スプライトとして映えるようにノイジーフィジカルボリュームを3Dマスクとして活用し、煙の上下を削除。その後メッシュを作成してボリュームと同程度の大きさに調整し、それをVDBないし通常のボリュームとして、煙の柱と乗算した。さらに密度を編集できるようにしてシェーディングを調整し、αチャネルを炎のマスクとしてエンジン内で使用できるようにする。

マテリアル

ソフトエロードをアルファチャネルとあわせて使用し、スムースステップとあわせてマスクを作成。それをEmissiveにアサインして完成とした。実際にシミュレーションして、炎の効果をレンダリングし、それをテクスチャとしてまとめる方法もあるが、時間の都合上でこちらのやり方を採用したという。

ディストーション

ディストーションスプライトはノイズを元にしたノーマルマップで、これとスフィアマスクを数学的にブレンドして使用された。ディストーションのノーマルマップを作成するために、まず高解像度のグリッドを用意して、そこにポイントボップを落とし、その中にタービュラントノイズを追加して、ポイントを法線に沿って上下に動かせるようにしている。次に泡状のアリゲーターノイズを作成し、これをノーマルマップにベイクしてPhotoshopでタイル化した。一度設定したら、あとは設定を変更して、再利用可能なものにしている。

火の粉

火の粉はベクターフィールドを使って動かしている。はじめに箱を作ってポイントをスキャッターし、すべてのポイントに法線情報を追加して、アトリビュートポップを用いてオフセットする。火の粉のカールするような動きは、3Dベルリンノイズを使って、ポイントポジションに対して法線情報を設定している。これをボリュームベロシティに与えて、エンジンが読める形式でエクスポートしている。アトリビュートポップの中でノイズの設定を変えることで、さまざまなタイプの効果を得ることができる。

最終調整

最後に前景の炎や火の粉、さまざまな煙、炎によるゆらぎなどの効果を組み合わせて最終調整が行われている。前景の写真はストックフォトをいくつかのスプライトにして、それらを組み合わせて再生している。

1-3:雲

また、アンドレアス氏は『バトルフィールド1』の空中戦ステージで用いられた雲の作り方についても解説した。本ステージにおける雲は単なるエフェクトに留まらず、視界を遮るなどして、実質的なレベルデザインの役割を担っている。そのため制作においては、まずHoudiniでスポーンメッシュを使用してクラウドを作成し、それをメッシュに変換してゲームエンジンに出力するやり方がとられた。メッシュ上にはパーティクルやスプライトを配置して雲の柔らかさを表現。テクスチャやライティングを正しく見せるために、さまざまな調整も行われている。

Houdini上で制作された雲のスポーンメッシュ。マウス操作で一部分を修正するなどして、レベルデザインができる。完成したデータはメッシュに変換されてゲームエンジンに出力される。

2.高品質なPBR対応エフェクト

続いてトピックはPBR(物理ベースドレンダリング)対応エフェクトに移った。前述したとおり、ゲームでは処理負荷を軽減させる狙いもあり、現世代でも連番ファイルを用いた、ビルボードによるエフェクト表現が主流だ。しかし、今日のゲームエンジンはほとんどがPBRに対応していることもあり、VFXアーティストもこのトレンドにあわせていく必要があるという。具体的にはビルボードではなく、メッシュを用いてエフェクトを作成するワークフローが求められるというわけだ。特にVRコンテンツでエフェクトを正しく発生させるには、平面情報のみのビルボードではなく、奥行き情報をもったメッシュを使用することが不可欠になる。

もっとも個々のエフェクトでメッシュを用いると処理負荷が増大するため、『バトルフィールド1』でも使用は限定的なものに留まっている。中でも象徴的なものが「泥と血」のエフェクトだ。アンドレアス氏は処理負荷もさることながら、「スタティックメッシュを使用したため、エフェクトが地面上で発生する必要があった」ことをあげた。その上で『バトルフィールド1』では実装されなかったが、今後はバーテックスアニメーションを用いたエフェクト表現が主流になるとして、HoudiniとUE4を活用したワークフローについて紹介した。

基本的な考え方は、スプラッシュシミュレーションなどを使用して、しぶきのアニメーションを数種類作成し、それを1つのテクスチャにまとめて、バーテックスシェーダー経由で再生できるようにするというものだ。ゲームエンジン側では再生したい場所を選択し、テクスチャアトラスの一部から抜き出すような形で再生する。これにより、非常に綺麗なボリューム型のエフェクトが作れるという。アンドレアス氏は「大きく広がるようなしぶきの表現をするには、スプライトだけでは実現不可能だ」として、このエフェクトを用いたインディゲームの開発支援も行っているとあかした。

アンドレアス氏が開発に係わっているインディゲームの画面。バーテックスシェーダーを活用した、立体的なエフェクトを盛り込んでいる。
最初にFlip SorceをHoudiniで作成し、DOPの中でシミュレーションする。重力をゼロにして水が跳ねる様子を均質化し、表面張力を利用して紐が伸びる感じを表現。完成したシミュレーションをメッシュ化する。最後にパラメータを調整して数種類のバリエーションを作り、順番に再生できるようにする。
Vertex Animation Texture Bakerでテクスチャを作成。左側がRGBで右側がアルファチャネルとなる
UE4側でパーティクルのベース部分やクリップをランダムに選択し、任意の地点からクリップが再生できるようにする。これにより、パーティクルシステム・エミッター・テクスチャーが共通でも、さまざまなバリエーションが作れるようになる。
10個のパーティクルを使って作成したデモ。血しぶきであれば、よりまっすぐ飛び散るようにするなど、状況に応じてエフェクトをチューニングしていく。

3.イテレーションを早めるためのツール作成

3-1:ラピッドプロトタイピング

煙・炎・雲・水しぶき……。これまで説明されてきたエフェクトの制作で共通して見られるのが「何か1つ手短に作って、イテレーションを重ねながら精度を上げていく」姿勢だ。アンドレアス氏は「ゲームエンジンに実装するまでの手順が早ければ早いほど結果がよくなる」と指摘する。そのためには常日頃から、ちょっとしたアイディアを試すための簡単な環境が求められる。そこでアンドレアス氏が推薦したのがHoudiniだ。実際、『バトルフィールド1』では飛行船の船内で風にたなびく布の表現をMaya上で行ったが、Houdiniを使えばより簡単に実装できた可能性があるという。

攻撃を受けて破壊されつつある飛行船の船内。外気によって手すりに張られた布が細かくはためいている。『バトルフィールド1』では、これをアニメーションつきのノーマルマップを用いることで表現している。高解像度のグリッドを用意して、その法線をベクトルとして使用し、布のテクスチャに使用するというものだ。当時はHoudiniに精通していなかったため、作業はMaya上で行われた。しかしHoudiniを使えば、同じ作業がより簡単にできたという。

3-2:スクリプトからデジタルアセットへ

このようにツールはコンテンツ全体の生産性に大きな影響を及ぼす。特にエフェクトのように、短時間で大量のデータ作成が必要とされる分野ではなおさらだ。もっとも、『バトルフィールド1』の制作ではワークフローが過渡期だったため、大量のスクリプトを作成する必要があり、無駄が多かったという。レベルデザイナーが地形のメッシュを変更する度に、炎上している部分をいちいち修正する必要があったのだ。しかし、今では同じフローをUE4上でデジタルアセット化することで、劇的に作業効率が改善したという。

あちこちで炎がくすぶる戦場跡。地面が赤く光り、激しい戦闘が行われたことを予感させる。地形にあわせてメッシュをかぶせ、ポリゴン面を選択して法線方向にスケールすることで、擬似的に燃えているような表現を実現している。
『バトルフィールド1』では、これをスクリプトベースのワークフローで行っていた。そのため「Maya上でアセットを開く」→「火をつけたい面を選択する」→「スクリプトの選択箇所を複製し、法線方向にスケールして頂点を追加」→「Mayaからメッシュを出力してゲームエンジンにインポート」→「オブジェクトからプレハブを設定して火をつける」→「マテリアルをグローメッシュ部分に追加」→「レベルに配置する」という複雑な工程が必要になる。しかも、ここまでやってもレベルデザイナーによって元の地形に修正が加えられると、最初からやり直しになる。
スクリプトをデジタルアセット化することで、「アセットをレベルに配置する」→「アセットに対してアサインしたいオブジェクトを追加する」→「アセットにマテリアルを追加する」だけで同じ作業が実現できる。地形が変化しても、更新ボタンをクリックするだけで自動体に追随してくれる。

続いてアンドレアス氏はHoudini上でデジタルアセットを作成し、UE4にエクスポートするまでの一連の手順について解説した。

表面が燃えているような効果を出すために、ベースとなるメッシュでポイントを選択し、グループノードと、それに対して入力となる形状を指定する(ここではスフィアを指定)。これでスケールを変えると選択も自動的に変更される。
Houdini上でUIとパラメータを追加する。これにより、選択の中にない部分をデリートすると、半径を選択していない部分が自動的に消えるようになる。
コンバートノードを使い、エッジをポイントグループに変えて、黒色を追加する。Attribute Transferを一つ落として、カラーをエッジから内側にブレンドさせていけば、徐々に消えていく効果が綺麗に映えるようになる。完成したらネットワークをサブネットにまとめる。
UE4側にHoudiniのプラグインがインストールされていれば、エクスプローラーでドラッグ&ドロップするだけで、アセットをUE4のシーンデータ上に配置できる。地形のメッシュが変更されても、グロースリーブが自動的に更新されて、地形にピッタリとはりついてくれる。さまざまなパラメータを設定することで、岩の内側が赤くて外側が自然に暗くなるなど、さまざまなコントロールが可能になる。

3-3:IMPORTER(替え玉)ツール

続いてアンドレアス氏は遠方の兵士たちを、全体の処理負荷をおさえたまま、エフェクト的な発想で大量に表示するためのツール「INPORTER(替え玉)」について解説した。これは3DCGで作成したアニメーションつきのキャラクターを360度レンダリングし、それをもとに連番ファイルを作成してアニメーションつきのテクスチャとし、ビルボードとして表示するというものだ。カメラの動きに追随してキャラクターの見え方が変わる点がポイントで、データは2DCGでも、遠目には3DCGキャラクターと変わらないように見える。『バトルフィールド1』ではこれをスクリプトで配置していたが、こちらもデジタルアセットに変換されたという。

遠方に小さく表示される兵士たち。これらは2DCGアニメーションとして、ビルボードで表示されている。地形データをロードする際にハイトマップを作成し、それをもとにコリジョンデータを作成。その上でベロシティフィールドなどを用いて兵士を移動させている。
兵士は3DCGデータとして作成され、アニメーションを設定した後で、ウェッジロップを使って8方向からレンダリングする。『バトルフィールド1』ではスクリプトを用いて、Photoshop上でレンダリングされていたが、デジタルアセット化にともない、Houdiniの合成モジュールであるコップの中で作業が完結できるようになった。
完成したアニメーションデータをαチャネルつきのビルボードで配置。カメラ位置によってビルボードの角度だけでなく、キャラクターの向きも自動的に調整される。
完成したデータをレベル上に配置したところ。エフェクトデータと同じ扱いなので、処理負荷を抑えたまま大量に配置できる。遠方でのモブシーンに向くやり方だ。

4.機敏に動けるVFXアーティスト

最後にアンドレアス氏は自らの体験をもとに、AAAプロジェクトで働くことと、フリーランスで働くことの違いや、メリット・デメリットについてまとめた。アンドレアス氏は「AAAには組織が必要だ」として、「組織の歯車になって働くのは気分のいいことではないが、AAAの開発にかかわることでしか得られない醍醐味もある」とコメント。チームメンバーは家族のようなもので、余計なことを考えずに開発に集中でき、すばらしいオフィスや設備も使用できるとする。

これに対してフリーランスは自分が最終決定者で、スケジュールや働く場所も自由に決められる。それだけに自分を律する姿勢が必要で、「自分をいかに売り出していけるか」「フィードバックをいかに適切に受け止められるか」「時間をいかに管理するか」「帳簿や税金といった金銭面の管理をどのように行うか」といった、開発以外の部分にエネルギーをさく必要があるとした。その結果、労働時間はEA DICE時代よりも長くなってしまったという。

特にアンドレアス氏が指摘したのが「クライアントが複数のタイムゾーンに別れている場合の時間管理」についてだ。作業の待ち時間も請求して良いのか? 並行して複数の作業を受注しても良いのか? その場合の適切な管理方法とは? といったことだ。これらには明確な答が存在せず、自分にあったやり方を見つけていくしかない。でなければ燃え尽き症候群に襲われることになる。実際にアンドレアス氏も2016年に、そうした時期があったという。

スウェーデンも日本と同じように、あまり自己アピールをしない文化があるという。しかし、フリーランスではある程度のアピールも必要だ。一方でフィードバックについても、すべて自分で受け止める必要がある。「自分自身と仕事とを切り分けて、役に立つ指摘だけ受け止め、あとは聞き流す」姿勢も必要だという。
フリーランスにとって時間管理は非常に重要だ。また英語圏のインディゲーム開発シーンではリモートワークが進んでおり、クライアントが複数のタイムゾーンにまたがることも少なくない。その場合、気をつけないと一日中仕事をする羽目になる。

その一方でアンドレアス氏は「フリーランスになると、小規模でおもしろそうなプロジェクトに、自由に参加できるようになる」と語った。特に近年ではVRやARでユニークなプロジェクトがたくさん生まれており、映像業界をはじめとして、さまざまな異業種の参入も続いている。それを可能にしたのがUE4やHoudiniといった高性能なツールの普及だ。その一方で映像業界ではリアルタイムCGに関する知識が乏しく、フリーランスのVFXアーティストにとって良い時代になってきたという。

これまでゲーム業界では内製エフェクトツールの利用が一般的で、社外に持ち出すことが難しかった。しかしHoudiniをはじめとした商業ツールの普及で、フリーランスのVFXアーティストが増加してきている。

こうした現状を踏まえて、アンドレアス氏は「コンテンツ業界はフリーランスのVFXアーティストを求めており、そうした人材が増えれば、企業側ももっとおもしろいことができる」と分析した。そして個人的にもインディゲームの開発支援を行ったり、フォーラムに情報を投稿したりして、次世代の才能育成に貢献していきたいとコメント。「VFXアーティストはみな、同じチームで働いている」として、リアルタイムVFXの将来は明るいと整理した。

より詳細な内容、Houdiniの解説が含まれた本セミナーの完全ムービーはボーンデジタルHoudiniユーザーに対して公開しております。

Houdiniのご購入をご検討いただける場合にはsales@borndigital.co.jpまでご連絡下さい。

Houdiniの導入に関して相談されたい場合にはsupport@borndigital.co.jpまでご連絡下さい。

Created By
Borndigital イベント事務局
Appreciate

Credits:

Cobyright(C) 2017 Born Digital,Inc All rights reserved.

Report Abuse

If you feel that this video content violates the Adobe Terms of Use, you may report this content by filling out this quick form.

To report a Copyright Violation, please follow Section 17 in the Terms of Use.