On this page |
概要 ¶
Gather VOPはシーンに光線を送信します(光線の数は、samples
入力で制御します)。
入力をGatherノードに追加することで、ヒットサーフェスから欲しい情報を指定します(以下参照)。
Gatherノードにはサブネットワークが含まれています(中に入るには、このノードをダブルクリックします)。
サブネット内でVOPを接続することで、入力値を操作することができます。例えば、ヒットサーフェスのカラー(Ci
アトリビュート)を合算することができます。
Gather VOPはループのように動作します。 中にあるサブネットは、すべてのサンプルに対して実行されます。 追加入力を接続することで、ヒットサーフェスからインポートする値を指定したり、値をループの変数として使用することができます(例えば、各ヒットサーフェスからインポートした値を累積することができます)。
入力の追加とヒットサーフェスからの値のインポート ¶
Gather VOPへ入力を追加して値をインポートするのは、若干直感的ではありません。
-
単にGatherノードに入力変数を追加するには、VOP(例えば、Constant VOP)を、入力を追加するGather VOPの
next
入力に接続します。他の入力よりも前にサーフェスシェーダからインポートしたい変数を意味する入力を追加します。
Tip
Gather VOPは、入力ワイヤーの出力ラベルを使用して、入力にラベルを付けます。 そのため、Constant VOPのパラメータで入力に意味のある名前を付けるには、 Constant name パラメータを設定します。
例えば、
Ci
のインポートに使用する入力を作成するためにConstant VOPを接続するのであれば、Constant VOPのパラメータで、 Constant name をCi_import
のようなものに設定します。 -
Gather VOPパラメータインターフェースの Number of imports パラメータを使用して、ヒットサーフェスからのインポートを意味する入力の数を設定します。
例えば5つの追加入力を接続し、 Number of inputs を
3
に設定すると、最初の3つの追加入力がインポートを意味し、残りの2つの追加入力はインポートされない変数となります。 -
インポートされる各変数に対して、Gather VOPのパラメータインターフェースで、それらに該当するテキストボックス(例えば、 Import 0, Import 1, など)をヒットサーフェスからインポートしたい変数の名前に設定します。
“shadertype:varname”を使えば、シェーダから変数をインポートすることができます。例えば、“volume:Ci”や“surface:P”。
“primitive:varname”を使えば、シェーダ実行前に、ヒットサーフェス上のvarnameの値を取得することができます。例えば、“primitive:P”。
“attribute:name:value”を使えば、ヒットプリミティブにバインドされたステートからアトリビュートを取得することができます。例えば、“attribute:user:myproperty”。
“ray:element”を使えば、現行サンプルに関連した特定の光線の詳細を取得することができます。例えば、“ray:origin”。
詳細は、gather()ステートメントのRSLヘルプを参照してください。
テキストボックスの右側にあるメニューボタンは、よく使われるインポートのリストを簡単に選択することができます:
Surface color (
Ci
)ヒットサーフェスの
Ci
(Diffuseカラー)。Surface opacity (
Of
)ヒットサーフェスの
Of
(不透明度)。Ray origin (
ray:origin
)光線の実際の原点。
Ray direction (
ray:direction
)光線の実際の方向(円錐付き)。
Ray length (
ray:length
)ヒットサーフェスまでの光線の長さ。
サブネットワークと出力 ¶
Gather VOPをダブルクリックすると、サブネットワークの中に入ります。このサブネットワークは、すべての光線ヒットに対して実行されます。
-
subinput
ノードは、Gather VOPの入力からの値を用意します。 -
VOPを
suboutput
ノードに接続すれば、それらのVOPがGather VOPの出力として利用可能になります。
サンプル ¶
すべてのヒットサーフェスのカラーを合算するには:
-
Constant VOPを2つ作成します。パラメータエディタで、両方のノードの Constant type を“Color”に設定します。
-
2つのConstant VOPを追加入力としてGather VOPに接続します(それらのVOPをGather VOPの
next
入力に接続します)。 -
1番目のConstant VOPのパラメータで Constant name を
Ci_import
に設定します。2番目のConstant VOPのパラメータで Constant name をsum
に設定します。 -
Gather VOPのパラメータで、 Number of imports を
1
、 Import 0 をCi
に設定します。 -
Gather VOPノードをダブルクリックして、サブネットワークの中に入ります。
-
Add VOPを作成します。
-
subinput
ノードの_Ci_import
と_sum
をそのAddに接続します。 -
Addノードの
sum
出力をsuboutput
ノードの_sum
コネクタに接続します。 -
Uを押すか、ネットワークエディタの上部にあるパスコントロールをクリックして、上位に戻ります。
これでGatherノードに
_sum
出力ができました。
見失った光線 ¶
現在のところ、見失った光線をGather Loop VOPで制御することができません。その光線を制御する必要があるなら、独自のVOPを作成するか、またはInline VOPを使用する必要があります。
パラメータ ¶
Number of imports
追加入力(つまり、VOPをnext
入力に接続することで追加する入力)の数。これらの入力は、ヒットサーフェスから変数をインポートすることで値を取得します。
例えば5つの追加入力を接続し、 Number of inputs を3
に設定すると、最初の3つの追加入力がインポートを意味し、残りの2つの追加入力はインポートされない変数となります。
入力 ¶
Gather Loopには、固定セットと可変セットの2つの入力セットがあります。固定入力は以下の通り:
category
光線のカテゴリ。デフォルトは“illumination”です。
P
光線の原点。デフォルトはグローバルP
です。
dir
光線方向(これは正規化してください)。デフォルトはグローバルN変数です。
angle
サンプリングする円錐角度。デフォルトは0
です。
samples
送信するサンプル(光線)の数。デフォルトは1
です。
出力 ¶
出力は、Gatherノードのサブネットワーク内のsuboutput
ノードに入力を接続すると現れます。