On this page |
Copy SOPと非常に似ていて、このDOPは、接続されたデータからコピーを複数作成します。
いくつかのデータノードをこのノードに接続すると、各データが指定した数だけコピーされます。
データの各コピーに対して、グローバルパラメータCY
が現行のコピー番号に設定されます。
このグローバル値は、stampエクスプレッション関数を使用して、接続されたデータノードからアクセスすることができます。
この方法により、同じデータを何度も接続することなく、データの各コピーをカスタマイズすることができます。
グローバルパラメータNCY
は、作成されるコピーの総数に設定されます。
それらの標準のグローバルパラメータに加えて、独自のグローバルパラメータも作成することができます。 CYとNCYの値は、それらのグローバルパラメータの値を決める時にローカル変数として利用可能です。
パラメータ
Number of Copies
このノードが作成する入力データ項目のコピーの数。
この値が0以下なら、このノードからデータが出力されません。 他のデータ操作ノードと同様に、このノードは、指定した時間で修正されるシミュレーションオブジェクトを常に知っています。 つまり、オブジェクト固有のローカル変数をこのパラメータに使用することで、オブジェクト単位基準でコピーの数を変更することができます。
Number of Variables
作成される入力データの各コピーに設定されるグローバルパラメータの数を設定します。
これらのグローバルパラメータは、stampエクスプレッション関数を使用することで、入力データノードからアクセスすることができます。
Variable # Name
この変数の名前。これは、この変数にアクセスするためのstampエクスプレッション関数の2番目の引数に渡されなければならない値です。
Variable Evaluation
この変数を評価する方法を制御します。
Evaluate For Each Copy
この変数の値は、データのコピー毎に計算されます。
このオプションは、グローバルパラメータの値の生成に関しては一番柔軟性がありますが、大量のコピーが伴うと一番時間がかかります。
Evaluate Once
この値の変数は、CYローカル変数が0に設定された時に1回だけ計算されます。
この手法は、各入力データがカスタマイズされなくなりますが、このノードからその上流の入力データノードまでの情報を渡すのが簡単です。
Evaluate Once, One Token Per Copy
この変数を意味するパラメータは、1度だけ評価されます。
このモードでは、 Variable Type パラメータに関わらず、 String Value が評価されます。そして、入力データの各コピーに関しては、 評価される文字列内で該当するトークンを使用して、グローバルパラメータの値を設定します。 そのトークンは、 Variable Type パラメータに応じて、floatまたは文字列の値として扱われます。 例えば、 Variable Type が Float 、 String Value が"0 1 2 3"、 Number of Copies が6と仮定します。 入力データの6つのコピーに対して設定されるグローバルパラメータの値は、0, 1, 2, 3, 0, 1になります。
Variable Type
グローバルパラメータが浮動小数点か文字列の値のどちらかを指定します。
Float
グローバルパラメータが浮動小数点になります。このグローバルパラメータの値には、入力データノードのstampエクスプレッション関数を使ってアクセスします。
String
グローバルパラメータが文字列になります。このグローバルパラメータの値には、入力データノードのstampエクスプレッション関数を使ってアクセスします。
Float Value
Float Variable Type に対して、 Variable Evaluation がEvaluate Once, One Token Per Copyでない時、 このパラメータが、このグローバルパラメータに割り当てられる値を制御します。
String Value
String Variable Type に対して、 Variable Evaluation がEvaluate Once, One Token Per Copyの時、 このパラメータには、このグローバルパラメータに割り当てられる文字列の値、一連の数値、文字列のトークンが含まれます。
入力
All
このノードの入力には、コピーされるデータを指定します。
出力
First
このノードからの出力は、指定した数の入力データのコピーを含んだデータの集まりです。
ローカル変数
CY
現行のコピー番号。この変数をエクスプレッションで使用することで、別のコピーに対して別の値を取得することができます。
NCY
作成されるコピーの総数。
ST
この値は、ノードが評価されるシミュレーション時間です。
この値は、変数Tで表現される現在のHoudiniの時間と同じではなく、DOP Networkの Offset Time と Time Scale のパラメータの設定に依存しています。
この値は、シミュレーションの開始時間がゼロになるようになっています。つまり、シミュレーションの最初のタイムステップをテストする時は、$T == 0
や$FF == 1
を使うのではなくて、$ST == 0
のようなテストを使うのがベストです。
SF
この値は、ノードが評価されるシミュレーションフレーム(正確には、シミュレーションタイムステップ番号)です。
この値は、変数Fで表現される現在のHoudiniのフレーム番号と同じではなく、DOP Networkパラメータの設定に依存しています。代わりに、この値は、シミュレーション時間(ST)をシミュレーションタイムステップサイズ(TIMESTEP)で割算した値と同じです。
TIMESTEP
この値は、シミュレーションタイムステップのサイズです。この値は、1秒あたりのユニットで表現した値をスケールするのに役に立ちますが、タイムステップ毎に適用されます。
SFPS
この値は、TIMESTEPの逆数です。シミュレーション時間の1秒あたりのタイムステップ数です。
SNOBJ
これはシミュレーション内のオブジェクトの数です。Empty Objectノードなどのオブジェクトを作成するノードでは、この値は、オブジェクトが評価される度に値が増えます。
固有のオブジェクト名を確保する良い方法は、object_$SNOBJ
のようなエクスプレッションを使うことです。
NOBJ
この値は、このタイムステップ間で現行ノードで評価されるオブジェクトの数です。 この値は、多くのノードがシミュレーション内のオブジェクトすべてを処理しないので、SNOBJとは異なります。
この値は、ノードが各オブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJ
この値は、ノードで処理される特定のオブジェクトのインデックスです。 この値は、指定したタイムステップで常にゼロからNOBJ-1まで実行されます。 この値は、OBJIDやOBJNAMEなどのシミュレーション内の現行オブジェクトを識別せず、現在の処理順でのオブジェクトの順番を識別します。
この値は、オブジェクト毎に乱数を生成するのに役に立ちます。他には、処理別にオブジェクトを2,3のグループに分けるのに役に立ちます。 この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
OBJID
この値は、処理されているオブジェクトの固有のオブジェクトIDです。 すべてのオブジェクトは、すべての時間のシミュレーション内のオブジェクトすべてで固有な整数値が割り当てられています。たとえオブジェクトが削除されても、そのIDは決して再利用されません。
オブジェクトIDは、指定したオブジェクトを固有なものと識別するために常に使われています。 オブジェクトIDは、オブジェクト毎に別々の処理をさせたいシミュレーションで非常に役に立ちます。 オブジェクト毎に固有の乱数を生成するのにも使われます。
この値は、dopfieldエクスプレッション関数を使って、オブジェクトの情報を検索するのにベストな方法です。 この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
ALLOBJIDS
この文字列には、現行ノードで処理されているオブジェクトすべての固有のオブジェクトIDをスペース区切りにしたリストが含まれています。
ALLOBJNAMES
この文字列には、現行ノードで処理されているオブジェクトすべての名前をスペース区切りにしたリストが含まれています。
OBJCT
この値は、現行オブジェクトが作成された時のシミュレーション時間(変数STを参照)。
そのため、オブジェクトが現在のタイムステップで作成されたかどうかチェックするには、$ST == $OBJCT
のエクスプレッションが常に使われます。
この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJCF
この値は、現行オブジェクトが作成された時のシミュレーションフレーム(変数SFを参照)。
この値は、OBJCT変数にdopsttoframeエクスプレッションを使ったものと等価です。この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJNAME
これは、処理されているオブジェクトの名前を含む文字列の値です。
オブジェクト名は、シミュレーション内で固有であることが保証されていません。 しかし、オブジェクト名が固有になるように注意して名前を付けていれば、オブジェクトの識別は、オブジェクトIDよりも、オブジェクト名を指定するほうが簡単です。
オブジェクト名は、同じ名前を持つオブジェクトの数を仮想グループとして扱うこともできます。
"myobject"という名前のオブジェクトが20個あれば、DOPのActivationフィールドにstrcmp($OBJNAME, "myobject") == 0
を指定すると、DOPがその20個のオブジェクトのみを操作します。
この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら空っぽの文字列を返します。
DOPNET
これは、現在のDOP Networkのフルパスを含む文字列です。 この値は、ノードを含むDOP Networkのパスを知りたりDOPサブネットのデジタルアセットで非常に役に立ちます。
Note
ほとんどのダイナミクスノードには、そのノードのパラメータと同じ名前のローカル変数があります。 例えば、Positionノードでは、以下のエクスプレッションを記述することができます:
$tx + 0.1
これはオブジェクトをタイムステップ毎にX軸方向に0.1単位分移動させます。