ディスプレースメントマップの仕組みとV-Rayでそれらを最適化する方法

ディスプレースメントマップの仕組みとV-Rayでそれらを最適化する方法 ・パート2

はじめに

このガイドのPrat1では、V-Rayディスプレイスメントの理論について説明し、3Dマッピングのディスプレイスメントモードの設定を最適化する方法について紹介しました。

このパートでは、V-Rayディスプレイスメントを使用してシーンをレンダリングしながら、2Dマッピング(ランドスケープ)ディスプレイスメントと、リソース(主にRAM)を削減できる様々な方法について説明します。

記事の目次

  1. 2Dディスプレイスメントの最適化(ランドスケープ)
  2. 2Dディスプレイスメントで閉じた3Dオブジェクトをレンダリングするためのヒント
  3. RAMの結果を改善するためにメッシュを細分化する
  4. 不要なジオメトリを削除、またはバンプに変更する
  5. メモリを節約する
  6. 追加の設定
  7. まとめ
  8. 参考リンク
  9. クレジット

2Dディスプレイスメントの最適化(ランドスケープ)

V-Rayマニュアルに従って行う2Dディスプレイスメント(ランドスケープ):

  • 2Dマッピング – 事前にわかっているテクスチャマップに基づいてディスプレイスメントを作成します。 変位したサーフェスは、そのテクスチャマップに基づき、歪曲されたheight-fieldとしてレンダリングされます。 変位したサーフェスの実際のレイトレーシングはテクスチャ空間で行われ、結果は3D空間にマッピングされます。 この方法のメリットは、変位マップのすべての詳細情報が保存されることです。 ただし、オブジェクトには有効なUV座標が必要です。 この方法は、オブジェクトまたはワールド座標系を使用する3Dプロシージャルテクスチャまたはその他のテクスチャには使用できません。 ディスプレースメントマップはどんな値でも設定できます。

これはV-Rayディスプレイスメントにおいてとても効率的なモードで、地面、草、舗装、地面タイルなど、あらゆる種類の平面を作成する方法として一般的に使用されています。

2Dディスプレイスメントモードには、3Dモードにある「連続性を保つ」の設定がありません。 このオプションは、変位したモデルのエッジを連続したジオメトリにブレンドし、2Dサーフェスではなく、あらゆる種類の3Dシェルにディスプレイスメントを適用するのに非常に便利です。 たとえば、ディスプレイスメントで作成されたジオメトリがあるレンガの壁のコーナーなどです。

ただし、閉じた3Dオブジェクトでもこのモードを使用できるようにする裏技があり、大抵の場合、変位したメッシュの連続性を維持します。

2Dディスプレイスメントで閉じた3Dオブジェクトをレンダリングするためのヒント

一般に、2Dマッピングディスプレイスメントは、平面(地面や海面など)で使用することを目的としていますが、このモードは3Dマッピングディスプレイスメントのような「連続性を維持」のオプションがなくても、どんな3Dモデルにも使用できます。

設定の手順は次のとおりです。

2Dディスプレイスメントで閉じた3Dオブジェクトをレンダリングする

同じスムージンググループに設定されたポリゴンは、特にディスプレースメントマップを一致させて、同じ部分がコーナーで交わる場合に連続性を維持します。 また、コーナーにベベルを追加すると良い場合があります。 これは、3ds Maxの編集可能なポリゴンのための「ベベル」のオプション、または適切なメッシュの編集可能なポリゴンモデルに追加された、ターボスムースを介して実行できます。

ターボスムース、メッシュスムース、編集可能ポリゴンのNURMSサブディビジョンなどのモディファイヤを使用してメッシュを密にする場合、この設定では十分な結果が得られない可能性がありますのでご注意ください。

このような場合、スムージンググループの統合を適用する前に、メッシュを編集可能なポリゴンに折りたたむ必要があります。 面分割やサブディバイドなどのモディファイヤも良いですが、折りたたまれたメッシュはさらに良い結果をもたらします。

2Dと3Dのディスプレイスメントを使用する同じシーンで、使用されるリソースの数を比較してみましょう。

テストのセットアップ:

  • ハードウェア:Intel V2プロセッサ、2.80 GHz、128 GB RAM
  • ソフトウェア:3ds Max 2017 + Vray 4.10.02
  • GIはライトキャッシュ+ブルートフォース、のデフォルト設定
  • シーンは6000x6000pxの解像度の画像にレンダリングされるよう設定
  • 他のすべての設定はデフォルトのまま

注:一部のテストでは、リソース使用量を増やし、比較シナリオに影響を与える可能性がある任意の違いを除外するために、ディスプレイスメントがわざと非常に高い値に設定されています。 また、RAMテストは、3ds MaxによるRAMの最大使用量を示しています。これはほとんどの場合、画像をレンダリングするV-Rayの「Building Embree 静的アクセラレータ」のフェーズ中に発生しました。

2つのシーンをテストします。

左側の平面は、ターボスムース、UVW平面マッピング、およびVrayDesplacementModが適用された、編集可能なポリゴンになるよう折りたたまれた平面です。

右側のシーンは、メッシュが細分化され、角がターボスムースモディファイヤで丸められ、編集可能なポリゴンになるよう折りたたまれてVRayDisplacementModが適用された2つのボックスです。

青い四角は、拡大されて表でテストと比較する領域を示しています。

シーンのレンダリングテスト

さまざまな解像度のテクスチャを使用して、2Dモードでディスプレイスメントのあるシーンをレンダリングするために必要なリソースの量をテストします。

次に比較のために、2Dディスプレイスメントモードでレンダリングされたシーンと、同じ量のRAMを使用するように設定された3Dマッピング(ビュー依存)でシーンをレンダリングし、品質とレンダリング時間を比較します。

2Dディスプレイスメントモードでレンダリングされたシーンと、同じ量のRAMを使用するように設定された3Dマッピングでシーンをレンダリング

テストを見ると、256px と512px のディスプレースメントマップのあるシーンはあまり良い出来とは言えません。 テクスチャピクセルはディスプレイスメントで顕著になります。1024および2048のレンダリングでは、ピクセルはそれほど見えませんが、とがった岩のエッジにはアーティファクトが顕著になります。

4096と8192のディスプレイスメントテクスチャのレンダリングはほぼ同じ画像になっため、比較的多くのRAMを使用する8192画像は破棄し、4096の画像を残すことにします。

シーンのテストでは、2Dディスプレイスメントで使用されるRAMが、一番大きなマップでは急速に増加し始めることが示されました。 同様のRAM使用量の3Dマッピングでは、ディスプレイスメントのディティールが少しぼやけますが、レンダリングははるかに高速になりました。 128 GB RAMに可能な限り高レベルのフィッティングを設定した3Dマッピングのディスプレイスメントは、13 pxに設定されたものよりも良い画像をレンダリングしませんでしたが、このズームレベルと解像度では、テクスチャ自体によって制限されます。

2Dディスプレイスメントモードでレンダリングされたシーンと、同じ量のRAMを使用するように設定された3Dマッピングでシーンをレンダリング

2番目のシーンの場合、256〜2048pxのマップのレンダリングはあまり良い結果ではありませんでした。 4096の解像度では見えなくなるディスプレイスメントマップのピクセルが、これらには確認できます。 8192マップはほぼ同じようにレンダリングされ、ランダムなアーティファクトの数は減少しましたが、その代わりRAMの使用量が大幅に増えました。

10GBのRAMを使用してレンダリングするように設定された3Dマップシーン(8Kテクスチャを使用)は、2Dモードのシーンの1024〜2048および4096pxの品質の画像になりました。 また、最大エッジの長さが2pxおよび57 RAMに設定されたシーンは、2Dディスプレイスメントシーンよりも鮮明なディテールは見えませんが、 レンダリングははるかに高速でした。

ヒント:2Dディスプレイスメントモードでは、ディスプレイスメント設定のテクスチャ解像度を、テクスチャの実際の解像度に一致させるのがベストです。 簡単なテストをし、画像の最初のピクセルを確認するまでの時間を短縮したい場合は、モディファイアの解像度を低い値に設定し、通常のレンダリングの最大値に戻すことができます。

2Dディスプレイスメントの利点:

  • レンダリング解像度に依存しないRAM使用量
  • 「ディスプレイスメントの事前計算」がなく、RAM使用量が少ない
  • カメラの距離や視点に関係なく、アニメーション中も同じディティールのレベル
  • より鮮明なディティール

短所:

  • テクスチャが大きい場合、RAMを大量に消費する可能性がある
  • カメラから遠く離れたモデルには必要のない設定でオーバーシュートする
  • ディスプレイスメントのクオリティを微調整できるオプションがあまりない
  • プロシージャルマップに非対応
  • 2Dディスプレイスメントが機能するには、モデルを適切にマッピングする必要がある
  • 閉じた(シェル)モデルでは常にうまく機能するとは限らない

RAMの結果を改善するためにメッシュを細分化する

さまざまな密度のメッシュでモデルをテストしてみましょう。ただし、VrayDisplacementMod設定をすべてのレンダリングで同じ値に設定して置き換えます。

RAMの結果を改善するためにメッシュを細分化する

VRayDisplacementModを適用する前にメッシュを細分割すると、RAMが大幅に節約されますが、レンダリング時間がわずかに長くなる場合があります。 メッシュ密度が特定の値に達した後、RAMの使用は再び増加し始めます。

これは、V-Rayディスプレイスメントが、シフトを適用する前にジオメトリ面をサブの三角形に分割するためです。 面を次々にロードして細分化するため、モデルがいくつかの大きな面から構築されている場合、V-Rayはモデルの非常に大きな面のメッシュを計算する必要があります。 そのため、より多くのRAMが必要になる可能性があります。

一方、V-Rayがメッシュの初期計算を開始するときは、変位したメッシュをできるだけ多くメモリにキープする必要があります。 このようにして、隣接するエッジを計算して、その連続性を維持します。 変位したメッシュの密度が高くなりすぎると、メモリ内にキープする要素が多すぎて、RAMを大量に消費する必要があります。

ディスプレイスメントを適用する前にメッシュにサブディビジョンを追加すると、品質が向上し、ディスプレイスメントのアーティファクトを取り除くことができます。 以下に例をご紹介します。

RAMの結果を改善するためにメッシュを細分化する

ターボスムースなどのモディファイヤを使用してメッシュをすばやく細分割できますが、メッシュを折りたたんで編集可能なポリゴンにしない場合、結果が非常に小さくなる可能性があります。

ヒント:ブルートフォースはメモリ使用量の点で最適化されているため、セカンダリバウンスエンジンとして使用してみてください。 ライトキャッシュは、計算を続行するためにすべてのアセットをロードする必要がありますが、ブルートフォースおよびイラディアンスマップはバケットごとにロードできます。

ヒント:場合によっては、バンプマップまたは法線マップを同じモデルのディスプレイスメントマップと組み合わせることができる場合があります。 ディスプレイスメントを使用してより大きなフィーチャを作成し、法線またはバンプを使用してディティールをより詳細にすることができます。

不要なジオメトリを削除、またはバンプに変更する

それでは、ディスプレイスメントレンダリングを最適化する他の方法を試してみましょう。

V-Rayは、ショットに表示されていない部分も含めて、ディスプレイスメントが適用されたモデル全体をレンダリングします。 これらは反射または屈折で顕著になり、レンダリングGIに影響を与える可能性があるため、計算に使用されます。

以下のテストでは、モデルをカメラビューのすぐ外に移動しました。 最初の2つのテストでは、ディスプレイスメントのあるモデルがボールの表面に反射します。

ディスプレイスメントのあるモデルを削除した場合にのみ、使用済みリソースの量が減少します。 ディスプレイスメントを反射でのみ表示する必要がある場合、大抵はバンプマッピングだけで十分です。

フレームに表示されていないモデルの部分を切り取るなど、ショットに表示されていない部分を削除できます。

不要なジオメトリを削除、またはバンプに変更する

モデルに隠れたポリゴンは、レンダリングに影響を与えることなく削除できます。保存されるRAMはかなりの量になります。

レンダリング領域をオンにしてシーンをレンダリングするとどうなるかを見てみましょう。

レンダリング領域をオンにしてシーンをレンダリングする

ご覧のとおり、RAMの使用量に大きな変化はありません。 これは、レンダリング領域に含まれていない場合でも、V-Rayがモデル全体をフレームからメモリにロードしているためです。

最良の結果を得るためには、ディスプレイスメントを使用する必要がない場合もあります。 オブジェクトがカメラから遠く離れている場合は、通常のバンプで十分です。

不要なジオメトリを削除、またはバンプに変更する

レンダリングの品質低下を顕著にさせることなく、バンプを使用して使用済みリソースを削減できるのはいつ?

  • モデルがショットに表示されていないが、反射に表示されている場合。
  • モデルがショットに表示されていないが、GIに影響を与える場合。 この場合、ディスプレイスメントやバンプを使用せずに、ディフューズマップのみをオンにしておくことができます。
  • 変位したモデルがカメラから遠く離れている場合、または画像のその部分の解像度が低いために詳細が表示されない場合。
  • 壁の傷、ペイントの筆跡、革のパターンなどの細部、特にカメラの近くにない場合。

メモリを節約する

[メモリの節約]オプションを使用すると、レンダリング時間がわずかに長くなりますが、使用済みRAMの約5〜10%をすばやく節約できます。 テストの結果を見てみましょう。 (前回のテストと同じシーンを使用します。)

メモリを節約する

これは、[レンダリング]>[レンダリング設定]>[設定]>[メモリの節約]でオンにできます。

追加の設定

以下で説明する設定は、使用しているディスプレイスメントのタイプに応じてデフォルトでオンまたはオフになっていますが、そのままにしておくことをお勧めします。これらは主に、V-Rayディスプレイスメントが他のプラグインと反発したときなど、アーティファクトやバグをバイパスするときにシーンのレンダリングを支援するために使用されます。

しかしこれらが、シーンのレンダリングに役立つかどうかを確認したいと思うかもしれません。

ヒント:GIフェーズの計算中にメモリ使用量のピークが高すぎる場合は、まず、scene \ objectでディスプレイスメントをオフにしてGIをファイルにレンダリングしてから、ディスプレイスメントをオンに戻した状態でファイルからロードされたGIを使用してシーンをレンダリングできます。 この方法は、変位したフィーチャが非常に小さい場合には、見た目が良くなる可能性があります。

静的ジオメトリ – デフォルトでは有効 – 変位したジオメトリは、最初にアクセラレーション構造にあらかじめ編集され、フレームの最後までそこに残ります–レンダリングは高速化されますが、メモリ使用量が増加します。

動的メモリは、「静的ジオメトリ」をオフにした場合にのみ、ディスプレイスメントの表面に使用されます。 タイル化されたテクスチャとV-Rayプロキシはダイナミックメモリに保存されますが、通常のジオメトリ、タイル化されていないビットマップ、およびレンダリングに必要なその他のデータは静的メモリに残ります。

ヒント:静的ジオメトリをオンにした場合のディスプレイスメントはレンダリングが速くなりますが、RAMの使用量が多くなります。 この場合、ディスプレイスメント全体が事前に計算され、RAMに保存されます。 オフにすると、「ダイナミックメモリ」に保存され、レンダリング中の必要に応じてロードおよびアンロードされます。 このような場合、ダイナミックメモリ制限をコンピュータのRAMよりも約10GB小さい値に設定する必要があります。 これにより、V-Rayはデータをダイナミックメモリに保存し、オペレーティングシステムと実行中のアプリケーション用にメモリを残すことができます。

可能な限り効率的にレンダリングできるように、[レンダリング設定]>[設定]>[Dyn.mem.limit]でダイナミックメモリの制限をコンピュータのRAMから他のアプリケーションに必要なRAMを差し引いた値に設定し、シーンが読み込まれた3ds Max自体を設定します(たとえば、5〜10 GB少なくします)。

タイトバウンド – デフォルトでは有効(V-Rayマニュアルの後)–有効にすると、V-Rayは元のメッシュから変位した三角形の正確なバウンディングボリュームを計算します。

これには、ディスプレイスメントテクスチャのプリサンプリングが必要ですが、テクスチャに大きな黒または白の領域がある場合、レンダリングは高速になります。 ただし、ディスプレイスメントテクスチャの査定が遅く、フルの黒と白の間で大きく変化する場合は、このオプションをオフにした方が速い場合があります。 オフの場合、V-Rayは最低の場合のバウンディングボリュームを想定し、テクスチャをプリサンプリングしません。

このオプションは、ディスプレイスメントの事前計算に時間がかかりすぎて、V-Rayがディスプレイスメントをサンプリングすることを必要とする場合にのみ使用できます。

ヒント:ディスプレイスメントのプリサンプリングのフェーズは、変位したジオメトリのより正確なバウンディングボックスを決定するために使用されます。 ディスプレイスメントモディファイヤの「タイトバウンド」オプションをオフにすると、スキップできます。 特に、草やチェッカーなど、ほぼ規則的なディスプレースメントマップがある場合は、このオプションをオフにすると、レンダリングプロセスの最初の部分が高速化する可能性があります。

法線キャッシュ – デフォルトでは無効 – このオプションを有効にすると、V-Rayは新しく生成された各頂点の法線に関する情報を生成して保存します。 これには追加のメモリが必要ですが、レンダリング中のシェーディングの計算が高速化されます。

ヒント:このガイドの最初の部分で、3Dディスプレイスメントを非常に低いエッジの長さに設定すると、通常のマッピングやバンプマッピングと同様の効果が得られると述べました。 [法線のキャッシュ]のチェックを外すと、この効果をオフにできます。

バウンディングボックスを基準にする – デフォルトでは無効 – この設定は、ディスプレイスメントの量をモデルのバウンディングボックスのサイズにバインドするため、最適化にはあまり適していません。

まとめ

最適化されていないディスプレイスメント設定は大抵の場合、シーンのRAM使用量に影響します。 RAMの使用量が、3DアプリケーションがHDD上のメモリを仮想メモリとして使用して交換する必要があるレベルに達すると、レンダリング時間に大きな影響を与える可能性があります。 最悪の場合、シーンがフリーズする可能性があります。

ディスプレイスメントを最適化する一つ目のルールは、ジオメトリを最適化する場合と同じです。 必要な効果を得るには、計算するデータをできるだけ少なくする必要があります。 V-Rayディスプレイスメントは、カメラのFOVに表示されていない場合にも計算に組み込まれるため、ショットに表示されていないディスプレイスメントモデルのすべての部分を削除することが最も簡単な方法です。

2Dディスプレイスメントは、その鮮明な結果が得られるためよく選択されますが、RAMの使用量は高解像度のマップを使用すると急速に増加する可能性があります。 また、低品質のオプションが設定されている2Dディスプレイスメントは、変位した表面にディスプレイスメントマップのピクセルが顕著になるため、低品質の3Dディスプレイスメントよりも不自然に見えます。

ディスプレイスメントジオメトリにいくつかのサブディビジョンを追加すると、RAMを削減し、レンダリング時間を短縮することに貢献します。 V-Rayは、ジオメトリの小さな部分を1回の「バイト」で処理できるようになります。 ただし、メッシュの密度が高すぎると、RAMが再びいっぱいになります。

メモリの節約は、わずかに長いレンダリング時間でもメモリの約5〜10%を素早く節約できます。

タイトバウンド、静的ジオメトリ、キャッシュ法線などの他のオプションでは、RAMの使用量を減らすかレンダリング時間を短縮するかを選択できます。

参考

https://www.cggallery.com/tutorials/displacement/

https://docs.chaos.com/display/VMAX/VRayDisplacementMod – V-Ray 3.6 documentation

https://docs.chaosgroup.com/display/VRAY4MAX/VRayDisplacementMod – V-ray 4 documentation

https://forums.chaos.com/forum – Chaos Group forums

自分のこれまでの経験と実験

イラストやテストに使用されたテクスチャは、https://www.textures.com/およびhttps://texturehaven.com/から使用しています。

クレジット

このガイドはMichałMośによって作成され、GarageFarm.NETのチームにより編集されました。このガイドの知識は10年以上レンダーファームに従事してきた豊富な経験とAutodeskKnowledgeNetworkおよびChaosGroupのV-rayドキュメントを参考にして作成しています。テストで使用されたテクスチャは、https://www.textures.com/およびhttps://3dbee.it/から使用しています。

Michał Moś

MichałMoś(別名Andrew)はGarageFarm.NETのメンバーで、アニメーションやトラブルシューティングからテクニカルライティングまで、3Dレンダリングのトピックを専門としています。彼は、CGアーティスト、デザイナー、インストラクターとして、数多くのデザインおよび建築会社に従事していた経験も持ち、主に 3ds Max、C4D、V-Ray、Octaneを使用しています。絵を描くこと、執筆、そしてテーブルRPGが趣味です。

https://michalmos.carbonmade.com

https://blog.garagefarm.net/

関連記事

Chat