On this page |
Merge DOPは、複数の別々のオブジェクトのストリームやデータを受け取り、それらを1つのストリームに結合します。 データとオブジェクトを1つのストリームに結合することはできません。 すべての入力をオブジェクトストリームにするか、またはすべての入力をデータにしなければなりません。
オブジェクトを結合しても、それらのオブジェクト間のリレーションシップが構築されるわけではありません。 しかし、便宜的に、 Affector Relationship パラメータをオンにすることで、異なるオブジェクトストリーム間にAffectorリレーションシップを作成することができます。 それと同じ機能は、Group DOPとAffector DOPを使うことで実現することができますが、それにはより多くのノードを必要とします。 Intangible Value を設定したオブジェクトは、Mergeノードで作成されるリレーションシップを持ちません。
データを結合する時、このノードの出力への接続は、このノードのすべての入力に接続しているかのように扱われます。 これは、単一データ入力だけを用意して、複数のデータを取り付けられるデジタルアセットを扱う時に役に立ちます。
同様に、このノードを使えば、デジタルアセットが単一データ出力を通じて複数のデータを出力することができます。 また、このノードには、複数のデータを簡単に接続できるように単一ストリームへグループ化する便利な視覚的なメソッドがあります。
Note
このノードをバイパスにすると、リレーションシップの計算が無効になり、1番目の入力だけを処理します。
パラメータ ¶
Activation
このパラメータ値が0の時は、リレーションシップが追加されません。 1の時は、Affector Relationshipがリレーションシップの追加を制御します。 どちらの場合でも、オブジェクトが1つのストリームに結合されます。
Affector Relationship
このノードがシミュレーションオブジェクトのストリームを結合する時、このパラメータは、それらのオブジェクト間にAffectorリレーションシップをセットアップします。
No Change
入力オブジェクト間にAffectorリレーションシップが新しく作成されません。
Left Inputs Affect Right Inputs
一連の入力1,2,3などを指定すると、入力1に接続したオブジェクトが入力2,3などのオブジェクトに対するアフェクターになります。 入力2のオブジェクトは、入力3以降のオブジェクトのアフェクターになります。 このオプションを使えば、入力オブジェクトが、このノードに接続された入力オブジェクトの順番で計算されます。
Mutual
すべての入力ストリームのすべてのオブジェクトが相互アフェクターになります。
Relationship
オブジェクトのストリームを結合する時、このパラメータは、それらのストリーム間に作成するリレーションシップの種類を決めます。
選択できる項目:
None
Affectorリレーションシップが作成されません。 Affector Relationshipフィールドの No Change と同じ設定。
Constraint
2つのオブジェクト間に拘束を持つように内部的に使用されます。
Pump
影響を受けるオブジェクトのローカルVelocityをソースオブジェクトのVelocityに合わせます。 これは流体オブジェクトに適用します。
Sink
影響を受けるオブジェクトのAffectorに接触する箇所のボリュームを削除します。 これは流体オブジェクトに適用します。
Group
オブジェクトを同じグループの一部にするように内部的に使用されます。
Collide
影響を受けるオブジェクトは、アフェクターオブジェクトからの衝突に反応します。
Target
ユーザ定義効果用のプレースホルダーアフェクター。 Gas Target Forcesで使われます。
Source
影響を受けるオブジェクトは、アフェクターオブジェクトを液体や煙の密度の作成用のソースとして使用します。
Empty
特定の順番で計算を強制します。影響を受けるオブジェクトは、アフェクターオブジェクトの後に計算されますが、他に本質的な意味はありません。
これは、SOP Solverが他のオブジェクトを参照して、DOP Engineには不可視な依存関係を作成する時に役に立ちます。
入力 ¶
All
このノードの入力に接続されたすべてのオブジェクトまたはデータが、単一出力を通して送り出されます。
出力 ¶
First
このノードの入力に接続されたすべてのオブジェクトまたはデータが、単一出力を通して送り出されます。
ローカル変数 ¶
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単位分移動させます。
See also |