On this page |
このDOPは、接続されたデータを複数回適用します。 その接続されたデータが呼び出しの度に固有の名前を生成すると、これは、その度にこのノードの名前でコピーを作成します。
作成されるデータにバリエーションを加えたいのであれば、stamp
やstamps
のエクスプッションを使用することで、現在の反復にアクセスすることができます。
Copy Dataには2つのモードがあります。
ジオメトリモードは、SOPノードをソースとして使用します。
そのジオメトリ内のポイント毎にパスが実行されます。
それぞれのスカラーアトリビュートと文字列アトリビュートは、その名前でスタンプされます。
それぞれのベクトルアトリビュートは、name.x
、name.y
、name.z
でスタンプされます。
明示モードは、実行したいスタンプ変数のリストを指定することができます。
それらのスタンプ値を決める時には、CY
(現行のコピー番号)とNCY
(作成されるコピーの総数)の値をローカル変数として利用可能です。
パラメータ ¶
Stamp SOP Path
コピー処理を駆動させるジオメトリを指定します。
このジオメトリ内の各ポイントがコピーを作成します。
すべてのPointアトリビュートがそれと同じ名前のスタンプ値として追加されます。
ベクトルアトリビュートの場合は、各コンポーネントを取得できるように、名前の後に.x
、.y
、.z
が付きます。
Number of Copies
このノードが作成する入力データ項目のコピーの数。
この値が0以下なら、このノードからデータが出力されません。 他のデータ操作ノードと同様に、このノードは、指定した時間で修正されるシミュレーションオブジェクトを常に知っています。 つまり、オブジェクト固有のローカル変数をこのパラメータに使用することで、オブジェクト単位基準でコピーの数を変更することができます。
Number of Variables
作成される入力データの各コピーに設定されるグローバルパラメータの数を設定します。
これらのグローバルパラメータは、stamp
やstamps
のエクスプレッション関数を使用することで、入力データノードからアクセスすることができます。
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
グローバルパラメータが文字列になります。このグローバルパラメータの値には、入力データノードのstamps
エクスプレッション関数を使ってアクセスします。
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の時、 このパラメータには、このグローバルパラメータに割り当てられる文字列の値、一連の数値、文字列のトークンが含まれます。
入力 ¶
First
このノードの1番目の入力には、新しいデータの追加先となるオブジェクトまたはデータを指定します。
Subsequent
このノードの残りの入力は、コピーされ1番目の入力のオブジェクトまたはデータに追加されるデータを指定します。
出力 ¶
First
このノードからの出力は、指定した数の入力データのコピーを含んだデータの集まりです。
ローカル変数 ¶
CY
現行のコピー番号。この変数をエクスプレッションで使用することで、別のコピーに対して別の値を取得することができます。
NCY
作成されるコピーの総数。
ST
ノードが評価されるシミュレーション時間です。
この値は、変数Tで表現される現在のHoudiniの時間と同じではなく、DOP Networkの Offset Time と Scale Time のパラメータの設定に依存しています。
STは、シミュレーションの開始時間がゼロになるようになっています。
つまり、シミュレーションの最初のタイムステップをテストする時は、$T == 0
や$FF == 1
を使うのではなくて、$ST == 0
のようなテストを使うのがベストです。
SF
ノードが評価されるシミュレーションフレーム(正確には、シミュレーションタイムステップ番号)。
この値は、変数Fで表現される現在のHoudiniのフレーム番号と同じではなく、DOP Networkパラメータの設定に依存しています。 代わりに、この値は、シミュレーション時間(ST)をシミュレーションタイムステップサイズ(TIMESTEP)で割算した値と同じです。
TIMESTEP
シミュレーションタイムステップのサイズ。 この値は、1秒あたりのユニットで表現した値をスケールするのに役に立ちますが、タイムステップ毎に適用されます。
SFPS
TIMESTEPの逆数。 シミュレーション時間の1秒あたりのタイムステップ数です。
SNOBJ
シミュレーション内のオブジェクトの数。 Empty Object DOPなどのオブジェクトを作成するノードでは、SNOBJは、オブジェクトが評価される度に値が増えます。
固有のオブジェクト名を確保する良い方法は、object_$SNOBJ
のようなエクスプレッションを使うことです。
NOBJ
このタイムステップ間で現行ノードで評価されるオブジェクトの数。 この値は、多くのノードがシミュレーション内のオブジェクトすべてを処理しないので、SNOBJとは異なります。
NOBJは、ノードが各オブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJ
ノードで処理される特定のオブジェクトのインデックス。 この値は、指定したタイムステップで常にゼロからNOBJ-1まで実行されます。 この値は、OBJIDやOBJNAMEなどのシミュレーション内の現行オブジェクトを識別せず、現在の処理順でのオブジェクトの順番を識別します。
この値は、オブジェクト毎に乱数を生成するのに役に立ちます。他には、処理別にオブジェクトを2,3のグループに分けるのに役に立ちます。 この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
OBJID
処理されているオブジェクトの固有ID。 すべてのオブジェクトは、すべての時間のシミュレーション内のオブジェクトすべてで固有な整数値が割り当てられています。たとえオブジェクトが削除されても、そのIDは決して再利用されません。 オブジェクトIDは、オブジェクト毎に別々の処理をさせたい場面(例えば、オブジェクト毎に固有の乱数を生成したい)で非常に役に立ちます。
この値は、dopfieldエクスプレッション関数を使って、オブジェクトの情報を検索するのにベストな方法です。
OBJIDは、ノードがオブジェクトを続けて処理(例えば、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 DOPでは、以下のエクスプレッションを記述することができます:
$tx + 0.1
これはオブジェクトをタイムステップ毎にX軸方向に0.1単位分移動させます。