Vector Displacement Shader

Node Type: Displacement Shader

ノード説明と目的:

『Vector Displacement Shader』は、ベクトルを用いてサーフェスを任意の方向にディスプレースメントさせるために使用する事が出来ます。このベクトルは、関数入力から取得したベクトル、定数ベクトルオフセット、またはその両方を組み合わせる事も可能です。

ノードパラメータは2つの主なグループに属します。"Function Vector"パラメータは、ベクトル関数入力から取得されたベクトルに適用されます。2番目のグループは"Offset Vector"パラメータです。各オフセットパラメータを単独で使用して、ディスプレースメントに一定のオフセットを適用する事が出来ます。効果を得るためにベクトル関数を指定する必要がありません。

このノードは、関数ネットワークを使用してサーフェスにディスプレースメントを適用する時に特に便利です。通常、関数ネットワークがディスプレースメントに使用されるシェーダ入力に接続されている場合、ファンクションノードはシェーダのようにディスプレイスメントを直接変更する事が出来ないため、効果を確かめる事は出来ません。『Vector Displacement Shader』は、その欠落部を埋める事ができ、関数ネットワークの出力を取得してそれをディスプレースメントに変換する事が出来ます。

設定

Vector function ベクトル関数 このフィールドは、ディスプレースメントに変換したい関数を接続する場所です。入力はベクトルを想定しますが、インプットノードの型変換で説明されている型変換規則に従って他の入力型を変換します。この入力ベクトルは、ベクトルオフセットも同時に入力する事が出来ます。
X function multiplier X関数の乗算 "X function multiplier"は、ベクトル関数入力から得られたX値と乗算します。
"Y function multiplier"は、ベクトル関数入力から得られたY値と乗算します。
"Z function multiplier"は、ベクトル関数入力から得られたZ値と乗算します。
"Reverse function"は、チェック時、ベクトル関数入力から得られた値を反転します。即ち、ベクトルの各要素の符号が変わります。これは、ベクトル値が上記の関数乗数値で乗算された後に起こります。

X、Y、Zそれぞれの"function multiplier"値に(5, 20, -5)を設定し、右画像は"Reverse function"にチェックを入れ値を反転させたものです。
Y function multiplier Y関数の乗算
Z function multiplier Z関数の乗算
Reverse function 関数を反転
X offset Z軸のオフセット X軸に沿ってのディスプレースメントを移すオフセット位置をコントロールします。
Y offset Y軸のオフセット Y軸に沿ってのディスプレースメントを移すオフセット位置をコントロールします。このシェーダでは、画像がどの位置に存在するのかが特定できないため、Y値はイメージマップから特定の位置に画像を投影した場合(例えば、"Plan Y")、オフセットする基準値を画像の範囲内に収める事が出来ず、『Image Map Shader』で投影された画像の範囲外は0(画像無し=黒)として判断されます。限られたエリアに投影されている画像を使用していて、画像内の別のゼロ点を調整する必要がある場合(8または16ビットなどの低ダイナミックレンジの画像がある場合など)値が(0..1)の範囲に制限されている場合は、ゼロ変位が黒になるように、すべての値をオフセットするように前もって画像を編集する必要があります。画像編集ソフトウエアでEXR形式のディスプレースメント画像をエクスポートする場合、黒が0のディスプレースメントを意味し、負のディスプレースメントが負のピクセルを持つ事を確認する必要があります。
EXRを画像ビューアで読み込んだ時の背景面(像の存在しない場所)が灰色であるならば、-0.5のオフセットを必要とします。『Image Map Shader』はデフォルトで、低ダイナミックレンジ(8または16ビット)画像を2.2のガンマで変換する必要があると想定しています。EXRの場合は、ガンマ補正を必要としないため、『Image Map Shader』の「colour」タブで"data is linear"にチェックを入れる事で、ガンマ補正とベクトルが不正確になる事を回避します。そして、同タブ内の"Offset RGB"に、(-0.5, -0.5, -0.5)を設定します。

左図は『Image Map Shader』でデフォルトで画像を読込むと、"Convert to linear"になっています。中央画は、"Data is linear"に変更しました。ガンマ補正されないため、画像が非常に明るくなり、また背景色が灰色となり正確なベクトルが抽出出来ません。右図は"Offset RGB"で、それぞれの値に(-0.5、 -0.5、 -0.5)を設定する事で背景色は黒色(0)となり、ベクトル地形のみ抽出する事が出来ます。

サンプルデータファイル
参照フォーラムTpic: Vector Displacement Shader : The offsets
Z offset Z軸のオフセット Z軸に沿ってのディスプレースメントを移すオフセット位置をコントロールします。
Reverse offset オフセットを反転 チェック時、オフセット入力から得られた値を反転します。即ち、ベクトルの各要素の符号が変わります。
Final multiplier 最終乗算 計算されたディスプレースメントベクトル(ベクトル関数および/またはオフセット)は、現在のサーフェスのディスプレースメントに追加される前の最後の工程として、この値で乗算します。