ディスプレイスメント

概要

JSplacement からのディスプレイスメント テクスチャ マップ
イメージの上にカーソルを合わせると、ディスプレイスメントなしの状態を確認できます。

 

ディスプレイスメント マップは、標準のモデリング方法を使用すると非常に長い時間がかかるサーフェスのディテールを追加するための優れたツールです。 ディスプレイスメント マッピングは、ジオメトリを変更し、正確なシルエットやセルフ シャドウイングの効果があるという点で、バンプ マッピングとは異なります。 入力のタイプに応じて、ディスプレイスメントは 2 つの方法で発生します。浮動小数点、RGB、および RGBA 入力は法線に沿ってディスプレイスメントを行い、ベクトル入力はベクトルに沿ってディスプレイスメントを行います。

上記の例では、ディスプレイスメント マップを追加した単純なプレーンが、単調なシーンを興味深く見せる方法を示しています。

ベース メッシュ ジオメトリに十分な数のポリゴンがあることを確認する必要があります。そうしないと、ディスプレイスメントされた低解像度のジオメトリとその生成元である高解像度のメッシュの間に微妙な差が生じる可能性があります。

必ず 32 ビットまたは 16 ビットの浮動小数点形式を使用してイメージを保存し、整数形式は使用しないでください。整数形式は正しく機能しません。 これは、整数形式が負のピクセル値をサポートしないためです。一方、浮動小数点のディスプレイスメント マップでは負のピクセル値を使用します。

サブディビジョン タイプを Catclark またはリニア サブディビジョン ルールのいずれかに変更し、反復の値を大きくすると、ディスプレイスメントの品質が向上します。 この例では、サブディビジョンの反復は 8 に増やされています。

サブディビジョンの反復の数を増やすときには注意する必要があります(反復のたびにジオメトリが 4 倍になります)。 レイがオブジェクトのバウンディング ボックスに当たると、このサブディビジョンがレンダリング時に発生します。 これは、DCC ソフトウェア内のメッシュのサブディビジョンを増やす(この場合、テッセレーションされたジオメトリがレンダラに送信されます)ことと比較すると、より適切な選択肢です。


arnold_displacement_settings

ディスプレイスメントは面単位またはオブジェクト単位で設定できます。 ただし、ディスプレイスメント ノードの Arnold アトリビュートに入力された値によって、それらの設定はオーバーライドされます。 オブジェクトごとに複数のディスプレイスメント シェーダを使用する場合、オブジェクトは境界パディングの値を 1 つだけ持つことができるため、Arnold はすべての中から最大値を選択します。 パディングと同様に、自動バンプでも同じ問題が生じます。そのため、少なくとも 1 つのディスプレイスメント シェーダが自動バンプを有効にしている場合、Arnold はこれを有効にします。 

 

height

ディスプレイスメントの量を制御します。 ディスプレイスメントの高さには正の値または負の値を指定できます。 このアトリビュートは通常のディスプレイスメントとともにのみ適用されます。 書き出されるディスプレイスメント マップと低解像度のジオメトリの間の矛盾を相殺するために、この値を使用できます。

 

bounds_padding

パディングは、ディスプレイスメント シェーダからの追加のディスプレイスメントを含めることができるように、オブジェクトのバウンディング ボックスを拡張する度合いを定義します。 レイが初めてバウンディング ボックスにヒットしたときに、ディスプレイスメントが計算されます。そのため、意味もなく高い値を設定すると、レンダリングの効率が低下します。 一方、値が低いと、ディスプレイスメントされたメッシュのクリッピングが行われる可能性があります。

Arnold で適切なディスプレイスメントのワークフローを実行するには、シェーダに最終ディスプレイスメント値を指定してから、Bounds Padding アトリビュートを使用してバウンディング ボックスのオフセットを設定することをお勧めします。

 

zero_value

これは、ディスプレイスメント量にシフトとして適用される浮動小数点値です。 ゼロのディスプレイスメントと見なされるディスプレイスメント マップの値を定義します。 この値はディスプレイスメント マップが生成された方法によって異なります。

 

autobump

自動バンプは、高周波のディスプレイスメント マップをバンプ アトリビュートに組み込んで、その数のサブディビジョンの反復値が必要にならないようにします。 自動バンプは既定でのみカメラ レイに表示されます。表示パラメータにより、自動バンプを他のレイで表示することができます(例: Specular および Transmission)。ただし、レンダリングに要する時間が増えます。

自動バンプ アルゴリズムがサーフェス接線を計算するには UV 座標が必要です。 ポリメッシュに UV セットが適用されていることを確認してください。

 

技術情報:

自動バンプを有効にすると、Arnold はディスプレイスメントの前にメッシュのすべての頂点をコピーします(これを「参照」メッシュまたは Pref と言います)。 ディスプレイスメントされるサーフェス P 上のいくつかのサーフェス ポイントでシェーディングする前に、そのポイントの同等の Pref が、ディスプレイスメントされていないサーフェス上で検出されます。ディスプレイスメント シェーダはそこ(Pref)で評価され、極端に高いテッセレーション レートでポリメッシュをサブディバイドしていた場合は、P における同等の法線が推定されます。

Arnold の自動バンプと、バンプ マッピングにディスプレイスメント シェーダを使用することの主な違いは、自動バンプは Pref にアクセスするのに対し、bump2d は Pref にアクセスすることはなく、ディスプレイスメント量を増やすことができる既にディスプレイスメントされたポイントでディスプレイスメント シェーダを実行します。

追加のストレージは、ディスプレイスメントの前に P をコピーする目的でのみ使用できます。 ディスプレイスメント マップの解析はありません。Arnold は、高周波スパイクに「当たる」かどうかに関係なく、頂点がディスプレイスメント マップ(またはプロシージャル)のどこに「配置」されているかに基づいてのみ頂点をディスプレイスメントします。


 

vector_displacement

Mudbox からの耳の接線空間ベクトル ディスプレイスメント マップ
耳のベクトル ディスプレイスメント マップを使用してディスプレイスされたポリゴン プレーン

 

従来のディスプレイスメントマップは、サーフェスをベースメッシュのポリゴンに対して垂直な方向にのみ変位させることができます。ベクトル ディスプレイスメント マップは、フェース法線以外の方向にも変位をさせることができるため、非常に柔軟です。ベクトル ディスプレイスメントでは、特定の空間のベクトルを指定するカラーチャネルを使用して、その方向と大きさでジオメトリの頂点のディスプレイスメントを行います。


  • No labels