On this page | |
Since | 12.0 |
このノードは、各インパクトの物理ポイントに対して、RBDオブジェクト上にImpactAnalysis
ジオメトリサブデータを作成します。
time 、 impact strength 、 impact distance 、 他の object に基づいたインパクト情報をフィルタリングして、インパクトのリストがごちゃまぜになったり、不要なインパクトで溢れるのを回避することができます。
インパクトポイントは、サーフェスネットワークで役に立ちます。例:
-
ポイントをクラスタ化した流体シミュレーションのソースポイントとして使うことができるので、Debris(瓦礫)が地面にぶつかった時に粉塵雲を起こすことができます。
-
ポイント群の中心にジオメトリを作成してから、Cookieノードを使って、地面のジオメトリからそのジオメトリを減算することで、噴火口、地面のくぼみ、弾痕などを作成することができます。
セットアップ ¶
To... | Do this |
---|---|
シェルフからImpact Analysisをセットアップする |
これをしても、ビューアには何の変化もみられません。このツールは単にRBDオブジェクトのインパクトを記録するのに必要なノードをセットアップするだけです。サーフェスネットワークで、そのインパクト情報を使用する方法は、以下を参照してください。 |
手動でImpact Analysisノードをネットワークに追加する |
このノードは、 ソルバ です。Impact AnalysisがRBDソルバの衝突が見えるようにするために、このソルバを必ずRBDソルバの 後 に適用してください。例えば、1番目の緑(データ)の入力をRBD Solver、2番目の緑の入力をこのノードにして、Multiple Solverを使用します。 |
インパクトポイントをサーフェスネットワークにインポートする |
インポートしたインパクトポイントを見るには、ビューアの右側にあるディスプレイツールバーの Pointsをオンにする必要があります。 |
インパクトポイントの情報にアクセスする |
インパクトポイントには、以下のアトリビュートがあります。
インパクトの位置。
インパクトの時間。
同じオブジェクトを共有する同じ時間でのフィルタリングされていないインパクトポイントすべての平均位置。
インパクトの強さ。
インパクトの速度。
同じオブジェクトを共有する同じ時間でのフィルタリングされていないインパクトポイントすべての平均のインパルス(力積)。
ぶつかったオブジェクトのDOPオブジェクトID。
ぶつかったオブジェクトのプリミティブ番号。この番号を使えば、RBD Packed Objectの個々の箇所のインパクトを特定することができます。
インパクトを記録しているオブジェクトのDOPオブジェクトID。
インパクトを記録しているオブジェクトのプリミティブ番号。
インパクトの法線。
前のフィルタリングしたインパクトポイントからの距離。 衝突したDOPオブジェクトのフィールドにアクセスする(例えば、インパクトを受けたオブジェクトの質量を取得する)には、dopfieldエクスプレッション関数を使います。 dopfield("/obj/AutoDopNetwork", $impactobject, "Position", "Options", 0, "mass") |
パラメータ ¶
パラメータでは、インパクトポイントのフィルタリング、例えば、空間と時間においてインパクトが非常に近いところで起きたポイント以外すべてを無視します。
Display Geometry
インパクトポイントをビューポートに表示します。
Time Threshold
記録されるインパクトポイント間の最小の時間量(秒)。値を高くするほど、インパクトポイントが少なくなり、時間のギャップが大きくなります。
Impact Threshold
記録されるインパクトポイントの最小のインパクトの強さの量。値を高くするほど、より強いインパクトに対してのみポイントを作成し、弱いインパクトを無視します。
Distance Threshold
記録されるインパクトポイント間の最小距離。値を高くするほど、インパクトポイントが少なくなり、空間のギャップが大きくなります。
Force Impact Object
このDOPオブジェクトと衝突するインパクトポイントのみを作成します。
出力 ¶
入力オブジェクトは、出力へ通過します。
ローカル変数 ¶
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 |