この記事では、3dsMax用にV-Rayのディスプレイスメントの設定を最適化する方法をご紹介します。 V-Rayに関しては、互換性のある3Dアプリケーションで動作する場合を前提とします。
(※ガレージファームのアカウントをまだお持ちでない方は、こちらの3DS MAXレンダーファームから新規登録していただくと、50$のレンダリングクレジットを取得できます。)
ディスプレイスメントマッピングは、手動でモデル化することなく、サーフェスに複雑なジオメトリを追加できる強力なツールです。 これにより、「クラシック」なポリモデリングを超越した、リアル感をモデルに加えることができます。
たとえば、数回クリックするだけで、単純な正方形を、レンガ、石膏、塑像などの彫刻が施された表面に変えることができます。
まず、バンプや法線マッピングとは対照的に、ディスプレイスメントがどのように機能するかを見てみましょう。
それぞれの表面には色や反射だけでなく立体構造があり、滑らかさや粗さなど、私達の目は光がその隆起や引っかき傷でどのように跳ね返るかによってテクスチャを認識します。 素材のこの本質的な特徴が、面白さとリアルさを表現します。
物質の表面を認識するにはこれがとても重要な情報なので、3Dアプリケーションでも、そのような効果を出すツールがマテリアルエディタにすばやく組み込まれました。
1つはバンプマップです。 モデルへの光の配置を考慮して表面の浮彫りを模倣し、影とハイライトを描写してテクスチャと奥行きをシミュレートします。
ただし、バンプマッピングは実際の3D構造を作成するのではなく、 実際には存在しないシミュレートされた機能に光を反射させることで、レンダリングプロセス中に3Dの錯覚を「偽造」します。 それは微小で細かいディテールや、ある角度でのみ発揮されます。 たとえば、オブジェクトの輪郭などの変化はわからないでしょう。 それほど必要性がないように見えるかもしれません。
もう1つの方法は、法線マップ(法線バンプ)です。 バンプマッピングと同じ役割をしますが、サーフェスの角度をエンコードするRGBカラーマップに基づいてディティールが作成されます。 ただし、バンプマッピングと同様に、効果は純粋にレンダリングに基づき、 ジオメトリに実際の詳細は追加されません。 ポリカウントを低く抑えながらモデルにディティールを追加できるので、これは主にコンピュータゲームで使用されます。
これらの方法とは反対に、ディスプレイスメントマッピングは実際の3Dジオメトリを作成するので、実際に影を落とし、あらゆる角度からリアルに見せます。 これは、レンダリングプロセス中にモデルのポリゴンをより高密度のメッシュに分割することで実現され、メッシュは選択したテクスチャに基づいて上下軸で上下します。 この方法の欠点は、処理に大量のRAMを必要とする非常に重いメッシュを作成することです。
Photoshopで、参照資料の写真を使用してディスプレイスメントマップを作成し、それをスカルプトしてZbrushやMudboxなどのプログラムでベイクするか、CrazyBumpやNormalMapOnlineなどのディスプレイスメントマップなどのツールを使用できます(この記事の最後にあるソフトウェアリストをご確認ください。 )
整数マップまたはフロートマップを使用することもできます。 キャラクター作成や複雑な彫刻を作成しているアーティストは、通常、Zbrushなどのソフトウェアからフロートマップをエクスポートします。 建築ビジュアライゼーションのようなシンプルなモデリングでは、さまざまな表面の画像から作成された整数マップを使用することができます。
3dsMaxとV-Rayでディスプレイスメントを設定する方法は2つあります。
VRayDisplacementModモディファイヤを使用すると、ディスプレイスメント機能の設定と、レンダリングに必要なリソースの管理が柔軟になります。
ディスプレイスメント機能の設定 – これらはシーンで使用されるレンダリング時間とRAMに影響します。 ディスプレイスされたモデルを正確な外観にするために、具体的な値を設定する必要がありますので、最適化するためにも、適当な値を設定しないでください。以下にリストされている他の設定を参照してください。
品質設定 – これらは、ディスプレイスメントのレベルの詳細、サブディビジョンの数、およびメッシュ密度を設定し、シーンがレンダリングに必要なリソースの数を決定します。これについてはガイドの次の章で最適化していきます。
パフォーマンスおよびその他の設定 – これらはレンダリングパフォーマンスに影響を与える特別な設定で、アーティファクトや異常に高いリソース使用量など、ディスプレイスメントに関連した問題をデバッグするような稀な場合に使用されます。 記事の最後でそれらについて解説します。
V-rayマニュアルによると、VRayDisplacementModには3つのタイプのマッピングがあります。
レンダリング設定からのディスプレイスメントが提供するすべてのオプションなどがあり、シーン内のモデルごとに個別にディスプレイスメントオプションを設定できるため、テストにはVrayDisplacementModモディファイヤセットアップを使用します。
以下のシーンのさまざまなバリエーションをテストに使用します。
テストのセットアップ:
ハードウェア:Intel V2プロセッサ、2.80 GHz、128 GB RAM
ソフトウェア:3dsMax 2017 + V-ray 4.10.02
GIはライトキャッシュ+ブルートフォースとしてデフォルトに設定されています。
他のすべての設定はデフォルトのままにしています。
以下のテストと例でV-Rayディスプレイスメントのオプションを確認し、可能な限り最小限でコンピューターのリソースを使用しながら、必要なだけ詳細なレンダリングを出力する方法を見ていきます。
3Dマッピングに設定されたVrayDisplacementModの主な品質設定は、エッジの長さです。これは、デフォルトで、 [ビューに依存する]オプションが有効になっています。
ジオメトリを移動する前に、VRayDisplacementModはオブジェクトの三角形を小さい三角形に分割します。 [ビューに依存する]オプションがオンの場合、[エッジの長さ]の値によって、サブの三角形のエッジの最長がピクセル単位で決まります。
たとえば値1.0は、各サブ三角形の最長のエッジが、画面に投影されたとき(つまり、レンダリングされた画像)に約1ピクセルの長さになることを意味します。
より小さなサブ三角形は、より小さな値で作成されます。 これは、ディスプレイスメントの詳細、レンダリング時間の短縮、そして最も重要な、メモリ使用量の増加を直接意味しています。
この設定がさまざまな値に設定されている場合の、変位したジオメトリの品質と使用されているリソースの数を確認してみましょう。
ご覧のとおり、エッジの長さの値を短くすると、RAMの使用量が増えますが、より詳細なジオメトリが可能になります。 これは、エッジの長さが短いほど、VRayDisplacementModによって作成されたジオメトリメッシュが密になり、重くなるためです。
シーンのレンダリング時間も不釣り合いに長くなります。 これは、V-Rayで使用されるRAMが120GBの臨界値(この場合は0.25エッジの長さ)に達したときに発生し、3dsMaxがデータを交換するための仮想メモリとしてHDDの使用を開始します。 これはディスプレイスメントを使用してシーンをレンダリングするときには避けたいケースです。
次に、エッジの長さを1pxで一定に保ちながら、さまざまな解像度で画像をレンダリングするとどうなるかを見てみましょう。
V-Rayが使用するリソースの量は、解像度が高くなるほど大きくなり、VRayDisplacementModで一定のエッジの長さに設定されます。
これは、ビュー依存オプションがレンダリングされた画像ピクセルのメッシュをシーンにキャストするためです。 メッシュは、細分化された三角形の最長のセットの基礎になります。 すべての解像度で同じエッジの長さの値をキープしていても、解像度が大きいほど、ディスプレイスメントメッシュの密度が高くなります。
ほとんどの場合、エッジの長さ= 1pxは高品質の設定ですが、画像の解像度が高いほど、同じエッジの長さの値を使用することで得られるディスプレイスメントの品質が向上することを考慮する必要があります。 これは同様にRAM使用量に影響します。
シーンをサードパーティのレンダーファームに送信する場合、たとえば、エッジの長さ=4pxの4000x4000pxを20Kの解像度でレンダリングするとして、エッジの長さを新しい解像度に調整する必要があります。 (ビュー依存がオンになっている限り。)
これは、エッジの長さの値を低解像度のテストに比例させたためですが、シーンをより高い解像度でレンダリングするように設定すると、シーンがクラッシュしたり、レンダリング時間が長くなったり、コストが高くなります。 これは、クラウドレンダーファームのユーザーによく起きる問題です。
一般的に、解像度をn倍にすると、同じディスプレイスメントの密度を得るには、エッジの長さもn倍にする必要があります。 たとえば、1000x1000の解像度と1pxのエッジの長さで開始し、4000x4000の解像度で画像をレンダリングすることにした場合、前の解像度と同じ量のジオメトリを取得するには、エッジの長さを4pxに設定する必要があります。
置き換えられたモデルが高解像度でまったく同じに見えることを必ずしも意味するわけではありません。 より高い解像度では、1 x 1の正方形と比較した場合、4 x 4ピクセルの正方形のほうがはるかに多くのディティールが表示されます。また、さまざまな解像度で画像をレンダリングするために必要なRAMの量は、ディスプレイスメントのメッシュの密度だけに依存するわけではありません。
以下は、比例的な解像度とエッジの長さのスケーリングの例です。
ご覧のように、使用されるRAMの量は増えますが、エッジの長さが一定のままの場合ほど速くはありません。 また、レンダリング速度が大幅に低下し始める臨界点には達しませんでした。
この乗数は、より高い解像度でディスプレイスメントを設定するための開始点として、およびRAM使用量とレンダリング時間の大幅な増加を回避する方法としてのみ考慮してください。 希望する外観とコンピュータのRAMの量に応じて、いつでも乗数を微調整できます。
それでは、必要なディティールのレベルでテストシーンをレンダリングするために、必要なRAMの量を最適化する方法を見つけましょう。 この場合、8000x8000pxの解像度で行います。
まず、さまざまなエッジの長さを使用してシーンをレンダリングし、どのようなクオリティになるか、必要なリソースの数を確認します。
画像の領域でレンダリングされたこれらのサンプルに基づいて、目的の品質と使用可能なRAMに最適な設定を選択できるようになりました。 中央のオブジェクトには3番目の列(2.0)、右側のオブジェクトには7番目の列、左側のオブジェクトには11番目の列を選択します。 次に、画像全体のレンダリングに移ります。
これで、最適化された設定により、ほしかった結果が得られました。
ビューに依存するエッジの長さがオンになっている3Dマッピングに設定されたVrayDisplacementModの長所と短所:
長所
短所
画像をレンダリングするすべての解像度のエッジの長さの値を再計算したくない場合、またはすべての観点からモデルをまったく同じに見せたい場合は、「ビュー依存」オプションをオフにして、 代わりに、ワールドスケールの単位でディスプレイスメントの品質を設定します。
ビュー依存機能がオフの場合、細分割された三角形のメッシュの最大サイズは、画像の解像度に基づく値ではなく、実際の3D空間で一定の値に設定されます。
ワールドスケールの単位は、[カスタマイズ]タブの[単位設定]ウィンドウで確認および設定できます。 これは、ビューポートに表示される内容を決定するため、表示単位設定の値を変更することと同じではありません。 一方、システムユニットは、実際のジオメトリに影響を与えます。
エッジの長さを実際の単位と同じ値に設定して、RAMの使用量が画像のさまざまな解像度にどのように反応するかを見てみましょう。
ディスプレイスメントをオフにした場合のRAM使用量と比較すると、標準のRAM使用量は300〜400MBと比較的安定した上昇を示します。 もちろん、主に同じマシンでより大きな画像をレンダリングするため、レンダリング時間が長くなります。
ディスプレイスメントの品質は解像度によって変わりません。 ただし、高解像度の画像では、低解像度では表示されなかったディティールはある程度品質が欠損する場合があります。 このような場合は、エッジの長さを低い値に設定する必要があります。
次に、エッジの長さの値を変更して解像度を維持すると、コンピュータのリソースとディスプレイスメントの品質がどうなるかを見てみましょう。
エッジの長さが短くなると、レンダリング時間、必要なRAM、およびディティールの品質などすべてが向上します。 非常に長いエッジの長さと最小限のディテール、レンガの表面はモデルにレンダリングされる、なども逆になります。ただし、メッシュは細分化されないため、バンプマッピングと同様の効果が得られます。
同じシーンを異なるカメラアングルからレンダリングしてみましょう。
モデルが画像内の異なる領域を占めるため、レンダリング時間は異なりますが、RAMの使用量はほぼ同じです。
これは、ビュー依存オプションをオフにした場合、VrayDisplacementModによって生成されるジオメトリの量がカメラの位置に応じて変化しないためです。 これは、アニメーションのレンダリングに最適です。 ビュー依存をオフにすると、シーンのどこにレンダリングされるかに関係なく、モデルの外観を修正できます。 一方、ビューに依存する設定を使用すると、モデルのディスプレイスメントの品質も変化します。
したがって、アニメーションの場合、すべてのワールドスケールのエッジの長さを値に設定できます。 コンピュータのRAMが1つのカメラ位置を超えられない場合、他の位置でも超えられません(少なくともディスプレイスメントに関して)。
ただし、カメラが変位したオブジェクトに最も近い場合、ディスプレイスメントの品質がフレームに対して十分であることを確認する必要があります。 ちなみに、カメラが遠くにあるフレームでは品質が良く見えます。
簡単なカメラアニメーションを作成して、ディスプレイスメント設定を最適化してみましょう。
以下は、カメラがこの置き換えられたモデルに最も近く、十分な品質の設定をした、タイムラインで示す3つのテストフレームです。
すべてのモデルテストで、他のモデルのディスプレイスメントはオフになりました。 したがって、テストのRAM使用量とレンダリング時間は、ディスプレイスメントが適用された3つのモデルすべてが最終レンダリングで異なります。
選択したエッジの長さ(1.0および0.5)で画像をレンダリングしました。 テストした3つのポイント以外の位置にカメラを配置した場合、ディスプレイスメントの品質は少なくともテストフレームと同じになります。
以下は、ワールドスケールのエッジの長さ(ビュー依存オフ)で3Dマッピングに設定されたVrayDisplacementModの長所と短所です。
長所
短所
ビューに依存するエッジの長さを設定した3Dマッピングは、ディスプレイスメントの品質を設定するために便利な方法です。 カメラに近いオブジェクトは、遠いオブジェクトよりも細かく細分化されます。 欠点は、レンダリングに設定された解像度に応じて設定調整の必要がある場合が多いことです。 低解像度の画像で高品質を適応させる設定をそのままにしておくと、シーンがクラッシュしたり、フリーズしたり、高解像度でのレンダリングが永遠に終わらない可能性があります。
また、サブディビジョンの数は、レンダリングされた画像上のモデルのサイズに基づいて設定されます。 アニメーション中にモデルがカメラに近づいたり遠ざかったりすると、ディティールのレベルが変化します。 場合によっては、変更が不要になることがあります。
[エッジの長さ]設定で[ビューに依存するオプション]をいつでもオフにでき、代わりに、置き換えたモデルのサイズを実際の単位で設定できます。 この場合、ディティールのレベルは解像度に依存しないため、レンダリングする解像度がよく見えるようにすべてのモデルを手動で設定する必要があります。 ただし、解像度が高くなっても、レンダリングのRAM使用量は急増しません。
次回の記事では、VRayDisplacementModで2Dマッピングをテストし、カメラから遠くに配置されたモデルのディスプレイスメントの代わりにバンプを使用して、非表示の面を削除するなど、特定のマッピングモードに接続されていない、さまざまな最適化の方法やヒントを紹介します。
https://www.cggallery.com/tutorials/displacement/
https://docs.chaosgroup.com/display/VRAY3MAX/Displacement+Modifier+%7C+VRayDisplacementMod - V-Ray 3.6 documentation
https://docs.chaosgroup.com/display/VRAY4MAX/VRayDisplacementMod - V-ray 4 documentation
https://forums.chaosgroup.com/forum/ - Chaos Group forums
そしてこれまでの経験と実験
イラストやテストに使用されるテクスチャは、https://www.textures.com/およびhttps://texturehaven.com/から使用しています。
https://pixologic.com - Zbrush (a 3D sculpting tool ideal for creating displacement maps)
https://www.autodesk.com/products/mudbox/overview - Mudbox (a tool similar to Zbrush)
https://cpetry.github.io/NormalMap-Online/ - Free online tool for creating displacement, bump, AO, and normal maps
http://www.crazybump.com - application for automatic creation of all kind of maps from photos, including displacement
https://github.com/kmkolasinski/AwesomeBump - AwesomeBump - a free alternative to CrazyBump
https://www.foundry.com/products/mari Mari - 3D texture painting software
https://3dcoat.com - 3D model texturing software
https://3dbee.it/ - 3DBee Asset Store - high quality 3D assets (models, textures, materials)
https://garagefarm.net/blog/how-displacement-maps-work-and-how-to-optimize-them-in-v-ray-part-1