ディスプレイスメント マップはバンプ マップに似ていますが、イメージ マップに従って実際にオブジェクトのレンダリング後のジオメトリを変更します。これにより、隆起、尾根、あるいはその他のサーフェイス バリエーションが作成され、ディスプレイスメントを適切に追うシャドウが投影されます。
ディスプレイスメント マップは、オブジェクトの法線方向に各ポイントをディスプレイスメントするスカラ マップです。ジオメトリは、レンダリング プロセス中にこのマップに従ってゆがめられます。実際のテクスチャのように見せた通常のバンプ マッピングとは異なり、エッジは盛り上がって見え、ディスプレイスメント エフェクトに従ってシャドウを投影することもできます。ディスプレイスメントは、レンダリング プロセス中にオブジェクトのジオメトリに作用します。
Render Tree を開き([7]キーを押す)、オブジェクトの[Material]ノードを展開して、[Displacement]ポートを表示します。
Render Tree の[ノード](Nodes)メニューで、ディスプレイスメント マップとして使用するテクスチャを選択します。イメージに接続し、必要に応じてテクスチャ プロジェクションを選択します。詳細については、「テクスチャを適用する」を参照してください。
テクスチャ ノードの出力を[Material]ノードの[Displacement]パラメータの入力に接続します。
テクスチャ ノードのカラー出力と[Displacement]入力のスカラ入力に直接的な互換性がない場合でも、Render Tree では、[Color2Scalar]ノードを自動的に挿入してこれらの入力を接続します。
「ジオメトリ アプロクシメーションを適用および編集する」(「シーン エレメント」)の説明に従ってジオメトリ アプロクシメーション プロパティを適用または編集し、[ディスプレイスメント]タブで目的のオプションを設定します。
特に、[最大ディスプレイスメント](Max Displ)を設定します。オブジェクトに許可するディスプレイスメントの最大数を指定します。値がゼロの場合は、ディスプレイスメントが無効になり、ゼロ以外の場合は、ディスプレイスメント量が制限されます。オブジェクトのディスプレイスメントがこの値を超えると、この値にクリップされる(ジオメトリに穴を作成しない)ため、このパラメータを正しく設定することは[非常に重要](critical)です。ディスプレイスメント レベルが目的のレベルに達するよう、最大ディスプレイスメント値は十分に高い値を設定してください。
すべてのオプションの詳細については、「[ジオメトリアプロクシメーション]プロパティ エディタ」(「プロパティ リファレンス」)を参照してください。
ディスプレイスメントが適用されると、通常は強度を調整する必要が出てきます。強度の調整は、[ノード](Nodes) [イメージ処理](Image Processing) [強度](Intensity)シェーダを選択します。
ディスプレイスメントを作成するテクスチャ シェーダおよび[Color2Scalar]ノード間で、強度シェーダを接続します。
強度シェーダをダブルクリックしてプロパティ エディタを開き、[係数](Factor)パラメータを調整してオブジェクトのディスプレイスメントの強度をコントロールします。
オブジェクト上のディスプレイスメント マップは、オブジェクトのレンダリングされたジオメトリ(ワイヤフレームではありません)に影響します。このように、ギザギザのディスプレイスメント マップ(上の図など)は、テクスチャのシャドウのギザギザの原因となります。ディスプレイスメントのコントロールは、マテリアル ノードと、ディスプレイスメントの作成に使用するテクスチャとの間に配置された[Intensity]シェーダで行います。
ディスプレイスメントを使用して移動するオブジェクトでは、[mental ray Render Options]プロパティ エディタ(プロパティ リファレンス)の[レンダタイプ]タブで[シャッター設定]オプションを設定することにより、オブジェクトの移動速度に応じてディスプレイスメント アプロクシメーションを最適化できます。移動オブジェクトのディスプレイスメントの詳細の自動削減は、膨大なテッセレーションのデータ量を大きく削減でき、レンダリング処理とメモリ容量に大きく影響します。
移動させたジオメトリには適用されたジオメトリ アプロクシメーション プロパティが含まれ、モーション ブラーがレンダ領域やレンダ パスで有効になる必要があります。「モーション ブラーを定義およびレンダリングする」(「カメラとモーション ブラー」)を参照してください。
このセクションでは、ディスプレイメントを作成するために Render Tree で構築できるシェーダ ネットワークの例を挙げます。
例 1: アルファ チャンネルを使用してディスプレイスメント マップを作成する
この例では、イメージのアルファ チャンネルを使用して、オブジェクト上にディスプレイスメント マップを作成します。オブジェクトのディフューズ値またはスペキュラ値を操作するのに、同じテクスチャを使用する必要はありません。また、係数スライダを使用すれば、アルファを単独でコントロールすることができます。
この例ではディスプレイスメントを作成していますが、バンプ マップを作成するのも、アルファを使用してテクスチャを定義するのも同じように簡単です。
例 2: フラクタルを使用してディスプレイスメントを作成する
マテリアル ノードのディスプレイスメント入力は、リアルなディスプレイスメント マップやアニメートを作成する上で重要です。この例では、簡単な NURBS グリッドにやや多数のサブディビジョンを使用しています。
このチョコレートのようなサーフェイスは、簡単なフラクタル プロシージャル シェーダを使用して作成されたものです。必要なフラクタル値が取得されると、強度シェーダによりディスプレイスメント全体がコントロールされます。