Search Unity

ハイエンドビジュアライゼーション用に Unity の HD レンダーパイプラインをセットアップする方法

, 1月 9, 2020

2019 年 9 月の Unite Copenhagen に先立ち、Unity は Lexus とその代理店 Team One と共同でリアルタイムカーコンフィギュレーターをお披露目し、HR レンダーパイプライン(HDRP)を使用して現実世界のカメラのように制御できるフォトグラフィックツールとしての Unity のプロモーションを行いました。デモには、高精細度のモデルで表現された多様なトリムパターンの Lexus 車、3D 環境内に忠実に再現されたコペンハーゲンのアマリエンボー宮殿、3 種類のライティング条件が盛り込まれていました。

英国の Unity の Spotlight チームは、環境とライティングの品質を担当し、自動車を最高のクオリティで表現できるようにライティングの設定を行いました。

この記事では、自動車が題材の今回のシナリオに沿って HDRP をどのようにセットアップしたのか、また、物理的に正しいライティングとカメラのセットアップが、Unity で開発されたハイエンドビジュアライゼーションですばらしいレベルの現実感のあるビジュアルを表現するのにどれほど役立つかについて、詳しく説明します。

ソフトウェアとデータ

デモでは、Unity 2019.3 の初期ビルドを HDRP 7.1.x と組み合わせて使用しました。自動車のマテリアル、特に金属フレーク塗料のリアルなカーペイントシェーダーについては、Unity の充実した Measured Materials Library のお世話になりました。環境には標準の HDRP Lit シェーダーを使用しています。それからこれは重要なことですが、今回のデモでは HDRP のレイトレーシング機能を使用していません。当時この機能はまだ初期プレビュー段階だったためです。

非常に詳細なテッセレーション済みの車体モデルをメーカーから提供していただきました。アウトソーシングスタジオの elite3d は、Maya(主にアセットのエクスポート用)、3ds Max(ハードサーフェスモデリング)、Zbrush(Domeble から提供されたスキャンデータに基づくスカルプティング)に加えて、Substance ツール(マテリアルの作成とペイント)や Marmoset Toolbag(ベイキング)などのソフトウェアを使用して、アマリエンボー宮殿全体の精緻なモデルを作成し、テクスチャリングを行いました。最後に、Unity の Spotlight チームは、環境用のライティングを作成し、すべてのマテリアルを何百もの自動車のパーツに適用して、最高水準のビジュアルに仕上げました。

他の多くの自動車コンフィギュレーターとは異なり、環境に静的なドームやバックプレートは使用していません。代わりに、中庭全体を 3D でモデル化しています。そのおかげで自動車は必要に応じてどこにでも配置でき、ライティングや時刻を自由に変更できます。実際、静的な HDRI、ドーム、バックプレートの大きな欠点の 1 つが、本来のキャプチャー方法が原因でそのライティングと視点が固定されることです。そのため柔軟性がなく、元のキャプチャーポイントからの被写体およびカメラの移動や、ライティングに非常に厳しい制限がかかります。以下のアニメーションを見ればわかるように、完全にモデル化された環境は非常に柔軟性があります。

HDRP の設定

まだ HDRP のことがよくわからないという方は、まず公式ドキュメントを参照することから始めてください。HDRP のエフェクトを制御する主な方法である、ボリュームフレークワークに特に注目してください。

また、「Window」>「Rendering Pipeline」の順に移動して HDRP ウィザードを確認することも強くお勧めします。これにより、HDRP プロジェクトでの設定ミスを自動的に修正できるためです。特に、色空間の設定ミスは画質を大幅に低下させる可能性があるので、リニアではなくガンマ色空間を使用する場合にお勧めの機能です。

また、この記事で詳しく解説している設定を使用すると、ハイエンド PC 以外のプラットフォームでは、要求の厳しいシーンを処理する際に、フレームレートが低下する可能性が高くなります。解像度 1440p または 4K、フレームあたり 100 ミリ秒のレベルで Unity での作業を快適に行うためには、GeForce GTX 1080 TI 以上のグラフィックカードを使用することをお勧めします。

レンダリング設定

まずは「Edit」>「Project Settings」>「Quality」にある HDRP の品質設定で、以下の設定を有効にします。

  1. 「R16G16B16A16」:精度を fp16 にすると、広大なスクリーンスペース距離に広がるライトとフォグの勾配に対する不要なバンディングを減らして、パフォーマンスコスト(メモリ消費量や帯域幅の増加)を低減できます。さらにバンディングを最小限に抑えるため、カメラのインスペクターで 8 ビットディザリングを有効にすることをお勧めします。
  2. 「Forward Only」:一般的に、フォワードレンダリングの方が、ディファードレンダリングよりも品質が高くなります。また、この記事の執筆時点では、きめ細かなシャドウフィルタリング手法を簡単に実現できる便利な方法を提供できる唯一のモードになります。この手法については、この記事で後ほど取り上げます。
  3. 「MSAA 2/4/8x」(乗数は任意):プロジェクトでマルチサンプリングアンチエイリアシング(MSAA)がサポートされるようになります。乗数が大きくなるほど画像は滑らかになりますが、同時にコストも高くなります。

MSAA は、シーンをレンダリングできる各ゲームオブジェクト(カメラやリフレクションプローブなど)のフレーム設定でも、手動で有効にする必要があります。「Edit」>「Project Settings」>「HDRP Default Settings」の「Default Frame Settings」で、カメラと各種リフレクション全体を対象にして「MSAA within Forward」ボックスにチェックを入れます。

リフレクション用の MSAA は、クロムやカーペイントのような反射性の高いマテリアルを処理する際に特に重要になります。エイリアシングが少しでも見えてしまうと、レンダリングされたフレームのフォトリアリズムが損なわれてしまいます。また、カメラとリフレクションプローブは、それぞれのインスペクターで独自のカスタムフレーム設定を使用できます。たとえば、MSAA の使用をベイク済みリフレクションプローブでは有効にして、リアルタイムリフレクションプローブでは無効にすることでパフォーマンスへの影響を緩和したり、カメラ用により高速なタイプのアンチエイリアシングを使用したりできます。

Temporal Anti-aliasing(TAA)

TAA は、ライティング(スペキュラー)/テクスチャー/透明度エイリアシングなど、ジオメトリエイリアシングとは関連のないジャギーを MSAA で削除できないケースへの対応で特に効果を発揮します。MSAA 4x/8x よりも高品質で比較的コストがかからない TAA は、一部のケースではカメラ用の唯一のアンチエイリアシング手段となる可能性があります。とはいえ、前のフレームとモーションベクトルへの依存という、その時間に依存する性質により、動きの速いカメラや被写体を扱う際に TAA が原因で不要なゴースト化が生じ、画像が若干ぼやける可能性があります。幸い、HDRP のカメラでは TAA のシャープネスを制御できます。

Scene ビューでも TAA を適用するには、「Edit」>「Preferences」>「HD Render Pipeline」>「Scene View Anti-Aliasing」で機能を切り替えて、Scene ビューのツールバーで「Animated Materials」を有効にします。

テクスチャーフィルタリング

その他に検討すべき非常に重要なパラメーターが、テクスチャーのフィルタリングです。考えられる最適なフィルタリングである異方性フィルタリングは、「Project Settings」>「Quality」>「Anisotropic Textures」からグローバルに適用できます。これにより、サーフェスは、一般に地面や道路のマテリアルなどビュー方向とほぼ平行になり、中程度以上のシャープさが保たれます。最新のハイエンド GPU であれば、パフォーマンスにほとんど影響ありません。

ライティング設定

HDRP の品質設定の「Lighting」セクションでは、ライティングのレンダリング品質を最大限に引き上げたり、ワークフローを円滑化したりするために、以下のオプションを有効にすることをお勧めします。

ライトレイヤー

ライトレイヤーを使用すると、シーン内の特定のオブジェクトに作用するライトとリフレクションプローブを制御できます。言い方を変えると、モデルのある部分にライティングとリフレクションを選択的に適用することで、セットアップを劇的に簡略化できます。たとえば、以下の手順に従うことで、ホイールやホイールアーチ下に適切なレベルのリフレクションを取得しつつ、車体本体への不要な影のリフレクションを回避することができます。

  1. 各インナーフェンダーでリフレクションプローブを配置して、その影響量を調整します。
  2. プローブのインスペクターで、これら 4 つのプローブを「Light Layer 1」に割り当てます。
  3. 「Light Layer 1」を、ホイールとインナーフェンダーに作用する可能性のあるレンダリングレイヤーのリストに追加します。

結果:ホイールとインナーフェンダーには正確に暗い色のリフレクションが適用されますが、車体本体は影響を受けないまま、別の外部リフレクションプローブによって適切にライティングされます。

このワークフローは、以下を実現するために、自動車のその他多くのパーツに使用されています。

  • 車内のライトとリフレクションプローブが外側の車体に漏れたり、その逆の現象が発生したりするのを防止する
  • 平面反射プローブをミラーのジオメトリに制限する
  • 本体に影響を及ぼさずにヘッドライトとテールランプのリフレクターおよびランプケーシングにリアリティのあるリフレクションを生成する
  • フロントグリルなど代表的なクロムパーツにリフレクションプローブを割り当てる

複雑な形状に合うようにリフレクションプローブの境界やブレンド距離をいじる必要はなくなります(少なくともその必要は減ります)。唯一欠点があるとすれば、モデルを複数のゲームオブジェクトに分解しなければ、この機能を利用できない点です。

シャドウフィルタリング

フォトリアリズム的な仕上がりにするためのもう 1 つ重要なパラメーターが、シャドウや半影シミュレーションの品質です。ありがたいことに、この分野は HDRP が得意とするところです。HDRP の品質設定で、「Filtering Quality」を「High」にし、ディレクショナルライト、Punctual Light(ポイントおよびスポット)、エリアライトなど、使用する各種ライトの要件に合うように影の解像度の最大値を引き上げます。

リアルタイムグラフィックスでは、影が鮮明な方が高品質だと誤解されがちですが、これは、解像度が高いシャドウマップでは、別途ぼかしが適用されない場合に影が比較的鮮明になることが原因です。しかし現実には、影がそのシャドウキャスターから伸びれば伸びるほど、影のぼやけが強くなります。一般的に、影は大半の人が思っているよりも、かなりソフトなものになります。HDRP は高い忠実度で影のぼやけをシミュレートできます。つまり、影は、元になるオブジェクトから離れると非常にぼやけ、近くでは鮮明なままになります。

下の例で、中央の騎馬像の影が遠くの宮殿のファサードに投影されるときに、リアルにぼやける様子をご覧ください。一方で、自動車から伸びる影はかなり鮮明なままですが、自動車からの距離が長くなるにしたがって徐々にぼやけていきます。

 

フィルタリング品質は「Light」のインスペクターの「Shadow」セクションで制御します。さらに HDRP では、角直径(ディレクショナルライト)や半径(ポイント & スポットライト)を利用して大型の発光シェイプをシミュレートできます。これらのコントロールは影とスペキュラーハイライト両方のソフトさに物理ベースで影響します。発光源が大きくなるほど、影とスペキュラーハイライトがソフトになります。

縞模様(シャドウアクネ)が目につくときは、「Slope-Scale Depth Bias」を大きくしてください。そうすれば、ライトの反対方向を向いているポリゴンに適用されるバイアスが大きくなります。これにより、不要な影が表面の下側に目に見えて「沈み込みます」。ニアクリップ面を奥に移動させてライトの範囲を小さくしてもシャドウイングの精度が向上しますが、これは、必ずしも実用的な解決策とは限りません。

コンタクトシャドウ

コンタクトシャドウは、ディレクショナルシャドウマップで遠くにあるカスケードの解像度不足を解決するときに、特に効果を発揮します。ディレクショナルライトと Punctual Light の両方で、カメラからの距離にかかわらず、ミクロな幾何学的ディテールのセルフシャドウイングの品質を劇的に向上させることができます。宮殿のファサードについては、装飾品、台座、守衛小屋、窓などにリアルな影を落とすために、すっかりこの機能のお世話になりました。

とはいえ、他のスクリーンスペースに関する手法と同じく、オフスクリーンジオメトリ、透明なマテリアル、不透明な他のオブジェクトの陰に隠れているオブジェクトは、スクリーンスペースのデプスバッファーに現れないので、コンタクトシャドウを生成することはありません。その結果、コンタクトシャドウに「穴」が空くほか、フレームの最も外側でシャドウイングが欠落する可能性があります。いずれにしても、このエフェクトによって(特に中長距離で)そういったデメリットを補って余りある画質の向上を実現できます。

ライティングのセットアップ

まずは、ACES トーンマッピングを有効にして、最初からフィルム調のライトレスポンスを得られるようにしておくことを強くお勧めします。もちろん、もっと後(できればライティングパス後)の工程で、次の Volume Override からいくつか使って最終的な画像にカラーグレーディングを施すこともできます。

White Balance は、太陽、月、人工照明に物理ベースの色温度を使用して、人間の脳の色順応やカメラの自動/手動ホワイトバランスを再現する場合、特に重要になります。たとえば、約 3,000 ケルビンの白熱電球を光源とする未補正の画像は、オレンジの色相が非常に強く現れます。ホワイトバランスは、さまざまなシチュエーションでアーティスティックな使い方ができますが、ハイエンドビジュアライゼーションでの色の再現(特にカーペイント)では、きめ細かな配慮が必要です。

環境光ライティング

デモの動的な性質により、時刻や自動車の位置を変更できるため、曇り空のベイク(間接光のみ)を 1 つだけセットアップして、HDRI の曇り空を乗数 10,000 ルクスで使用しました。これでアマリエンボー宮殿の環境の凹面部に十分な量のオクルージョンを提供できます。

その後、特に照明が暗いときのためにベイク済み間接光の輝度を簡単に調整できるよう、「Indirect Light Controller」をセットアップしました。これにより、ディレクショナルライトの輝度を 1 ルクス未満(月光)から 100,000 ルクス(強い日光)まで変えられる、完全物理ベースのライティングをセットアップできます。

最後に、より奥行きを感じられるように、ボリューメトリックフォグを追加しました。その結果、環境内のすべてのライトがフォグと干渉して、薄明光線のように美麗なボリューメトリックエフェクトを生成できます。街灯には以前エキスパート向けガイドで詳しく解説したクッキーベイキング手法を採用して、発光源の完璧なセルフシャドウイングを実現しています。

Unity の GPU プログレッシブライトマッパー(PLM)や NVIDIA と Intel が最近公開した機械学習によるノイズ除去技術のおかげで、GeForce RTX 2080TI なら中庭全体を 30 秒もかけずにベイクできます。以下の設定で十分、中庭全体にソフトなスカイオクルージョンベイクを作成できます。

  • 解像度:メートルあたり 5 テクセル
  • 反射:2
  • アンビエントオクルージョン:なし
  • NVIDIA Optix AI-Accelerated Denoiser

アンビエントオクルージョン

もう 1 つ重要なエフェクトが、スクリーンスペースレイトレーシング手法を使用して、シーンの凹面部に生じるマイクロオクルージョンをシミュレートするアンビエントオクルージョン(AO)です。外部ソリューションで AO をオフラインでベイクしていない場合は、これら 2 つのリアルタイム手法により、特に自動車の内装で、環境光ライティングの品質を大幅に改善できます。また、反射漏れを減らすためにも威力を発揮します。輝度を必要以上に高くすると、局所的コントラストとハローエフェクトが強くなるため、アニメのような見た目になる可能性があります。

 

リアルタイムスクリーンスペースによるアンビエントオクルージョンを採用していても、車体の下を暗くするためには専用のシャドウ平面を使わなければ望ましい結果が得られません。これは AO では、車体下部のパーツがオフスクリーンになったときに近距離の表現がうまくいかなくなるからです。オクルージョンはデジタルコンテンツ制作(DCC)パッケージを使用してベイクできます。得られたテクスチャーを Unity に適用する方法は 2 つあります。

  1. HDRP Unlit シェーダーを使用する平面
  2. HDRP Decal シェーダーを使用するデカールプロジェクター

デカールには、平らでない面にも正確に投影されるという明らかなメリットがあり、これはピクセルを下方向に補正するディスプレイスメントマッピングのような上級者向けテクニックを使っている場合でも損なわれません。一方で光学処理のない平面はピクセルピーピング時に浮き上がって見える可能性があります。自動車の下部にリフレクションプローブを設定するという方法でも、道路表面や車体下部に不要な反射漏れが生じる可能性を回避できます。

カメラのセットアップ

HDRP の物理カメラコントロールは、特に次のパラメーターを通じてレンズの主要な特性をシミュレートします。

  • 焦点距離
  • 絞り
  • 感度(ISO)
  • シャッタースピード
  • ブレード数
  • アナモルフィズム
  • 樽型の歪曲収差

これらのプロパティーは、選択している場合、被写界深度(DoF)と露出の双方に影響する可能性があります。HDRP の長所の 1 つは、物理カメラの設定から露出を簡単に切り離すことができることにあり、これによりリアリティのある DoF を維持しつつ、高い自由度でライティングや露出を調整できます。

また HDRP には、非物理ベースの遠近ブラー距離を使用する DoF のマニュアルフォーカスモードもあります。ですが、このモードは使用せずに、物理カメラモードで実世界の自動車の写真を模倣することを強くお勧めします。迷ったときは、伝統的な映写技法や構図に立ち戻ることで、違和感のある仕上がりになるのを避けることができます。たとえば近距離での撮影時に不要な遠近感の歪みが生じる傾向がある超広角レンズは、アクションショットなど、かなり限定されたシナリオに限定して使うようにしましょう。また、必要もないのに被写界深度を浅くすると、スケール感に悪影響を与えたり、リアルでない、ビデオゲームのような見た目になったりします。ちなみにカメラの有効視野を焦点距離にリンクすると、非常に広い有効視野と非常に長い焦点距離を同時に設定することで非現実的な DoF の設定になる事態を防ぐことができます(これら 2 つのパラメーターが反比例の関係にあることによります)。

その他にも HDRP には、新しい物理ベースのブルーム Panini プロジェクションなど、注目に値するカメラエフェクトを利用できます。これらのエフェクトもご多分にもれず、繊細かつアーティスティックな感覚が求められます。特に、レンズの歪み色収差ビネットといった、通常は望ましくないレンズエフェクトをシミュレートする場合は注意が必要です。

撮影技術に詳しくない人がこれらのカメラ機能を使いこなせるようになるまでには、たしかに時間がかかるかもしれません。とはいえ、カメラとシネマトグラフィーの技術的要素を学習することで、より良いビジュアルや、より面白い構図を生み出せるようになることもまた事実です。アート思考なんて持ち合わせていないという人でも、少なくとも既存のマーケティング資料をもっと簡単に複製できるようになるはずです。

透明度

リアルタイム 3D で特にやっかいな領域の 1 つが、透過性の正確な表現です。透き通ったマテリアルは、別のシェーディングパスで扱われるのが普通で、自前の深さ情報を持っていることはまれだからです。つまり、透き通った表面のソートは一筋縄ではいかない可能性があり、透過ピクセルは通常その背後に配置されている不透明なオブジェクトの深さを継承しているということです。これが被写界深度と組み合わされると、本来フォーカスされているべき透過オブジェクトが背景として扱われてフォーカスが外れ、ぼやけてしまうという困った現象が起きます。

幸いにも HDRP にはいくつかの切り札が用意されています。(HDRP Lit シェーダーの場合)マテリアルのインスペクターで、一般的なソートアーティファクトを回避するには「Render Back then Front」、ポストプロセッシングエフェクト関連のグラフィックのバグを回避するには「Transparent Depth Postpass」など、いくつかの Surface Options をオンにできます。さらに Unity では、手作業でオブジェクトをソートすることもできます。

以下で紹介する最悪のシナリオでは、テールランプとヘッドライトのガラスの多層レイヤーに浅い被写界深度が設定されています。「Transparent Depth Postpass」をオンにしていないと、これらのライトのパーツは建物や車道の深度を継承し、その結果これらの背景オブジェクトと同じレベルのぼかしが入ることになります。かなり強いぼかしが入るので、ガラス素材のパーツが背景にほぼ溶け込んでしまいます。ありがたいことに、Transparent Depth Postpass や、より極端な Write Depth でこの問題を解決できます。

それでもなお、看過できない問題がもう 1 つ残っています。テールランプとヘッドライトを通して見える建物と車道は背景のはずなので、ぼかされていなければならないのに、現状では完全にフォーカスが合ったままになっています。残念ながら、ゲームエンジンの範疇でこの問題をエレガントに解決する方法はありません。これは何も Unity に限ったものではなく、単一のデプスバッファーに依存するあらゆるレンダリングパイプラインに共通する制約です。

まとめ

HDRP は非常に柔軟性の高いレンダリングパイプラインで、メインストリームのコンソールから超ハイエンドのワークステーションにまでスケールできます。ただし、この柔軟性には、プロジェクトの要件を満たすために、相当な数のレンダリング機能のオン/オフを切り替えたり、パラメーターを調整したりしなければならないという代償が伴います。エキスパートガイドを読んだ後も、HDRP のハイエンドビジュアライゼーション向け機能や、自動車AEC映像制作、次世代ゲームのビジュアルクオリティーを大幅に引き上げるために必要なセットアップについての理解を深めていただければ幸いです。

最後になりますが、HDRP のレイトレーシング機能セットがますます進歩しているおかげで、リアルタイムレンダリングとオフラインレンダリングのギャップはしだいに狭まりつつあります。その結果、従来のスクリーンスペース手法や画像ベースの手法は、少なくともハイエンドのリアルタイムアプリケーションの世界では、あっという間に過去のものになる可能性があります。とはいえ、これらの「旧式の」手法も、その可能性を限界まで引き出すことにより、メインターゲットである平均的な消費者に十分通用するビジュアルを生み出せることは間違いありません。

17 replies on “ハイエンドビジュアライゼーション用に Unity の HD レンダーパイプラインをセットアップする方法”

Awesome !
Is this compatible with 360 Capture as well ? I ran into some problems with ambiant occlusion in a previous HDRP project where some stuff were incorrect in the capture outside the “classical” game view.

Btw. With Bakery you can further improve baking the interior and and the car shadow/ao for the decal projector without needing an DCC Tool.
Do you have some tips to use the decal projector for driving on multiple ground materials and with an fade out if the car get some air lifting.
The could be also used to render precalcualted hq front and backlight light distribution to the ground.

Nice though careful reflection probe and shadow setup remain slightly awkward steps.
With the nvidia high-end raytracing features you are bringing, could these all work well out of the box for the right hardware?

Hello Ciro,
Are some of the scenes available to download so my team can learn and try going with Unity on a Automobile project I have in the pipeline ?

Thanks
b

Comments are closed.