Shader Array

Node Type: Colour Shader

ノード説明と目的:

『Shader array』は、シェーダの配列またはグリッド(格子)を作成します。ポピュレーションのようなランダム配置ではなく、規則的な間隔を空けて配置されたグリッド上で動作しますが、シェーダ用のポピュレーションと捉えても差し支えありません。 『Shader array』は、1つのシェーダを取り入れ、異なる位置に複数回シェーダを複製します。

『Shader array』は、3Dプレビューの中に非常に多くの情報を示します。配列における各シェーダのインスタンスの位置にオレンジ色の点を描画します。その点は配列のエリアをボックスで囲みます。"Limit effect are"にチェックを入れた場合、配列エリアに"Boundary padding"を加えた広さを示す破線を描画されます。デフォルトでは、『Shader array』は配列の各隅にシェーダインスタンスを表示します。すべてのシェーダインスタンスをプレビューする事が出来ますが、これは3Dプレビューが遅くなり操作し辛くなります。

下の画像は、"Row(行)"と"Columns(列)"の関係と、『Shader array』の全体的なレイアウトを示しています。この配列は3行4列です。シェーダはオレンジ色の点で表されます。
現在、『Shader array』は、垂直方向に真っすぐの"Plan Y"投影にのみ適用されます。

動作の諸注意: 『Shader array』は、特に多数の行と列がある場合、速度が遅くなる可能性があります。10×10の配列には100個のシェーダがあります。100×100の配列になると、10,000個分ものシェーダ計算をする事になります。最も効率的なシェーダは、『Simple shape shader』や『Image map shader』のように効果がエリア内に制限されたシェーダです。動作を向上するために、"Limit effect area"や"Boundary padding"の設定を使って、『Shader array』の効果範囲を制限する事も出来ます。

サンプルファイル:

このプロジェクトファイルは、『Shader array』を使用して『Simple shape shader』のグリッドを作成するサンプルです。プロジェクトファイルは右クリック(Windows)"で名前を付けてリンク先を保存"、またはOptionキー(Mac)を押して直接ダウンロードして下さい。
Shader_array_example.tgd

設定

Position 位置 『Shader array』ノードの配列を設置する左下角の座標を設定します。
Rotation 回転 このパラメータは、左下角を基準に配列の回転角度を設定します。回転は、Y(垂直)軸を中心にのみ回転する事が出来ます。
Number of columns 列数 配列の列数を設定します。
Column spacing 列間 列間の距離を設定します。単位はメートル。
Number of rows 行数 配列の行数を設定します。
Row spacing 行間の距離を設定します。単位はメートル。
Limit effect area 効果エリアの制限 チェック時、シェーダの効果は配列で囲まれたエリア外には適用されません。"Boundary padding"設定を使用して、このエリアを拡張する事が出来ます。
Boundary padding 境界の拡張 この設定は、"Limit effect area"がチェック時、配列の境界付近のエリアを拡張します。これは、下の画像のように配列が任意のエリアからはみ出さないようにコントロールする場合に便利です。基本的には、境界の拡張部分一杯まで配列を埋め込みます。

左画像に比べて右画像は、『Simple shape shader』の円の大きさ1000に比べて100の値のため、制限エリアから100メートルを超える円は切り取られてしまいます。(画像はレンダリング結果画像を3Dプレビュー画像の上に半透明で重ねた加工画像です。)
Shader シェーダ 配列に使用するシェーダを設定します。
Use shader colour for displacement ディスプレースメントにシェーダのカラーを使用 チェック時、『Shader array』は関連付けたシェーダのディスプレースメント情報を使用するのではなく、カラー情報を使用してディスプレースメントを生成します。これは、関連付けたシェーダが実際にディスプレースメント処理しない場合に特に便利です。
Displacement direction ディスプレースメント方向 ディスプレースメント方向を選択します。右のポップアップは、ディスプレースメントが適用される方向を選択する事が出来ます。ポップアップリスト内の "(requires computed normal)"オプションは、ノードネットワーク上で接続された『Compute Terrain』または『Compute Normal』が適切に動作する事を必要とします::
-Along vertical: ディスプレースメントは、変位を適用する元となるオブジェクト(すなわち、惑星またはモデル)の法線に沿って生じます(デフォルトの場合、『Planet』の平面上からの変位なので"垂直"に生じます)。
-Along normal: ディスプレースメントは現在のシェーダの法線に沿って生じます。
-Vertical only (requires computed normal): ディスプレースメントは、元となるオブジェクト(すなわち、惑星またはモデル)の法線に沿ってのみ生じます。ディスプレースメントは、オブジェクト法線(プリミティブオブジェクト、デフォルトでは『Planet』オブジェクトの法線)とサーフェス法線(作成したサーフェスによって生成された法線)の差でスケーリングされます。ディスプレースメントは、法線間の角度が90度に近づくにつれて減少します。
-Lateral only (requires computed normal): ディスプレースメントは、側面の平面内でのみ、すなわち下層のオブジェクトの法線に対して直角にのみ生じます。
-Lateral normalized (requires computed normal): これは上記と同じですが、法線は統一化されています(長さが1になるようにスケーリングされます)。
Displacement amplitude ディスプレースメント振幅 この値でディスプレースメントの振幅を決定します。
Displacement offset ディスプレースメントのオフセット この値は、"Displacement multiplier"パラメータで乗算された後に、ディスプレースメントの入力値に加算されます。これにより、ディスプレースメント方向に沿った設定量だけディスプレースメントをオフセットする効果が生じます。正の値はディスプレースメントを押し出して、それが台座に座っているかのように見えます。負の値は、ディスプレイスメントが表層の中に沈みます。それはディスプレースメントを逆にするのではなく、むしろ表層に穴を作り、穴の底にディスプレースメントを適用する事に近いです。
Preview all instances (slow) すべてのインスタンスをプレビュー表示 『Shader array』のデフォルトの動作は、グリッドの四隅のみシェーダインスタンスをプレビュー表示します。つまり、最大で4つのインスタンスが表示されます。これがチェックされている場合、『Shader array』は3Dプレビューのグリッド内にすべてのシェーダインスタンスを表示します。これは、特に行数と列数が多い場合、処理が遅くなる可能性があります。

この画像の場合、地形の配列はすべてのシェーダインスタンスのプレビューを表示し、テクスチャの配列はデフォルトの四隅にのみシェーダインスタンスのプレビューを表示しています。