POP Solverは、1タイムステップ間でパーティクルを更新するように設計されているソルバです。
パーティクルの制御とフォースを蓄積するには、緑の入力をPOPマイクロソルバに接続します。
これは、以下のフォースを使用して統合します:
targetv
, airresist
このペアは、各パーティクルに対するローカルのDrag(抵抗)を定義します。
force
各パーティクルに影響を与えるフォースの大きさを指定します。
targetw
, spinresist
このペアは、回転の抵抗フレームを記述します。targetw
はワールド空間です。
torque
パーティクルに適用するワールド空間のTorque(回転モーメント)を指定します。
詳細は、Particle Collisionsを参照してください。
パラメータ
Substeps
Min Substeps
POP Solverは、常にサブステップの最小数を順守します。
これは、ごく稀にしか変更する必要はありません。
Max Substeps
POP Solverは、シミュレーションをこの値よりも多いサブステップに分割しません。
CFL Condition
CFL Condition は、シーンで必要なサブステップのサイズを自動的に決めるために使用される係数です。 この考えは、パーティクルが指定したサブステップ内で移動できる距離を制御するためのものです。
例えば、このパラメータを0.5に設定する時、ソルバは、指定したサブステップ内で、パーティクルの距離間隔の50%よりも長く移動しないように、各サブステップの長さを設定します。
Quantize to Max Substeps
フレームを Max Substeps で割ったサブステップを常に使用します。 例えば、 Max Substeps を4に設定し、 CFL Condition が3サブステップだけ必要であれば、 ソルバは0.25, 0.5, 0.25のフレームサブステップを受け取ります。 このオプションは、 1/Max Substeps の増分値でファイルにキャッシュ化した入力ジオメトリを再利用するのに役に立ちます。
Timescale
実際のタイムステップに適用される全体的なスケール。このパラメータは、アニメーション可能です。
Update
Use Implicit Drag
targetv
とairresist
で定義されたDrag(抵抗)を明示フォースに変換することができます。
これは、パーティクルが停止しなくなりますが、その代わりに、指定した抵抗位置周辺で跳ね返るようになります。
あるいは、 Implicit Drag をオンにして、より適切な減衰を実行することで、パーティクルを停止します。
これは、targetw
とspinresist
を統合する方法にも影響を与えます。
Drag Exponent
Drag(抵抗)のフォースは、ターゲットVelocityとパーティクルVelocity間の差分に比例します。この差分の中間を線形(Drag Exponentが1)、二次(Drag Exponentが2)などに設定することができます。
2の値が、大きなVelocityの差分をすぐに遅くするより現実的な抵抗モデルであり、小さなVelocityの差分ではあまり効果がありません。
これは、角速度の抵抗にも影響を与えます。
Age Particles
age
アトリビュートがタイムステップ毎に更新されて、削除フラグが付いたパーティクルがlife
アトリビュートを超えると、それらのパーティクルが削除されます。
External Forces
これは、外部DOPフォースをVelocityの統合前にフォースモデルに追加するかどうか制御します。
Integrate Velocity
v
アトリビュートは、targetv
, airresist
, force
に応じて更新されます。このパラメータがオンなら、w
アトリビュートは、targetw
, spinresist
, torque
で更新されます。
Use Mass
mass
アトリビュートがフォースをVelocityに追加する方法に影響を与えるかどうか制御します。 Use Mass を設定すると、フォースをmassで割算することで、各パーティクルの加速度を取得します。
Integrate Positions
パーティクルがVelocityに応じて動きます。また、パーティクルは角速度に応じて向きが変わります。
Reap Particles
dead
アトリビュートが1のパーティクルすべてが削除されます。
Reap At Frame End
Deadパーティクルは、すべての計算が完了した後に削除されます。このモードでは、dead
値が1のパーティクルが表示されません。
これがオフなら、DeadパーティクルがPre-solve前に削除されます。ジオメトリ内にDeadパーティクルを残すことで、Deadパーティクルを最終的な位置に動かすことができます。
== Collision Behavior =
Enable Collision Detection
POP Solverで衝突検出を実行するかどうか決めます。 他のシステム(例えば、Bullet)と混在させる時、衝突成分を含めずにPOP Solverのいくつかの統合オプション(例えば、force)をまだ使用したいことがあります。
Add Hit Attributes
他のDOP Collisionオブジェクトから何回も跳ね返らせたい場合、hitアトリビュートを追加することで、その跳ね返りの回数を調べることができ、その結果を使って次にアニメーションを実行させることができます。
hitnum
アトリビュートは、パーティクルが衝突したかどうかを検出するのに非常によく使います。
ここで追加ルールを直接適用したり、POP Collision Behaviorを使用してエフェクトを重ねることができます。
Note
hitアトリビュートが計算される時、該当するオブジェクトすべてがパーティクルと衝突します。
ispbd
, stopped
, collisionignore
のフラグは無視されます。sliding
フラグが 使用されます 。
Group to Affect
衝突するパーティクルすべてにアトリビュートが追加されると同時に、次の衝突の挙動は、このグループ内のパーティクルにのみ適用されます。
例えば、パーティクルを1回目で跳ね返った時に死亡させたいのであれば、@hittotal>1
を使用します。
Note
このグループは、衝突検出が実行された後に評価されるので、hittotal
は既に現行のヒットを含んでいます。
Create Group
ヒットしたパーティクルすべて、つまり@hitnum>0
がこのグループに追加されます。
Preserve Group
これがオフの場合、まず最初にグループがクリアされるので、そのグループ内のパーティクルのみがヒットしたパーティクルとなります。 これがオンの場合、グループは、今までヒットしたことがあるパーティクルすべてを蓄積します。
Color Hits
ヒットしたパーティクルのCd
アトリビュートをこの値に設定します。これは、ヒットしたパーティクルを迅速に可視化するのに役に立ちます。
Compute Hit Total
この衝突検出によって起きたヒットをhittotal
整数アトリビュートに加算します。
Move to Hit
複数のパーティクルを発生させるといった、パーティクルの衝突からエフェクトを起こしたい場合、フレームの最後の時点でのパーティクルではなく、ヒットした位置でのパーティクルが欲しいことがよくあります。
これは、パーティクルをヒットした位置に戻します。これは、@P = v@hitpos;
で構成します。
Response
衝突するパーティクルに起こる事を制御します。
Unchanged
パーティクルが既に定義されているままの挙動を継続します。 通常では、これはパーティクルを跳ね返させます。
Die
ヒットしたパーティクルのdead
アトリビュートが1に設定され、それらのパーティクルがReaping(収穫)パス中に削除されます。
Stop
ヒットしたパーティクルのstopped
アトリビュートが1に設定されます。停止したパーティクルは、もはやVelocity、位置、向き、角速度を加減算しなくなります。
それでも、それらのパーティクルを直接動かすことができます。例えば、 Instantaneous(即時)モードでLook At POPを使うことで可能です。
これらのパーティクルはもはや衝突しません。
Stick
ヒットしたパーティクルのstuck
アトリビュートが1に設定されます。
pospath
, posprim
, posuv
のアトリビュートは、そのヒット位置を指すようにセットアップされ、インテグレータが毎フレームでパーティクルをStuck(付着)位置へ動かし続けます。
通常では、これと一緒に Move to Hit をオンにもします。
Slide
ヒットしたパーティクルのsliding
アトリビュートが1に設定されます。
pospath
, posprim
, posuv
のアトリビュートは、そのヒット位置を指すようにセットアップされ、インテグレータがパーティクルをサーフェスに沿って滑らそうとします。
Tip
POP Propertyノードの Cling アトリビュートを使用すれば、パーティクルが滑るオブジェクトに引っ付くパーティクルの数を設定することができます。
Note
パーティクルがスライディングの状態になると、他のオブジェクトと衝突しなくなります。
Add Impact Data
Impact Dataをパーティクルに追加します。標準では、このデータはメモリ節約のために追加されず、 パーティクル衝突アトリビュートは、 Add Hit Attributes パラメータを有効にすることで簡単に作成されます。
Enable Collision Feedback
衝突オブジェクトにFeedback Impactを追加することができます。これは双方向での相互作用で必要です。
Sleeping
Enable Auto Sleep
十分な時間の間にほぼ静止状態になっているパーティクルに対して、stopped
アトリビュートを1
に設定してスリープにします。
Start Asleep
最初のフレームで、すべてのパーティクルをスリープとしてマークします。
Velocity Threshold
パーティクルがスリープになる条件を満たす前に必要となるパーティクルの移動の遅さ。
この速度より遅くパーティクルが移動している時間の量がdeactivation_time
アトリビュートに累積されます。
パーティクルがこの速度を越えると、deactivation_time
が0にリセットされます。
Sleep Delay
パーティクルがスリープになる条件を満たす前に必要となる、パーティクルがVelocity Threshold以下の速さでいる秒数。 再度パーティクルを目覚めさせる方法は、Wake Up POPを参照してください。
Sleeping Color
スリープになったパーティクルは、このカラーになります。
Note
目覚めたパーティクルは、現行のカラーのままになるので、これは目覚めたパーティクルが他のColor POPをアクティブにしない限りは色を変更しません。
Bindings
Geometry
POPノードの適用先となるシミュレーションデータの名前。 これは一般的にはGeometryですが、必要に応じてPOPネットワークを設計して別のジオメトリに適用することができます。
Evaluation Node Path
ローカルエクスプレッションを持つノードに関しては、これは、VEXのch()
形式のエクスプレッションを何処を基準に評価するか制御します。
このパラメータを.
に設定すれば、相対参照が働きます。
HDA内にノードを埋め込み、さらにローカルエクスプレッションをエクスポートするのであれば、このパラメータをプロモートすることが重要です。
Distribution
Tracker Address
同期化するためのsimtracker.pyプロセスを実行するマシン。 このフィールドが空っぽの場合、同期化やデータ転送が行なわれません。
Tracker Port
simtracker.pyプロセスを開始する時に指定する通信ポート。
Job Name
この同期化またはデータ交換のイベントを説明したジョブ名。 異なるジョブ名を使用することで、別々のデータ交換と同期化のイベントを別のマシンに分けることができます。
Slice/Peer
このマシンが自身を報告するスライス番号。ジョブ名で繋がっている各マシンには、固有のスライス番号を持ちます。 時々、この番号がオペレーションから推測することができるので、このパラメータは不要になります。
Number of Slice/Number of Peers
同期化するマシンの合計数。時々、この数はオペレーションから決めることができるので、このパラメータは不要になります。