On this page | |
Since | 12.0 |
セットアップ ¶
ゼロからFluid(流体)ネットワークをセットアップしている場合、Fluid Objectノードを使用することで、既に接続されているFluid Solverで必要なデータを持つDOPオブジェクトを作成することができます。 既にDOPオブジェクトを持っている場合、Fluid Configure Objectノードを使用することで、DOPオブジェクトに必要データを追加することができます。
このソルバは、オブジェクト上の色々なフィールドサブデータを利用します。
-
オブジェクトには、空間内の流体の表現を追跡するための
surface
スカラーフィールドを持たせてください。 -
オブジェクトには、空間内の各ポイントのVelocityを追跡するための
vel
ベクトルフィールドを持たせてください。
役立つ情報 ¶
-
流体が消失し続けるなら、 Build Outside Markers をオフにしてみてください。また、 Marker Escape Threshold を
0
に設定することで、ボックス内部で流体を保持することもできます。 -
2,3個のボクセルよりも小さい液体ストリームは消失する場合があります。
-
ソースオブジェクトが変形または変形オブジェクト(DOPリレーションシップを使用)と衝突する場合、デフォルトでは、ソルバはポイント毎の変形を使用します。 ソルバがポイント毎の変形を使用するには、 Fields ▸ Sources サブタブの Velocity Type を“Point Velocity”に設定します。
パラメータ ¶
Simulation ¶
これらのパラメータは、シミュレーションが時間と共にどのように進展するのか制御します。
Time Scale
このソルバ内部の時間のスケール係数。1
は、標準速度、1
より大きい値は、流体シミュレーションを速く動かし、1
より小さい値は、流体シミュレーションをゆっくり動かします。
doptime, dopframe,dopsttot, dopttostなどのエクスプレッション関数を使用すれば、グローバル時間とシミュレーション時間を変換することができます。
Note
Time Scale を変えると、シミュレーションのタイムステップだけが影響を受けます。
SOPで計算されたVelocityをシミュレーションに追加することで、Source Volume DOPと衝突する場合は、シミュレーションのタイムステップに合うように入力のVelocityを1 / timescale
でスケールしてください。
Confinement Strength
コンテナにvorticles
データが取り付けられている時、これはVorticleフォースに対する全体のスケール調整です。Vorticleフォースとは、流体に乱流を追加する小さな風車のようなフォースです。
Speed Limit
設定すると、Velocityフィールドの各軸が、この最大速度に制限されます。 これは、フォース計算の後、Divergence(発散)またはAdvection(移流)の後に実行されるので、 その速度が最終的には若干この値よりも速くなる可能性があります。
Viscosity
低い値ほど、より“水っぽく”, “さらっとした”流れの流体になるのに対して、高い値ほど、より“ドロドロで”抵抗力のある流体になります。
内部的には、Viscosity(粘度)とは、近隣のボクセルを同じVelocityにしようとするフォースです。
Use Friction and Bounce
摩擦や衝突時の跳ね返りに対する流体の物理パラメータを使用します。摩擦と跳ね返りがない流体を表現するのであれば、これをオフにします。
Relationships ¶
Houdini 12以前では、Pyroソルバは、ソース、ポンプ、シンク、衝突ジオメトリを流体コンテナと関連付けるためにDOPリレーションシップを使用し、 Merge DOPやApply relationship DOPを使ってリレーションシップを作成していました。 Houdini 12以降で推奨されるメソッドは、SOPネットワークを使用してソース、ポンプ、シンク、衝突ジオメトリを作成して、それらをSource volume DOPを使って取り込むことです。
古いリレーションシップメソッドを使用してソース、シンクなどをセットアップしたい場合は、このタブのパラメータを使うことでリレーションシップを有効にすることができます。 デフォルトでは、リレーションシップがオフになっていて、ソルバはリレーションシップデータを無視します。
両方のメソッド(SOPジオメトリを取り込んで、それをソルバの“sourcing”入力に取り付け、さらにDOPオブジェクトリレーションシップをセットアップします)を使用することができます。 リレーションシップが有効な時、ソルバは、両方のメソッドからソース、シンクなどを結合します。
Enable Relationships
オブジェクトリレーションシップデータを使用して、ソース、ポンプ、シンク、衝突ジオメトリをシミュレーションに追加します(もしあれば取り込まれたデータがsourcing入力に接続されます)。
Sources ¶
Enable Source Relationship
DOPオブジェクトをソルバへの“source”リレーションシップと一緒に使用します。
Velocity Merge
ソースオブジェクトのVelocityがコンテナのVelocityフィールドに影響を与える方法。 Scaleは、追加するVelocityの度合いを制御します。
None
ソースのVelocityが無視されます。
Net New Source
Velocityは、ソースからこのフレームに流体が追加されるそれらの領域内に設定されます。
New Source
Velocityは、ソースが存在するそれらの領域内に設定されます。
Velocity Type
ソースオブジェクト上のVelocityを測定する方法。ソースジオメトリが時間と共に変形(形状変更)しない場合、“Rigid velocity”を使用してください。 ソースジオメトリが時間と共に変形しても、トロポジーが変わらないなら、 Point velocity を使用してください。
Rigid Velocity
ソースオブジェクトを変形なしとして扱います。
Point Velocity
ポイント履歴を使用して、ジオメトリの変形を許可します。これは、ソースジオメトリのトポロジーが変わらない場合にのみ動作します。
Volume Velocity
オブジェクトのSDF表現を使用します。ジオメトリの変形を許可し、時間軸でトポロジーが固定されている必要はありませんが、接線Velocityを検出することができません。
Pumps ¶
Enable Pump Relationship
DOPオブジェクトをソルバへの“pump”リレーションシップと一緒に使用します。
Velocity Merge
ソースオブジェクトのVelocityがコンテナのVelocityフィールドに影響を与える方法。 Scaleは、追加するVelocityの度合いを制御します。
Velocity Type
ポンプオブジェクトのポイント単位のVelocityを計算する方法を制御します。
Rigid Velocity
オブジェクトのVelocityは、そのオブジェクトをリジッドボディとして扱うことで計算されます。 角速度と線形速度のみが使われ、ローカル変形は考慮されません。
Point Velocity
オブジェクトのVelocityは、ポイント履歴を使用することで、変形を考慮しようとします。 これは、トロポジーが変わらない場合にのみ動作します。
Volume Velocity
オブジェクトのSDF表現を使用して、変形を検出します。 時間軸においてトロポジーを固定する必要はありませんが、接線Velocityを検出することができません。
Collisions ¶
Enable Collide Relationship
DOPオブジェクトをソルバへの“collision”リレーションシップと一緒に使用します。
Restrict Mask to Bandwidth
通常では、衝突マスクSDFは、元の衝突ジオメトリから特定の距離までのみ計算されます。 ある特別なエフェクトのために、例えば、ある物がオブジェクトに到達する前にその物を反応させる必要があるなら、マスクの全範囲を計算するために、これをオフにします。
Sticky Fluid
流体が衝突オブジェクトのサーフェスに入らないようにするのではなく、流体が衝突オブジェクトのサーフェスに残るようにするかどうか決めます。これはオンのままにしてください。
Collide with Non-SDF
流体が、他の流体などのGeometry/SDFを持たないオブジェクトに衝突することを許可します。
Velocity Type
衝突オブジェクトのポイント単位のVelocityを計算する方法を制御します。
Rigid Velocity
オブジェクトの衝突Velocityは、そのオブジェクトをリジッドボディとして扱うことで計算されます。 角速度と線形速度のみが使われ、ローカル変形は考慮されません。
Point Velocity
オブジェクトの衝突Velocityは、ポイント履歴を使用することで、変形を考慮しようとします。 これは、トロポジーが変わらない場合にのみ動作します。
Volume Velocity
オブジェクトのSDF表現を使用して、変形を検出します。 時間軸においてトロポジーを固定する必要はありませんが、接線Velocityを検出することができません。
Sink ¶
Enable Sink Relationship
DOPオブジェクトをソルバへの“sink”リレーションシップと一緒に使用します。
Advanced ¶
一般的にはこれらのパラメータを変更する必要はありません。
Min Substeps
ソルバを強制的に最小数のサブステップで実行します。通常では、Pyroソルバはサブステップなしで非常に上手く動作します。 煙と通常ではないフォースを持っていれば、より安定させるために、このパラメータを上げたい時があります。 通常では、このパラメータを上げると、シミュレーションが遅くなります。
Max Substeps
ソルバを強制的にこの最大数のサブステップを超えないように実行します。通常では、Pyroソルバはサブステップなしで非常に上手く動作します。 煙と通常ではないフォースを持っていれば、より安定させるために、このパラメータを上げたい時があります。通常では、この値を上げると、シミュレーションが遅くなります。
CFL Condition
Max Substeps が1
より大きい時、ソルバは、このパラメータを使用してサブステップの数を決めます。
その“条件”は、サブステップがオブジェクトをこれより多くのボクセルで相互に貫通することができない事です。
値が高いほど、サブステップは、より多くのボクセルだけ煙を動かすことができ、場合によっては、衝突オブジェクトを通過させてしまいます。
Quantize to Max Substeps
有効にすると、フレームを Max Substeps で割ったサブステップが使用されるので、時間が常に1/ Max Substeps の倍数となります。
例えば、 Max Substeps を4に設定し、 CFL Condition が3サブステップだけ必要であれば、 ソルバはフレームを3つのサブステップ(各サブステップは 1/ Max Substeps の倍数に位置します)に分割します。 このサブステップ長の組み合わせは、0.25, 0.5, 0.25(フレームをそれぞれ0-0.25,0.25-0.75,0.75-1の位置に分割)となります。 フレームをサブステップに分割する時、ソルバは、パーティクルの現行状態(パーティクルのサイズとVelocity)も考慮します。
このオプションは、1/ Max Substeps の増分値でファイルにキャッシュ化された入力ジオメトリを再利用するのに役に立ちます。 例えば、ジオメトリが1フレームあたり4サブステップでディスクにキャッシュ化されていれば、そのジオメトリを補間する必要がないように、シミュレーションのサブステップが常に0.25の倍数となるようにすることができます。
Frames Before Solve
完全にSolveサイクルが計算される前に待つフレーム数を指定します。 それらのフレームでは、最後のソルバの入力(ソース)に適用されたオペレーションのみが計算されます。 これは、実際に最大グリッド上の完全Solveを計算せずに、データのソーシングとサイズ変更を有効にします。
Surface ¶
Correct Surface
衝突オブジェクトの動きが原因で、流体が流体オブジェクトに相互貫通する可能性があります。 Correct Surface ステップは、衝突オブジェクトに貫通している流体を削除します。
Rebuild SDF
ゼロアイソコンターを境界とするボクセルを使って、初期のゼロアイソコンターを決めます。残りのフィールドは、それらの値から直接再構築されます。
Reinitialize SDF
フィールドが既にほぼ符号付き距離フィールドであれば、あまり極端でないエラー訂正を実行することができます。 再初期化方程式が適用され、それは境界に影響を与えることなく、符号付き距離フィールド上で収束します。
Reinitialize Rate
SDFの再構築と再初期化は、Nフレーム毎にのみ実行されます。Nは再初期化レートです。
Reinitialize Iterations
再初期化方程式を適用する回数。
Marker Escape Threshold
マーカーが間違った側のサーフェス上にあると、Escapedと見なされる距離で、マーカーの半径を単位として測定されます。Escapedマーカーのみがサーフェス値を更新します。
Markers ¶
Build Inside Markers
サーフェスの内側でマーカーSurfel(サーフェル:ボクセルのサーフェス)を構築します。内側のSurfel(サーフェル:ボクセルのサーフェス)が、境界を外に押し出すことでサーフェスを訂正する時にボリュームを増やします。
Build Outside Markers
サーフェスの外側でマーカーSurfel(サーフェル:ボクセルのサーフェス)を構築します。外側のSurfel(サーフェル:ボクセルのサーフェス)が、境界を中に押し入れることでサーフェスを訂正する時にボリュームを増やします。
Markers Per Voxel
各ボクセル内側で保持するマーカーの必要な数。マーカーが多いほど、より良いサーフェスの挙動のキャプチャーが可能ですが、 大きな複雑なシミュレーションでは、多くのメモリと処理時間が必要となります。
Minimum Marker Radius
マーカーSurfelの最小半径。ボクセルサイズを単位として測定されます。
Maximum Marker Radius
マーカーSurfelの最大半径。ボクセルサイズを単位として測定されます。
Projection ¶
Variational
圧力方程式への寄与度は、液体内のセルの量に比例します。これは、ソリッド境界に階段状の境界ができないように試みます。
Note
これを設定すると、 Gas Project Non Divergent Variational が使用されるので、 Ghost Fluid と Preserve Bubble のオプションが利用できなくなります。
Scale by Surface
各ボクセル内の流体量を評価することで、外部フォースをスケールします。これによって、サブボクセルの波を重力の下で均一化することが可能になります。
Preserve Bubbles
境界圧力条件に関係なく、閉じ込められた空気に圧力値を与えます。 これにより、泡が泡同士で潰れないようにします。 設定しなかった場合、流体が自由にすべての局面から泡の中に流れ込み、即座に泡が消失します。
Ghost Fluid
ゼロ以外に設定すれば、圧力が気泡に外挿されます。 これによって、空気側のサブボクセルの波紋が抑えられます。
Limit Velocity Extrapolation
Velocityフィールドを非流体セルへ外挿する時、 特定の数のセルが境界沿いに満たされた時に、その外挿を停止します。
Max Cells to Extrapolate
Velocityフィールドの非流体側のVelocity値で満たされる非流体セルの数。
Strain ¶
Use Strain
ボクセル毎に流体が受けた変形量を追跡するための“strain”フィールドをオブジェクトに追加します。
Plastic Flow Rate
これは、塑性流動のレートです。現行のStrain(歪み)は、1秒あたりのこのレートで消失します。 1秒あたりのタイムステップよりも大きい値は、オーバーシュートを引き起こす可能性があります。
Plastic Flow Threshold
これは、塑性流動の閾値です。Strain(歪み)の基準量が、この閾値を超えた時、Strain(歪み)が塑性流動の条件に応じて消失します。
Strain Elastic Modulus
Drag(抵抗)係数と同様に、 Elastic Modulus (弾性係数)は、特定の歪み量を復元力に変換する度合いをスケールすることができます。
Advection ¶
Advection Type
フィールドの移流に使用するアルゴリズム。
Single stage
Gas Advect DOPと同等です。各ポイントが、一度Velocityフィールドを辿って、新しいボクセル値を探します。
BFECC and Modified MacCormack
2番目の基本移流ステージを実行し、あまり分散しない、より鮮明な流体にします。
Clamp Values
BFECC and Modified MacCormack の移流タイプのエラー訂正は、コンテナの外部へボクセル値を動かすことができ、マイナスの密度といった変わったエフェクトを表現することができます。 このパラメータは、この問題を回避するためのメソッドを選択することができます。デフォルトは、“Revert”です。
None
エラー訂正が値をコンテナ外部へ動かさないように試みません。
Clamp
各ボクセルを可能な限り指定した8個の元の値の範囲に制限します。
Revert
エラー訂正されたボクセルが範囲外なら、それを単一ステージの値に戻します。
Revertは、エラー訂正が分析した箇所のチェック柄の画像の乱れを回避することができます。
Vel Advection Type
Velocityフィールドの移流に使用するアルゴリズム。リストのより上のタイプほど、フィールドの明白なViscosity(粘度)を少なくしますが、エネルギーが増え、サラサラになります。
Advection CFL
パーティクルをトレースする時、これは、パーティクルが一回の反復で移動可能なボクセル数を制御します。値が高いほど、トレースと移流が速くなりますが、エラーが多くなります。
Collisions ¶
Feedback Scale
他のオブジェクトにフィードバックフォースを適用するスケール係数。これを0
に設定すると、フィードバックを回避します。
Clear Fields ¶
Fields to Clear
Solveステップの後に指定したタイプのフィールドをゼロにします。これは、シミュレーションの完全な状態を保存した.sim
が余計な情報を持たないようにして、.sim
のサイズと保存時間を軽減します。
None
フィールドをクリアしません。
Static
次のタイムステップで不要なフィールドをクリアします。これらのフィールドのいくつかはガイドを持ち、それらのガイドは、大元のフィールドがクリアされているので、ゼロの値を表示し始めます。
Additional
各計算の後にクリアするスペース区切りのフィールドのリスト。
Distribution ¶
Tracker Address
同期化するためのsimtracker.pyプロセスを実行するマシン。 このフィールドが空っぽの場合、同期化やデータ転送が行なわれません。
Tracker Port
simtracker.pyプロセスを開始する時に指定する通信ポート。
Job Name
この同期化またはデータ交換のイベントを説明したジョブ名。 異なるジョブ名を使用することで、別々のデータ交換と同期化のイベントを別のマシンに分けることができます。
Slice/Peer
このマシンが自身を報告するスライス番号。ジョブ名で繋がっている各マシンには、固有のスライス番号を持ちます。 時々、この番号がオペレーションから推測することができるので、このパラメータは不要になります。
Number of Slice/Number of Peers
同期化するマシンの合計数。時々、この数はオペレーションから決めることができるので、このパラメータは不要になります。
Distributed Pressure Solve
圧力射影をマシンに分散させることができます。 これは、流体の損失を回避し、タンク形式のシミュレーションで必要ですが、 川のような流れには不要です。これは非常に広いネットワークバンド幅を必要とするので、非常に大きなシミュレーションでのみメリットがあります。
入力 ¶
First Input
このオプションの入力を使えば、このノードで修正するシミュレーションオブジェクトを制御することができます。 この入力に接続されていて Group パラメータフィールドに一致するオブジェクトが修正されます。
この入力を接続しなかった場合、このノードを Apply Data ノードと併用して使用するか、または他のデータノードの入力として使用することができます。
All Other Inputs
このノードに複数の入力コネクタがあれば、他のデータノードを取り付けて、このノードで作成されるデータのモディファイアとして動作させることができます。
意味のあるサブデータの特定のタイプは、ノードからノードへ変化します。 意味があるように取り付け可能な利用可能なデータノードのリストを確認するには、入力コネクタをクリックします。
出力 ¶
First Output
この出力のオペレーションは、このノードに接続している入力に依存します。 オブジェクトストリームがこのノードの入力であれば、その出力も入力と同じオブジェクトを含んだオブジェクトストリーム(しかし、取り付けられたこのノードのデータを持ちます)です。
オブジェクトストリームをこのノードに接続しなかった場合、その出力はデータ出力になります。 このデータ出力をApply Data DOPに接続したり、他のデータノードのデータ入力に直接接続することで、 このノードのデータをオブジェクトや他のデータに取り付けることができます。
ローカル変数 ¶
channelname
このDOPノードはData Optionsページの各チャンネルとパラメータに対して、チャンネルと同じ名前のローカル変数を定義します。 例えば、ノードにPositionのチャンネル(positionx、positiony、positionz)とオブジェクト名のパラメータ(objectname)があるとします。
そのノードには、positionx、positiony、positionz、objectnameの名前を持つローカル変数も存在します。これらの変数は、そのパラメータに対する前の値を評価します。
この前の値は、処理されているオブジェクトに追加されたデータの一部として常に保存されています。 これは、本質的には以下のようなdopfieldエクスプレッション関数のショートカットです:
dopfield($DOPNET, $OBJID, dataName, "Options", 0, channelname)
データがまだ存在しないなら、ゼロの値または空っぽの文字列が返されます。
DATACT
この値は、現在のデータが作成されたシミュレーション時間(変数STを参照)です。 このノードが新しいデータを作成せずに既存データを変更していれば、この値は現在のシミュレーション時間と同じにはなりません。
DATACF
この値は、現在のデータが作成されたシミュレーションフレーム(変数SFを参照)です。 このノードが新しいデータを作成せずに既存データを変更していれば、この値は現在のシミュレーションフレームと同じにはなりません。
RELNAME
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップの名前に設定されます。
RELOBJIDS
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップのAffected Objectsすべてに対するオブジェクトIDをスペース区切りにしたリストの文字列に設定されます。
RELOBJNAMES
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップのAffected Objectsすべてに対するオブジェクト名をスペース区切りにしたリストの文字列に設定されます。
RELAFFOBJIDS
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップのAffector Objectsすべてに対するオブジェクトIDをスペース区切りにしたリストの文字列に設定されます。
RELAFFOBJNAMES
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップのAffector Objectsすべてに対するオブジェクト名をスペース区切りにしたリストの文字列に設定されます。
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サブネットのデジタルアセットで非常に役に立ちます。
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単位分移動させます。