Halo 4 Spartan Opsは、Halo 4のゲームのストーリー展開を支援する目的で制作された、没入型のアニメシリーズだ。ゲームの主要な登場人物と視聴者自らをつなげることができるように作られており、実際のゲーム体験の延長線上に位置するものとなっている。

このシリーズを実現するにあたり、Axisは、1,200にも及ぶ美しくレンダリングされたCGショットを作り上げた。Axisで、HoudiniはさまざまなライティングやVFX作業におけるプロダクションツールの核として使用されている。HoudiniのMantraレンダラはAxisにとって極めて重要な役割を担っており、Halo 4 Spartan Opsは、驚くほどリアルな表現の実現を目指し、Mantraでレンダリングされた数多くのプロジェクトのひとつに過ぎない。

以下、AxisのCGスーパーバイザであるセルジオ・カイレス氏と、パイプラインスーパーバイザであるニコラス・プリアツィカス氏とのインタビューで、HoudiniとMantraを使用した作品制作について、またHoudiniのクリエイティブなカスタマイズ、Halo 4 Spartan Opsのフェイシャルリギングシステムについて話を聞いた。

セルジオ・カイレス氏、ニコラス・プリアツィカス氏インタビュー

Side Effects: Mantraが御社の全てのプロジェクトで主力レンダラとして使用されているというのは本当ですか?

セルジオ・カイレス: はい、もうずいぶん前からです。今では当社のウェブサイトでMantra以外でレンダリングされたプロジェクトを見つけるのは難しいでしょう。

Side Effects: Halo 4 Spartan Opsは、その非常にリアルな表現からも、膨大なデータ処理を要するプロジェクトであったことは間違いないと思います。大量のデータを扱う際のMantraのパフォーマンスはいかがでしたか?

セルジオ・カイレス: 私たちがMantraを使って難なく扱うことのできているデータ量を処理できるレンダラを、(名の知れたレンダラもいくつか使用しましが)他に知りません。さらにはレイトレーシングまで実行してしまうのですから。Mantraは優れた信頼性と堅牢性を備えており、その性能には厚い信頼を寄せています。

Halo 4 では、宇宙船モデリングの神と呼ばれるアンセル・シャオ氏によって制作された、インフィニティという宇宙船モデルが登場します。彼に「ポリゴン予算は?」とたずねられ、私は「好きなだけどうぞ」といった趣旨の答えを返しました。彼は約2,600万ポリゴンの驚くほど詳細なモデルを構築してくれましたが、Mantraを用いて、これを驚くべきペースで処理することができました。

ニコラス・プリアツィカス: Houdiniの柔軟性は卓越しています、なぜなら、私たちは膨大なアセットを有し、大量のファイル入出力をしていたのですから。Spartan Opsの制作にあたって、Houdini内の独自のアセットシステムを再構築し、可能なかぎりの自動化を図りました。

我々の構築したアセットシステムでは、自動的にHoudiniアセットが生成され、シェーダテンプレートとともにHoudiniのDigital Assetにまとめて格納されます。これらのアセットには、デフォメーションの前後に関わらず、プロシージャルな変更修正を可能にする、ユーザが編集可能なアーティストエリアを装備しました。

アニメーションに使用しているMayaから直接キャッシュデータをロードする、カスタムのレンダリング時の遅延ロードプロシージャルとの統合は、完全にシームレスに行えました。Houdiniは非常にオープンですから、レンダリング時の遅延ロードを用いて、CVEXを使いジオメトリのキャッシュデータを修正することもできました。Houdini12における最新のジオメトリコアの書き換えは、まさに私たちにとって絶妙のタイミングで、おかげで大量のデータを処理することができました。Spartan Ops Episode 1のスパルタンたちが武装するショットでは、細かく作りこまれた武器庫のジャイロベイが非常に複雑なオブジェクトであっただけに、新しいインスタンシングシステムが極めて重要な役割を果たしました。

Side Effects: スパルタンたちの髪の毛の表現も、他のものと同様に、非常にリアルで素晴らしいですね。この、髪の毛の生成プロセスについて聞かせていただけますか?

セルジオ・カイレス: 短い髪は、このシリーズが軍事的なテーマを扱っていることから、クリエイティブな選択でした。長い髪については、以前、Dead Islandの予告編で使用したシステムに手を加えて使っています。これは、Houdiniに搭載されているカールやノイズといった多くの強化機能のほか、何よりも、人間の長い髪を制御するのにはるかに適した新たなガイド法が含まれたフレキシブルな既成システムを広範囲にわたり改造したもので、既存のノードベースのCVEXシェーダを編集するだけで、すべてが行えてしまうのです。

Dead Islandと同じように、今回も、ボリューメトリックシャドウ投影のプロキシを使って髪の毛をライティングしたのですが、髪の毛の形状や密度をうまく表現できたと思います。まず、ボリュームボクセルのサイズにセグメントの長さを合わせて髪の毛のプレビューカーブをリサンプリングし、その後、ボリュームのVEXオペレータ(VOP)やポイントクラウドのVOPを用いて、各ボクセル内のポイント数を数えることにより、髪の毛の形状はもちろん、密度まで、かなり正確に表現することができました。出来上がったボリュームは、密度によって減衰する影を、髪の毛やシーンの他の構成要素に落とします。こうしたボリュームを自動的に生成することができるツールを開発して、Axis Fur UIに完全に統合することで、アーティストのリソースを他のタスクに自由に利用できるようにしました。

髪の毛のシェーディング、よりリアルな表現を実現すること、そしてレンダリング時間も著しく短縮するために、ボリュームを用いました。この方法により、キャラクタの髪の自然な柔らかさや、透過性を表現することができ、光が髪の毛に反射したり透過したりしているので、光の拡散や減衰をある意味模倣しています。

私たちが行った生産性向上の改良の中でも、もっとも優れているもののひとつが、どこからでも、つまりNURBSカーブやポリゴンラインの出力が可能なあらゆるソフトウェアから、毛髪のガイドをインポートできる機能です。この機能は、髪型のスタイリングについてはアウトソースし(私たちの場合はMaxのスペシャリスト)、最終的にあがってくるスタイルがどんなものであっても、プロシージャルに作業を進めることができるという点において、非常に優れています。

Side Effects: レンダリングとライティングのパイプラインについて、もう少しお話いただけますか。

セルジオ・カイレス: 私たちはすべてのデータをHoudini内にアセット化しているので、プロジェクトに関わる全てが、簡単に分配、更新できます。それぞれのアセットにはシェーダアセットが一つ付随しており、これにはサーフェス、ディスプレイスメント、プロパティのシェーディングオペレータが含まれ、これらは“アウトプットシェーダ”ノードにまとめられ、マテリアルスロットにアサインされるようになっています。こうしたアウトプットシェーダは、決められたアセット定義にもとづいて自動的に生成されるので、コンバート方法は既に確立しているので、シェーダアサインメントのワークフローを高速化します。

アウトプットシェーダノードを使う理由の一部は、異なるマテリアル間においてもシェーダを共有することができるからです。これにより、プロダクション上の問題に非常にフレキシブルな対応ができるのです。例えば、モデルはサーフェスシェーダ用とディスプレイスメントでは別々に分割されることもあり、その場合、単一のディスプレイスメントとプロパティSHOPを複数のアウトプットシェーダノードに接続します。別の”マテリアル”サブセット内にUberShaderベースのサーフェスとディスプレイスメントのシェーダを入れてしまうのは、あまりメリットがありません。それで、カスタムシェーダとしてVOPなどの共有は行えますが、作業の99.99%はカスタムのUberShaderを使って行われていることを考えると、そういったケースもそれほど頻繁に起こることではありませんから。

Side Effects: この作品を完成させるために行われた、Mantraのカスタマイズについて詳細を教えていただけますか。

セルジオ・カイレス: Mantraをカスタマイズしたというより、Mantraに送るものほとんどすべてをカスタマイズしたといったほうがよいでしょう。これはHoudiniの優れた点のひとつです。Side Effectsは大変な努力を積み重ねて、非常にフレキシブルでよく考えられたソフトウェアをデザインしていますから、誰もがそれぞれのニーズに合わせて、容易にカスタマイズを行うことができるのです。

レンダリングの最適化を図るために行ったことで、主だった点はいくつかあります。私たちは独自の放射照度キャッシング法を用いており、Houdiniのフォトンマッピングと同じように間接光のルックアップが行えますが、フォトンの代わりに均一に分布したポイントクラウドを使用しています。

ポイントクラウドの生成は非常に骨の折れる作業でしたが、Mantraがサブサーフェススキャタリングシェーダを作成するのと同様のメカニズムとフックを用いて、ベイクした放射照度を元に均一に分布したポイントクラウドを生成する、方法を見出しました。開いて編集や再利用ができないHoudiniのブラックボックス機能は、簡単に見つけ出せるものではないのです!

さらに私たちは、非常に有益なちょっとしたサーフェスオペレータ(SOP)を作成し、カメラの視錐台から外れたポリゴンにプロパティノードを割り当て、シーンの見えない部分のクオリティを積極的に下げることができるようにしました。

隙間のほこりや、ものの先端から滴り落ちる液体、塗装の剥げや引っ掻き傷のような細部の傷みなどの表現も行える、非常に巧妙でプロシージャルなシェーダを作成し、UNSCの宇宙船インフィニティからスパルタンの装甲にいたるまで、ほぼ全てにおいて非常に重宝しました。

ニコラス・プリアツィカス: Mantraに対して行った大きなカスタマイズ、カスタムの遅延ロードプロシージャルの導入でした。これにより非常に有用な機能を数多く使えるようになり、主に、別のジオメトリキャッシングを行う際のボトルネックを取り除くことができるようになりました。

私たちが行った自動Houdini Digital Assetシステムの設定は、Houdiniにおける現在のAlembicワークフローに類似していますが、それ以上に高い性能を発揮するものです。これをさらに進化させ、MayaのアニメーションデータをMantraで直接レンダリングしたいと考えていました。これには、遅延ロードそのものでデフォメーション後のソースジオメトリをある程度編集できなければならないなど、いくつかの条件を満たさなければなりません。

HoudiniのGEOフォーマット内に頂点の順番をアトリビュートとして埋め込める機能を使えば、頂点の順番を変更したり、面などを削除したりしても、遅延ロード時に、ジオメトリに正確なデフォメーションを適用することができ、他のアプリケーションで見られるようなメッシュの乱れも生じません。

また、我々が作業しなければならなかったスケールや距離感では、浮動小数点の演算において精度誤差の問題が発生していることに気が付き、オフセットシステムを構築することによって解決を図りました。つまり、カメラ自身を原点とした座標系に、あらゆるデータを移動させたのです。これは、ワールド座標のキャッシュが利用されているため、コンポーネント座標で実行しなければならず、この場合もカスタムの遅延ロードを使って、新たなカメラ位置を原点とした、シーンの他の構成要素と同一のオフセットデータを読み込みました。

Side Effects: Dead Island予告編の制作時と同様のフェイシャルリギング技術を実装されたということですが、以前と全く同じシステムを使われたのでしょうか、あるいは、いくらか改良が加えられたのでしょうか?

ニコラス・プリアツィカス: 生き生きとした顔の動きの表現や全体的な形状について、いくらか改良を加えました。

全体的なフェイシャルパイプラインは、ベースメッシュのデータスキャンから、ブレンド形状の抽出の4次元データスキャンまで正直言って非常にうまく機能しました。ここでも、Houdiniを使って、ジョイントベースの独自のフェイスリグを動かす際に使用するブレンド形状を抽出しました。私たちのパイプラインは、当社のアセットとして4次元でキャプチャされた頭部のスキャンデータと、343 Industriesの所有するキャラクタの既存アセットデータの両方から成るもので、トポロジが異なることから、異なる処理が必要でした。Houdiniにより、これらを当社の標準トポロジ構造に合わせてリターゲットすると同時に、ブレンド形状の抽出も行えました。

これに関連して、4次元スキャンした元データからのブレンド形状ごとに抽出されたディスプレイスメントマップのクオリティを高めようと試みましたが、解像度が足りず、ディスプレイスメントマップ間のアライメントにも内在的な問題があったため、満足のいく結果を得ることはできませんでした。

もしうまくいっていれば、設定を自動化し、スケールの大きな作品のクオリティを総合的に向上させることが可能であっただけに、非常に残念です。依存度の高いストレス検知アセットや、すべてのヒーローキャラクタに用いられたリンクルマップ法に戻り、その結果、有機的なスキンエフェクトのシェーディング効果の増大に繋がりました。

Side Effects: Axisでは、Houdiniが、ボリューメトリックや煙、火、爆発というような、通常のVFX作業でも使われていますね。こうしたエフェクトとショットの統合性については、どのような感想をお持ちですか?

セルジオ・カイレス: Houdiniを利用すれば、VFXとレンダリングの作業の全てが、同一のパッケージ内で行えますから、そういったVFXの要素とショットの統合は非常に簡単に行えます。例えば、ボリュームを作業対象とする場合、Mantraであっという間にレンダリングできてしまうので、シーンの他の要素で使用したものと全く同じライトリグを使って、完全にレンダリングしてしまうことが可能です。言い換えれば、Houdiniは最初からすべてが統合されているのですから、統合の必要がないということです。