Visualise Normal

Node Type: Colour Shader

ノード説明と目的:

『Visualize normal』は、3DベクトルのRGB描写(サーフェス法線またはテクスチャ座標)を与えるシェーダです。RGB色の構成要素に対してベクトルのXYZ座標がそれぞれ、R=X、G=Y、B=Zとなります。RGB成分が0から1(8ビットの場合0-255の整数)に対してベクトルXYZは小数点を含む-1から+1までなので、このままでは負の値を扱えないRGBに対応出来ません。そこで、RGB成分の0-127を負の数値、128を0、129-255を正の数として、サーフェス法線値の-1を0、0を128、+1を255として補完し、RGBの可視範囲0から1に再マッピングされます。
例えばグレースケールの地形データから黒部分を法線マップに変換すると、RGB(0、0、0)は法線マップのXYZ座標で(0、0、1)となり、法線マップRGBで(128、128、255)となり青紫色の画像(=「青マップ」と呼ばれます)が出来上がります。

『Visualize normal』の用途としてあり得る1つとして、地形の法線マップのレンダリングをエクスポートを必要とする場合。これは、【Shaders】グループの最後のノードとして設定し、"Luminous"にチェックを入れて"Diffuse"は無効にします。大気と照明は無効にします。

Diffuse 拡散色 拡散色を使って法線マップの変換を行います。
Luminous 発光 発光色を使って法線マップの変換を行います。
Flip X X値を反転 値の反転、つまり1の場合は-1に、-1の場合は1に反転する事で、ビューから見えない反対側の法線を表示する事が出来ます。


↑画像の立方体の法線マップ展開図
Flip Y Y値を反転
Flip Z Z値を反転

例えば、ゲームエンジンの背景用として法線マップを作成する場合、公式フォーラムで別の方法で法線マップを作成するサンプルプロジェクトが挙げられています。
Visualise normals based on camera space/view vector?