On this page |
概要 ¶
Gather VOPは光線をシーンに送ります(光線の数はsamples
入力により制御されます)。
入力をGatherノードに追加することで、光線が当たったサーフェスから必要な情報を指定します。
Gatherノードはサブネットワークを格納します(中に入るにはノードをダブルクリックします)。
サブネットのVOPを接続して、入力値に関する操作を行えます。
例えば、光線が当たったサーフェスのカラー(
Cf`アトリビュート)を合計するといった操作です。
Gather VOPはループのように動作します。 内側のサブネットは、すべてのサンプルに対して実行されます。 追加の入力を接続して、光線が当たったサーフェスからインポートする値や、ループの変数として使用する値を指定することができます (例えば、光線が当たった各サーフェスからインポートした値に対するアキュムレータとして使用することができます)。
入力を追加して光線が当たったサーフェスから値をインポートする ¶
入力を追加して値をGather VOPへインポートする操作は、あまり直感的には実行できません。
-
入力変数を単にGatherノードへ追加するには、(Constant VOPのような)VOPをGatherノードの
next
入力へ接続して、入力を追加します。他の入力を行なう前に、サーフェスシェーダからインポートする予定の変数を意味する入力を追加します。
Tip
Gather VOPは、入力するワイヤーの出力ラベルを使用して、その入力にラベルを付けます。 したがって、入力に重要な名前を付けるには、Constant VOPのパラメータで Constant name パラメータを設定します。
例えば、Constant VOPのパラメータで、
Cf
のインポートに使用する入力を作成するために、Constant VOPを接続している場合、 Constant name をCf_import
のような名前に設定します。 -
Gather VOPのパラメータインターフェースで Number of imports パラメータを使用して、光線が当たったサーフェスからのインポートを表す入力数を設定します。
例えば、5つの追加入力を接続して、 Number of inputs を3に設定する場合、最初に追加された
3つ
の入力はインポートを意味し、その後の2つの入力はインポートしない変数になります。 -
インポートするそれぞれの変数については、Gather VOPのパラメータインターフェースで、それに対応するテキストボックス(例: Import 0 、 Import 1 など)を、 光線が当たったサーフェスからインポートしたい変数の名前に設定します。
これは、サーフェスのアトリビュート名か、サーフェスシェーダのエクスポートされたパラメータの名前になることがあります。 また、特別な変数名、つまり
ray:origin
やray:direction
、ray:length
のような名前を使用して、光線自体に関する情報のインポートもできます。テキストボックスの右にあるメニューボタンを使用すると、一般的なインポートのリストからすばやく選択ができます。
Surface color (
Cf
)光線が当たったサーフェスの
Cf
(拡散カラー)。Surface opacity (
Of
)光線が当たったサーフェスの
Cf
(不透明度)。Ray origin (
ray:origin
)光線の実際の原点。
Ray direction (
ray:direction
)(円錐を使用した)光線の実際の方向。
Ray length (
ray:length
)光線が当たったサーフェスまでの光線の長さ。
サブネットワークと出力 ¶
Gather VOPをダブルクリックすると、サブネットワークの中に入ります。このサブネットワークは、サーフェスに当たったすべての光線に対して実行されます。
-
subinput
ノードは、Gather VOPの入力からの値を提供します。 -
VOPを
suboutput
ノードに接続して、Gather VOPのの出力として使用できるようにします。
サンプル ¶
光線が当たったすべてのサーフェスのカラーを合計するには:
-
2つのConstant VOPsを作成します。パラメータエディタで、両方のノードの Constant type を“Color”に設定します。
-
2つのConstantノードを追加入力としてGather VOPへ接続します(Gather VOPの
next
入力へつなぎます)。 -
1番目のConstantノードのパラメータで、 Constant name を
Cf_import
に設定します。2番目のConstantノードのパラメータで、 Constant name をsum
に設定します。 -
Gather VOPのパラメータで、 Number of imports を
1
に、 Import 0 をCf
に設定します。 -
Gather VOPノードをダブルクリックして、そのサブネットワークの中に入ります。
-
Add VOPを作成します。
-
subinput
ノードの_Cf_import
および_sum
をAddノードに接続します。 -
Addノードの
sum
出力をsuboutpu
ノードの_sum
コネクタへ接続します。 -
((U)を押すか、ネットワークエディタの上部にあるパスのコントロールでクリックして戻ります。
Gatherノードに
_sum
出力ができあがりました。
サーフェスに当たらなかった光線 ¶
現段階では、サーフェスに当たらなかった光線はGather Loop VOPで処理できません。 処理の必要がある場合、独自のVOPを作成するか、Inline VOPを使用します。
パラメータ ¶
Number of imports
追加する入力(つまり、VOPをnext
入力へ接続することで追加する入力)の数で、光線が当たったサーフェスから変数をインポートして、値を取得します。
例えば、5つの追加入力を接続して、 Number of inputs を3に設定している場合、最初に追加された3つ
の入力はインポートを意味し、その後の2つの入力はインポートしない変数になります。
入力 ¶
Gatherループには、固定長セットと可変長セットの2つの入力セットがあります。固定長セットの入力は下記のとおりです。
P
光線の原点です。デフォルトはグローバルP
変数です。
dir
光線の方向(正規化する必要があります)。デフォルトはグローバルN
変数です。
angle
サンプルする円錐角度です。デフォルトは0
です。
samples
送出するサンプル(光線)の数です。デフォルトは1
です。
bias
光線のバイアスです。デフォルトは0.05
です。
maxdist
それぞれの光線が止まる前に伝播できる最大距離です。-1
の値は、最大距離がないという意味です。デフォルトは-1
です。
出力 ¶
Gatherノードのサブネットワークにあるsuboutput
ノードへ接続した入力に対して、出力がGather VOPで表示されます。
See also |