On this page | |
Since | 10.0 |
このノードがらみの一般的なワークフローの情報に関しては、Pyroツールの使い方を参照してください。
Pyro Solver DOPは、Pyro Dynamicsソルバを使用するオブジェクトを設定します。
オブジェクトがこのDOPを“Solver”サブデータとして持っていれば、オブジェクト自体がSmokeオブジェクトとして進化します。
このソルバは、オブジェクト上の色々なフィールドサブデータを利用します。
オブジェクトには、空間内の煙の密度を追跡するためのdensity
スカラーフィールドを持たせてください。
オブジェクトには、空間内の各ポイントのVelocityを追跡するためのvel
ベクトルフィールドを持たせてください。
オプションでは、内部浮力計算にtemperature
スカラーフィールドが必要となります。
必要なサブデータと一緒にオブジェクトをセットアップするには、Smoke Configure Object DOPを使用します。
Tip
ソースオブジェクトが変形または変形オブジェクトと衝突する場合、ソルバはポイント毎の変形に注意を払いません。 そのため、 Advanced ▸ Forces ▸ Sources サブタブの Velocity Type を Point Velocity に設定する必要があります。
パラメータ ¶
Sources ¶
ソースリレーションシップを持つオブジェクトが結合されて、ソースとして使用されます。 ソリッドオブジェクトは、そのオブジェクトの内側が1、外側が0のフィールドに変換されます。 このSourceフィールドとDestinationフィールドの最大値が、新しいDestinationフィールドに使用されます。
燃料には2タイプ選択することができます。 1つ目が、メインのSmokeオブジェクトに追加された燃料に適用します。 2つ目が、2番目の燃料オブジェクト上のソースの挙動を制御します。 Fuel(燃料)オブジェクトは、燃料を注入することしかできないので、単一オプションです。
Emitters
Emit Smoke
ソースオブジェクトをDensity(密度)フィールドに追加します。
Smoke Amount
Densityで最大値を計算する前のソースのスカラー倍数。
Emit Fuel
ソースオブジェクトをFuel(燃料)フィールドに追加します。
Fuel Amount
Fuelで最大値を計算する前のソースのスカラー倍数。
Apply Temperature
ソースオブジェクトをTemperature(温度)フィールドに追加します。
Temperature Scale
オブジェクトのTemperature(温度)をスケールします。 Fuel Amount や Smoke Amount とは違い、ボクセルが上書きされる箇所が Temperarure Amount から影響を受けないことに注意してください。 Temperature Amount が0でもTemperature(温度)の追加が無効になりません。 それは、新しく設定されるTemperature(温度)を0にするだけです。
Noise
Add Noise
ノイズは、SourceフィールドをNoiseフィールドで乗算します。これは、ソリッドオブジェクトをスイス・チーズのオブジェクトに変換し、よりゴチャゴチャした面白い挙動になることがよくあります。
Amount
この計算の結果と元のソースを混ぜる度合い。 0の値は、ノイズなしと同じになり、0.5はそれぞれ50%をブレンドし、1は、再マップされたノイズ値を最終的なソース値として使用します。
Frequency-Flow Roughness
これらは、Anti-Aliased Flow Noise VOPを制御します。
Contrast
0から1への推移の強弱。高いコントラストは、保持される領域と破棄される領域間の境界を鮮明にします。 低いコントラストは、より滑らかに減衰します。
Map Noise Output to Final Source
ソース値を再マップします。これは、ソース化されたボクセルからソース化されていないボクセルへの推移の減衰を再マップすることを許可します。 他の方法としては、丘のような形状のランプを構築することで、ソリッドバージョンではなく、ソース形状の輪郭を抽出することができます。
Simulation ¶
これらは、シミュレーションがどのように時間と共に進むのか制御します。
Limit Speed, Speed Limit
設定すると、Velocityフィールドの各軸が、この最大速度に制限されます。 これは、フォース計算の後、Divergence(発散)またはAdvection(移流)の後に実行されるので、 その速度が最終的には若干この値よりも速くなる可能性があります。
Note
値の制限は軸毎に行なわれ、対角線沿いのVelocityは、sqrt(3)
まで高くなる可能性があります。
Viscosity
Viscosity(粘度)とは、近隣のボクセルを同じVelocityにしようとするフォースです。 ゼロの値は、隣接ボクセル内の流体が抵抗なしで任意の方向に動くことを許可します。
値が高いほど、ボクセルのVelocityがその近隣のボクセルのVelocityと異なる時に、抵抗を招きます。 現在のところ、これは拡散表現をVelocityフィールドへ適用することで実装されています。
Cooling Rate
Temperature(温度)フィールドがゼロに冷却される速さ。0.9の値は、熱いガスの温度を毎秒90%分(元の値の10%へ)下げます。
Buoyancy Lift
環境温度とこのボクセルの温度間の差分に比例した上昇フォースに、このスケール係数が適用されます。 そのため、平均より高い温度のボクセルが上昇し、低い温度のボクセルが沈みます。
Buoyancy Direction
浮力が適用される方向。通常では、これは論理的な“Up”方向に該当します。
Vortex Confinement
明示的にVorticleを使用するのではなく、Vortex(渦巻き)の位置を直接Velocityフィールドから削除することができます。 このパラメータは、既存のVorticle(渦巻き)をこの値で強化させることで、グリッド解像度によって消えてしまいそうなシミュレーション内のTurbulence(乱流)を強くします。 値が高過ぎると、シミュレーションが不安定になり爆発する可能性があります。
マイナスの値は、Vortex(渦巻き)を抑えてシミュレーションを平滑化しますが、通常では、より低い解像度のグリッドを使用するほうが良いです。
“confinement”スカラーフィールドもVortex Confinement値に乗算され、空間上で強化されるVortexの度合いを変化させたり、Gas Rampを使用して他のフィールドを変化させることができます。
Velocity Damp
Velocityフィールドに対するグローバルDrag(抵抗)フォース。
Fuel
物理的に正しい現象を考えると、燃料は煙と同じ様にボクセルグリッドを通過します。 しかし、実際には意図的に燃料の速度を上下させるほうが役に立つことが多いです。 燃料をもっと完全に制御するなら、煙シミュレーションを別に実行し、それをPyroシミュレーションのソースとして使用することができます。
Advect Fuel
燃料を移流させなかった場合、燃料は、作成された場所からまったく動かなくなります。
Fuel Speed
燃料が他のフィールド(例えば、温度や煙)を基準にした移動速さに対するスカラー倍数。 燃料を遅く動かせば、炎がもっと内側に保持することができます。
Combustion
Combustion(燃焼)モデルは、Fuel(燃料)フィールドを受け取り、それをBurn(燃焼)、Temperature(温度)、Density(Smoke)に変えます。 Combustion が無効なら、Fuel(燃料)フィールドがシミュレーション内で無視されます。
これらのオプションのほとんどが、Gas Combustion DOPでドキュメント化されています。
Heat Source
何がHeat(熱)フィールドを初期化するのか制御します。 None に設定すると、Heat(熱)フィールドはSmoke Solverで変更されません。 それは、熱が下がらないことも意味します。 Source は、ソースリレーションシップを持つオブジェクトの内側でHeat(熱)フィールドを1に設定することを意味します。 Burn は、Burn(燃焼)フィールドで最大オペレーションを適用すること意味します。これは、 Use Fuel Model が有効な場合に最も理にかなっています。 Heat(熱)フィールドは、流体のVelocityを追跡するので、Burn(燃焼)フィールドの履歴を作成するのに役に立ちます。
Heat Cool Time
Heat(熱)フィールドが1の値から0の値に下がるのにかかる秒数。
Note
Heat(熱)フィールドは、0より下に下がり続け、一種のtime-since-sourced(ソース化した後の使用時間)フィールドになります。
Diffusion
シミュレーションより細かなスケールで作用しているTurbulence(乱流)は、フィールドを広げます。 これは、時間と共にフィールドをブラーすることでモデル化することができます。 Diffusion を1にすると、1秒後にフィールドが半径2のガウスでブラーされます。
Turbulence
全体的なTurbulence(乱流)フィールドを作成します。この乱流Velocityフィールドは、 Force Scale Field と用意されているLookupランプで調整されます。 これは、Turbulence(乱流)が現れる場所を制御するので、必要なシミュレーションの領域にだけ乱流を発生させることができます。
ノイズパラメータは、Curl Noise VOPから派生しています。
Scale
Velocityフィールドに追加するフォースの強度。
Mappings
これらのランプによって、forcescale
の値に応じたTurbulence(乱流)ノイズの仕様を制御することができます。
ランプを使った結果が、それに該当するノイズパラメータと乗算されます。
Forces
Force Scale
シミュレーションに適用されるすべてのフォースに対する全体的なスケール係数。2は、フォースの強さを2倍に、0.5は半分にします。
Force Scale Blur
フォースのスケールを拡散させます。これは瞬時に発生するので、この指定したフレームに適用されるブラーの半径になります。
forcescale
はフレーム毎に再生成されるので、その値は累積しません。
その結果の乱流Velocityフィールドは、境界での画像の乱れを回避して、エッジが滑らかになります。
Force Scale Source
初期の Force Scale Field のソースを制御します。Density(密度)とTemperature(温度)は、それらのフィールドからそのままコピーされることを意味します。 Density(密度)とBurn(燃焼)は、その2つのフィールドの最大値を受け取り、そのDensity(密度)の方が値が大きい時に、フレーム1がそれ以降のフレームと同じフォースを持つようにするのに役に立ちます。
Force Scale Field
Force Scale Source が Other の時、これは、初期の Force Scale Field で使用されるフィールドです。
Note
このパラメータは、 Scaled Forces パラメータに一致するすべてのフォースのスケールを下げます。
例えば、独自のDrag(抵抗)を追加すると、デフォルトでは、それがforcescale
でスケールされます。
Force Scale Range
0..1間隔に再マップされる初期のフォーススケールフィールドの範囲。
Map Force Scale Source to Force Scale
フォーススケールランプを、それ自体に対して再マップします。
Scaled Forces
どのDOP Forceを適用前にforcescale
の値でスケールするのか決めます。
それらのフォースは、ボクセル毎の Force Scale Field に比例します。
Absolute Forces
どのDOP Forceをシミュレーションのボクセルすべてに均一に適用するのか決めます。 それらのフォースを評価する時、 Force Scale Field は考慮されません。
Advanced Options ¶
Rest Field ¶
Speed
Rest(静止)フィールドがVelocityフィールドに反応して動く速さを制御します。 Rest(静止)フィールドを完全に煙にくっつかせるには、1の値を使用します。 しかし、これはすぐにRest(静止)フィールドが望んでいない筋で乱れてしまうことがよくあります。 実際の煙のVelocityよりも遅くRest(静止)フィールドを動かすことで、Rest(静止)フィールドを煙と一緒に動かしている間にその筋を減らすことができます。
Initial Reset Frame
Rest(静止)フィールドがリセットされるフレーム。プリロールが行なわれた後までRest(静止)フィールドの初期化を遅延させて、結果を良くすることができます。
Reset Every Frames
Rest(静止)フィールドは、この数のフレームが経過する度にリセットされます。
Dual Rest Fields
メインのRestフィールドと交互にリセットされるrest2フィールドを作成し、ポップなしで長いシミュレーションを実行することができるようになります。
Substepping ¶
別のFuel(燃料)モデルを使用している場合、サブステップはオブジェクト毎に独立して起こることに注意してください。 この場合、DOPシミュレーションレベルのサブステップの使用をオフにする方が、おそらく良いでしょう。
Minimum Substeps
Pyro Solverが安定したシミュレーションをするために正しいサブステップサイズを評価しようとする時、 異常なフォースが存在すると、非常に大きなステップを受け取る場合があります。
Minimum Substeps を設定することで、安定性を確保することができます。
Maximum Substeps
Pyro Solverは、シミュレーションをこの数より多いサブステップ数に分割しません。
シミュレーションの複雑さに関係なく、必ずフレーム内で終了する最大サブステップを常に設定することは非常に良い考え方です。 この最大数を下げると、精度が悪くなりますが最大計算時間を抑えることができます。
CFL Condition
CFL Condition は、シーンで必要なサブステップのサイズを自動的に決めるために使用される係数です。 この考えは、サブステップがどのオブジェクトも1ボクセルのセルより大きく相互貫通しないようにするためのものです。
この条件は、このパラメータが1の時に満たされます。10の値は、サブステップが流体を10ボクセルのセル分動かすことを許可します。 可能であれば、適切に歪めるのではなく、オブジェクトを介してくぐり抜けます。
Advection Type
使用するAdvection(移流)のタイプ。 Single Stage メソッドは、Gas Advect DOPと同等です。各ポイントが、一度Velocityフィールドを辿って、新しいボクセル値を探します。
BFECC and Modified MacCormack メソッドは、2番目の基本Advection(移流)ステージを実行し、Advection(移流)プロセスで起こるエラーの評価を計算します。 フィールドをこのエラーで修正することができ、その結果、あまり分散しない、より鮮明な流体にします。
Clamp Values
エラー訂正係数は、元のフィールドの範囲外に、新しいボクセル値(例えば、マイナスのDensity値)を配置します。 Clamp は、各ボクセルを可能な限り指定した8個の元の値の範囲に制限します。 Revert は、エラー訂正されたボクセルが範囲外なら、それを単一ステージの値に戻します。 Revert は、エラー訂正が分析した箇所のチェック柄の画像の乱れを回避することができます。
Advect Vel Type
VelocityフィールドのAdvection(移流)タイプは、ベースフィールドとは無関係に制御することができます。 リストのより上のタイプほど、フィールドの明白なViscosity(粘度)を少なくしますが、エネルギーが増え、サラサラになります。
Advection Method
パーティクルのトレースを制御します。
Single Step
各ボクセルでVelocityを受け取り、そのタイムステップに対して、その方向で単一ステップを作成します。 これが最も高速で、Velocityフィールドの速度とは無関係ですが、大きなタイムステップに対しては壊れ始めます。
Trace
バックトラックは、そのVelocityが更新される前に単一ボクセルよりも大きく動かさないので、より大きなタイムステップが可能です。
Midpoint
Trace と同様ですが、2次の移流を使用して精度を出すので、シミュレーションが遅いです。
Trace RK3
Trace と同様ですが、3次の移流を使用して精度を出すので、シミュレーションが遅いです。
Trace RK4
Trace と同様ですが、4次の移流を使用して精度を出すので、シミュレーションが遅いです。
Advection CFL
パーティクルをトレースする時、これは、パーティクルが一回の反復で移動可能なボクセル数を制御します。値が高いほど、トレースと移流が速くなりますが、エラーが多くなります。
Projection Method
VelocityフィールドをNon-Divergence(非分散)にするために使用するメソッドを制御します。 “PCG”は、より正確な境界条件を持っていて、衝突オブジェクト内側の計算を回避します。“Multigrid”は、特に大きいまたは高い解像度コンテナに対して非常に高速です。
Gauss Seidel Iterations
Velocityフィールドの Velocity Sampling が“Center”(Smoke object DOPの Initial Data タブ)の時、これには、それを投影する反復数を指定します。
反復数は、Velocityフィールドが持つことができる変化の最大距離も制御するので、ほぼボリュームの幅(ボクセル単位)になるはずです。 反復数が少ないほど高速になりますが、フィールドがあまり良くなりません。
Multigrid Iterations
Multigridメソッドは、不正確な境界の実行をします。複数回の実行/投影を繰り返すことで、正確な答えに迅速に収束することができます。
この値を5
より大きくしないでください。
Forces ¶
Vorticle Strength
Vorticle(渦巻き)フォースに対する全体的なスケール調整。
Note
Vorticle(渦巻き)フォースは、Vorticleの名前が付いたデータをオブジェクトに取り付けた場合にのみ存在します。
Feedback Scale
フィードバックフォースを他のオブジェクトに適用する時に使用されるスケール係数。 ゼロの値は、フィードバックの発生を回避します。
その値をDensity(密度)と見なすことができるので、デフォルトのRBD Objectとバランスを保つには、1000の値を使用してください。
Align Turbulence Calculation
Velocityフィールドは、オフセットされたフィールドであることがほとんどです。 Turbulence(乱流)を計算するには、X,Y,Z成分に対して3つのパスが必要です。 このオプションを有効にすると、整列したフィールド上にTurbulence(乱流)を計算してから、その結果をオフセットされたVelocityフィールドへ平均化します。 これにより、必要なノイズ計算の量が大幅に軽減されます。
Object Merge Options ¶
Collisions ¶
Restrict Mask to Bandwidth
衝突マスクは、ノード毎に衝突ジオメトリまでの距離を記録するために構築されるSDFです。 デフォルトでは、衝突ジオメトリから特定の距離までのみ計算されます。
ある特別なエフェクトのために、例えば、ある物がオブジェクトに到達する前にその物を反応させる必要があるなら、マスクの全範囲を計算するために、これをオフにします。
Use Point Velocity for Collisions
煙に対して衝突フィールドを構築する時、衝突オブジェクトをポイント単位の動きに使用して、変形を検出します。
これは、煙が適切に変形オブジェクトに反応するようになります。しかし、これは、オブジェクトのポイント数が変わらない場合にのみ動作します。
Use Volume Velocity for Collisions
煙に対して衝突フィールドを構築する時、衝突オブジェクトをボリューム表現内の変化に使用して、変形を検出します。
これは、時間と共に変形しポイント数が変わるオブジェクトが、適切に煙に影響を与えるようにします。
Temperature Merge
ソースオブジェクトのTemperature(温度)物理パラメータが煙のTemperature(温度)フィールドに影響を与える方法を制御します。 このオプションは、Velocity Mergeのオプションと同じです。
Collide with Non-SDF
流体が、他の流体などのGeometry/SDFを持たないオブジェクトに衝突することを許可します。
Extrapolate into Collisions
Density(密度)とFuel(燃料)フィールドをCollision(衝突)フィールドへコピーします。 これにより、煙が、SmokeフィールドとCollisionフィールド間に空気の隙間ができないように“粘着性”を持ちます。 また、これは、煙が、移動する衝突フィールドを通過しないようにします。
Correct Collisions
ステップ毎に衝突マスク内のDensity(密度)フィールドをクリアします。 これは、煙がオブジェクトを潜り抜けないように、またはオブジェクト内側に閉じ込められないようにします。
Sources ¶
Velocity Merge
ソースオブジェクトのVelocityが煙のVelocityフィールドに影響を与える方法。
None
ソースのVelocityを無視します。
Weighted Average
ガスのVelocityフィールドとソースオブジェクトのVelocityのブレンドが、それに関係する密度に依存したウェイトと一緒に処理されます。
Net New Source
オブジェクトのVelocityは、ソースの密度が元の密度よりも大きい範囲にまでフィールドに影響を与えます。
煙をmaximumオペレータと一緒に追加すると(デフォルト)、これは、新しく追加された煙のみがVelocityフィールドに影響を与える効果になります。
Velocity Type
Rigid Velocity
オブジェクトの衝突Velocityは、そのオブジェクトをリジッドボディとして扱うことで計算されます。 角速度と線形速度のみが使われ、ローカル変形は考慮されません。
Point Velocity
オブジェクトの衝突Velocityは、ポイント履歴を使用することで、変形を考慮しようとします。 これは、トロポジーが変わらない場合にのみ動作します。
Volume Velocity
オブジェクトのSDF表現を使用して、変形を検出します。 時間軸においてトロポジーを固定する必要はありませんが、接線Velocityを検出することができません。
Temperature Merge
ソースオブジェクトのTemperature(温度)物理パラメータが煙のTemperature(温度)フィールドに影響を与える方法。 このオプションは、Velocity Mergeのオプションと同じです。
Pumps ¶
Velocity Type
Pumpオブジェクトのポイント単位のVelocityを計算する方法。
Rigid Velocity
オブジェクトの衝突Velocityは、そのオブジェクトをリジッドボディとして扱うことで計算されます。 角速度と線形速度のみが使われ、ローカル変形は考慮されません。
Point Velocity
オブジェクトの衝突Velocityは、ポイント履歴を使用することで、変形を考慮しようとします。 これは、トロポジーが変わらない場合にのみ動作します。
Volume Velocity
オブジェクトのSDF表現を使用して、変形を検出します。 時間軸においてトロポジーを固定する必要はありませんが、接線Velocityを検出することができません。
Temperature Merge
PumpオブジェクトのTemperature(温度)物理パラメータが煙のTemperature(温度)フィールドに影響を与える方法。
選択項目は、影響を与えないままにするか、直接ポンプの内側をポンプの温度に設定するかです。
Clear ¶
Fields to Clear
Solveステップの後に指定したタイプのフィールドをゼロにします。これは、シミュレーションの完全な状態を保存した.sim
が余計な情報を持たないようにして、.sim
のサイズと保存時間を軽減します。
None
フィールドをクリアしません。
Static
次のタイムステップで不要なフィールドをクリアします。これらのフィールドのいくつかはガイドを持ち、それらのガイドは、大元のフィールドがクリアされているので、ゼロの値を表示し始めます。
Additional
各計算の後にクリアするスペース区切りのフィールドのリスト。
Parameter Operations
各データオプションパラメータには、それに関連するそのパラメータの動作方法を指定するメニューがあります。
Use Default
Default Operationメニューの値を使用します。
Set Initial
このデータを作成した時だけ、このパラメータの値を設定します。 それ以降のすべてのタイムステップ上では、このパラメータの値は変更されません。 これは、ポジションやVelocityのような初期状態のセットアップに役に立ちます。
Set Always
このパラメータの値を常に設定します。これは、特定のキーフレーム値が時間にわたって必要な時に役に立ちます。 これは、時間にわたってオブジェクトの位置をキーフレームしたり、ジオメトリが変形する場合にタイムステップ毎に SOPのジオメトリを取得するのに役に立ちます。
この設定をパラメータ値に対してローカル変数と合わせて使用することで、時間にわたって値を修正することもできます。
例えば、X Positionでは、$tx + 0.1
のようなエクスプレッションがタイムステップ毎にオブジェクトを右に0.1ユニットずつ動かします。
Set Never
このパラメータの値をまったく設定しません。 このオプションは、このノードを使って1番目の入力に接続された既存のデータを修正する時に非常に役に立ちます。
例えば、RBD State DOPでオブジェクトの質量しかアニメーションさせたくない場合、 Set Never オプションを Mass 以外のすべてのパラメータで使用し、 Mass パラメータには Set Always を使用します。
Default Operation
Use Default に設定した Operation メニューのパラメータに対して、このパラメータが、使用するオペレーションを制御します。
このパラメータは、 Parameter Operations メニューと同じメニューオプションと意味を持ちますが、 Use Default の選択がありません。
Make Objects Mutual Affectors
このノードの1番目の入力に接続されたすべてのオブジェクトが、相互アフェクターになります。
これは、それらのオブジェクトをこのノードに接続する前にAffector DOPを使用して、*
と*
の間にアフェクターリレーションシップを作成する事と同じです。
このオプションは、すべてのオブジェクトをソルバに送って、お互いに影響し合うようにするのに便利です。
Group
オブジェクトコネクタをこのノードの1番目の入力に接続した時、このパラメータを使って、 このノードから影響を受けるそれらのオブジェクトのサブセットを選択することができます。
Data Name
オブジェクトまたは他のデータにデータを追加するために使用する名前を意味します。 Data Name に“/”(または複数)を含めれば、それはサブデータ内側に移動することを意味します。
例えば、Fan Force DOPのデフォルトの Data Name は“Forces/Fan”です。 これは、“Forces”という既存のデータに“Fan”という名前のデータを追加します。 “Forces”というデータが存在しなければ、単なるコンテナデータが作成されて、そこに“Fan”サブデータが追加されます。
異なるデータは、それらを使用する名前に対して異なる要件を持ちます。 非常に稀な場合を除いて、デフォルト値を使用してください。 いくつかの例外は、特定のデータまたは特定のタイプのデータを利用するソルバで説明します。
Unique Data Name
このパラメータを有効にすると、このノードで作成されるデータが既存データを上書きしないように 固有な名前で Data Name パラメータの値を修正します。
このパラメータをオフにすると、同じ名前の2つのデータを追加すると、2番目のデータが1番目のデータを置換します。 各タイプの挙動が必要な場合があります。
オブジェクトにいくつかのFan Forcesを吹き付けたい時に、各ファンが前のファンを上書きしないように、 個々のファンの Data Name を変更して名前の衝突を回避するよりも、 Unique Data Name の機能を使用する方が簡単です。
一方で、オブジェクトに既にRBD Stateデータが追加されていることを知っていれば、このオプションをオフにすることで、 新しいRBD Stateデータが既存データを上書きすることができます。
Solver Per Object
ソルバのデフォルトの挙動は、まったく同じソルバをグループで指定したすべてのオブジェクトに取り付けます。 これにより、パラメータが各オブジェクトに対して同一になるので、それらのオブジェクトをソルバによって1個のパスで処理することができます。
とはいえ、いくつかのオブジェクトは、同時に単一オブジェクトに対してより論理的に作用します。
それらの場合では、$OBJID
エクスプレッションを使用して、オブジェクト毎にソルバのパラメータを変化させたいことがあります。
このトグルを設定すれば、オブジェクト毎に別々のソルバが作成されて、$OBJID
が期待通りに変化します。
Copy Data DOPを使用してパラメータをスタンプする場合にも、この設定が必須です。
入力 ¶
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サブネットのデジタルアセットで非常に役に立ちます。
Note
ほとんどのダイナミクスノードには、そのノードのパラメータと同じ名前のローカル変数があります。 例えば、Position DOPでは、以下のエクスプレッションを記述することができます:
$tx + 0.1
これはオブジェクトをタイムステップ毎にX軸方向に0.1単位分移動させます。