Unity を検索

取り上げているトピック
シェア

Unity は 3 月、NVIDIA RTX テクノロジーに対応したリアルタイムレイトレーシングのサポートを発表しました。リアルタイムのレイトレーシングによって、Unity の HD レンダーパイプライン(HDRP)でフォトリアリスティックなライティング品質の実現が可能となり、Unity のビジュアルの新しい可能性が拓かれます。Unity 向け NVIDIA RTX は、Unity 2019.3 でプレビュー版がリリースされる予定です。

この新しいライティング技術を実際にお見せするため、私達は、ウェアハウスで撮影した本物の BMW 8 シリーズ クーペを、Unity でレンダーした CG の BMW で再現することに挑戦しました。最終的に、インタラクティブなデモと事前レンダーされた 4K 動画の両方を組み込んだ、実写の自動車と CG の自動車とを切り替えながら見せるプロジェクトが完成しました。本物と CG を見分けられるかどうか、私達は視聴者に挑戦しました。完成した動画には、CG の BMW のショットが 11 種類盛り込まれています。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

広告業界も自動車業界も、急速なサイクルでトレンドを転換させながら進化しています。広告作成のプロセスにおいてリアルタイムエンジンの汎用性の高さをどのように活用できるかご覧いただくために、BMWをフィーチャーしたサンプルコマーシャルを制作しました。

Game Developers Conference(GDC)および NVIDIA の GPU Technology Conference(GTC)にてこのデモ動画を披露し、公式発表を行いました。

本記事では、このプロジェクトの制作プロセスをご紹介します。

プリプロダクション

撮影の準備と磨き上げられたプロフェッショナルな広告の制作にはプレビジュアライゼーションが不可欠でした。私達は、撮影監督である Christoph Iwanow 氏と協力し、Unity での直接作業によってフル CG バージョンの映像を制作しました。第一テイクには単純なライティングとシェーダーを使用し、ペーシングやカメラ配置、ショットのフレーミング、被写界深度、焦点領域を確定させることに重点を置きました。

Unity の Physical Camera(物理カメラ)機能を用いたことで、現実世界における撮影現場のカメラとレンズを、ごく精細なレベル(センサーサイズ、ISO、シャッタースピード、レンズのディストーションなど)に至るまで精密に一致させて使用することができました。これにより、本物のカメラで撮影した見た目と印象を全面的に 1:1 で一致させて再現した CG が実現されました。

Cinemachine によって説得力のあるカメラムーブメントが簡単に作成できました。

プレビジュアライゼーションの段階はライティングの実験ステージでもありました。使用が予定されていた実際のライティング装置を、Unity でもあらゆる詳細(ライトの形状、寸法、温度、強度)にわたって再現しました。私達は、天井から吊り下げられたチューブライトがどのように見えるか即座に確認して、その配置・強度・色の微調整を行うことができ、車体からの完璧な反射の生成に成功しました。これが可能でなければ、撮影現場の貴重な時間がこのプロセスに数時間は費やされていたでしょう。

Christoph は、現実世界のライティングとカメラのセットアップをデジタル的に再現することでより多くの組み合わせを試し、実現したいビジュアルを撮影に先駆けて明確化できました。これにより私達は撮影時間をより効率的に使うことができました。

ポストプロダクション

撮影の翌日には、すぐにショットの調整作業を開始できました。プレビジュアライゼーションは Unity で行われたので、アセットをエクスポートする必要はありませんでした。撮影現場で記録したライティングの参考画像を使用するとともに、実際の車体も参照しながら、アセットが現実世界のように反応するようにルックデベロップメントを行いました。進化した技術によりエリアライトにイメージテクスチャーを使用できるようになったので、実際の光源の写真をテクスチャーとして使用して、よりリアリスティックなライティングと反射を実現できました 。

Unity の性能のお陰で、初日から 4K 超高解像度でのレンダーが可能でした。これはオフラインレンダリングに比べて明らかに有利です。オフラインレンダリングの場合、開発途中段階における提出動画のレンダリングはコストと時間の節約のために低解像度で行われます。最初のイテレーションから 4K でレンダーすることにより、ルックデベロップメントとライティングの細かな調整を行うことができました。短期間の中でレンダリングのイテレーションを通常より遥かに多数行ったことで、小規模なアートチームでも強力なビジュアルを実現することができました。また、最終的なレンダリング結果が予測しやすいことも利点のひとつでした。

プレートをあとから合成したショットに関しては、Unity の外で映像をトラッキングし、その後でカメラおよびトラックのデータを FBX ファイルとして Unity にインポートしました。

その他の Unity で直接作成したカメラに関しては、説得力のあるリアリスティックなカメラムーブメントを作り出すために Cinemachine の以下の 2 つの機能が不可欠でした。

Cinemachine Storyboard 拡張機能:Cinemachine の数ある機能の中でも、Storyboard 拡張機能を使用すると、カメラアングルを揃えることができます。これは、ショットを完全に CG で作り直すに当たって必要な特定のカメラムーブメントを簡単に再現するために欠かすことのできないツールでした。撮影現場のカメラの映像から特定の 1 フレームを取り、CG カメラを揃えるためのガイドになるオーバーレイとして使用しました。これは一部のショットの最初・中間・最後のフレームで行いました。

Cinemachine noise: カメラムーブメントにプロシージャルノイズを適用することで、現実のような自然で微小な動きをカメラのモーションに追加し、CG カメラの不自然な完璧さを簡単に取り除くことができました。露骨に反復的にすることなく面白味のある動きを作ることに成功しました。

私達は元々、本物の BMW と異なる色で塗装された CG 版 BMW を作成する予定でした。しかし、プロジェクトが進行するに伴い、両方とも同じ色にしてその間でシームレスに切り替える方がより強いインパクトを与えられると考えを改めました。車体の色を変更する決断は開発後期でも Unity で有機的に行えました。これは、ライティングおよびルックデベロップメントのアーティスト達が同時進行的に更新を行うことができたからです。もし同じようなプロジェクトにオフラインレンダラーを使用したなら「タイヤを右方向に 20 度回転させてください」だとか「主光線を 1 ストップ下げてください」などの伝言が付いた編集用下見フィルムが用いられていたことでしょう。私達はこうした些細な技術的変更に丸一日掛けることなく、変更作業をインタラクティブに進められたので、クリエイティブな判断を下すことにエネルギーを集中させることができました。

プレートをあとから合成した 2 つのショットに関しては、シェーダーグラフを使用して、元々の HD 解像度の映像からスクリーン空間投影マテリアルを作成しました。プレートから車体へのリアリスティックな反射を作り出すために、車体の周囲の床や壁にこのシェーダーを使用しました。追加的なライティングを補足し、Unity からショットをレンダーし、外部の合成ソフトウェアを使って、フル解像度のプレートを用いた最終的な床の合成を行いました。

リアルタイムのレイトレーシング

一般的にゲーム制作で反射のシミュレートに使用される技術は、様々な場所に設定された一式のリフレクションプローブとスクリーン空間レイトレーシングの組み合わせに依存するものです。これは通常、様々な光漏れを発生させ、サーフェスプロパティの近似が大まかになります。リアルタイムのレイトレーシングによって、アーティストによる一切の設定なしに画面外のものを正常に反映することが可能になりました。しかし、そのような反射エフェクトにはレンダリングエンジンの設定準備が必要です。従来のゲーム制作では、カメラの錐台の外にあるものは全て無効にされる傾向にありましたが、元々画面内に表示されないソースによって照らされたり影を落とされたりするオブジェクトを反映させることが可能になりました。メタルオブジェクトの正確なシミュレーションに加え、効果的なレイトレーシングには複数の反射(跳ね返り)が必要ですが、パフォーマンスの制約があるのでこれは困難です。私達は反射を 1 つのみ扱うことにしました。2 回目以降の反射の結果については金属の物体色と間接拡散光の値を使って補いました。

従来のオフラインレンダラーは大きなテクスチャ―付きエリアライトのレンダリングが得意です。しかし、オフラインレンダラーの使用はコストが高く、ノイズを大量に発生させます(レイを多く使うほどノイズが少なくなりますがフレーム毎のレンダリングコストが増加します)。品質を高く保ちながらリアルタイムでのフレームレートを実現するため、Unity Labs の研究者達が Lucasfilm および NVIDIA と協力してアルゴリズムを開発しました(彼らの執筆した論文『Combining Analytic Direct Illumination and Stochastic Shadows』(英語)をご参照ください) 。このアプローチを採用すれば、結果のビジュアルに影響を与えない形で、可視性(エリアシャドウ)を直接ライティングの評価から切り離すことができます。私達は、この方法を用い、かつこれら 2 つのコンポーネントに個別にノイズ除去技術を適用することで、大きなテクスチャー付きエリアライト用に発射するレイをごく少数(本リアルタイムデモでは 4 つのみ)に抑え、目標である 30 FPS を達成することができました。

間接拡散や拡散ライトの反射は、オブジェクトを周囲に溶け込ませ、ライティング状態の変化に対応することで、シーンのライティングを向上させます。ゲーム制作の通常のワークフローは骨の折れるもので、シーン内へのライトプローブのセットアップやライトマップの使用が必要です。この動画でのレイトレーシングでは、間接拡散光の反射を 1 回だけ考慮して、しらみつぶし方式に計算していく方法を採用しました。この方法では、幾つかのレイが発射されることで希望通りのライトブリーディング効果が実現されています。

このようなアプローチを用いれば、アーティストは何もセットアップする必要がなくなるので大きな自由を得られます。しかし、このコストは非常に高くなります。

リアルタイムバージョンには、よりコストの低いアプローチを選択しました。従来であれば事前にベイクされた一式のライトプローブとライトマップを使用するところを、レイトレーシングによって、フレーム毎に一式のライトプローブを動的に再ベイクすることができました。

レイトレーシングされた反射がスクリーン空間のテクニックと置き換え可能なのと同様に、リアルタイムのレイトレーシングは、一般的に使用されるスクリーン空間のテクニックで生成されたものに匹敵するアンビエントオクルージョンを生成できます。リソース消費が少ない上述の間接拡散方式をレイトレーシングされたアンビエントオクルージョンで強化することで、このテクニックで生み出される光漏れをより効果的に処理することができます。私達はパフォーマンスの観点から、透明オブジェクトに対応しないことにしました(対応した場合、その中を透過するライトの処理が必要になる)。

リアルタイムのレイトレーシングは、リアルタイムでフォトリアリスティックなヘッドライトのレンダリングを実現する唯一のツールです。ヘッドライトの形状、およびその多数のレンズとリフレクターの光学は、シミュレートが困難な複雑なライトのインタラクションを発生させます。反射性および透過性のある複数の連続した滑らかなレイのインタラクションを追加しました。これにより、現実世界で光線を見た時にそれが移動するようになります。精密なディテールは、テクスチャーの詳細(レイの方向に影響を与える)によって制御可能です。

新しい現実

自分自身を創り出しては、また創り直しなさい、
同じ泥沼の中で泳ぐことはせず。
自分自身を創り出しては、また創り直し、
そして
凡庸に支配されることなかれ。

― チャールズ・ブコウスキ

Unity のリアルタイムレイトレーシングは新しい現実です。私達は、従来の制作パイプラインをゼロから再構築しようとしている訳ではなく、このようなプロジェクトにつきもののペインポイントのいくつかを取り除こうとしています。ショットの変更をインタラクティブに行い、クリエイティブディレクターや撮影監督から即座にフィードバックを得られることは非常に大きな利点となります。この映像を Unity で制作することを決断したお陰で、今回の成果を他のプロジェクトにも容易に導入し、多様でかつ一貫性のある BMW キャンペーンを複数の媒体にわたって制作できる可能性も生まれました。リアルタイムのレイトレーシングによって、従来の自動車広告制作パイプラインを、よりクリエイティブで、共同作業が行いやすく、かつコストの低い形で機能するものに改良することも可能となりました。

---

Unity の NVIDIA RTX 対応は、実験的リリースで今すぐお試しいただけます。(注)これはプロトタイプ版であり、最終的な DXR の実装は本バージョンとは異なるものになることをご了承ください。

2019年4月11日 カテゴリ: 製造業 | 9 分 で読めます
取り上げているトピック