On this page |
この結果は、POP Solverで使用します。
パラメータ
Creation Frame Specifies Simulation Frame
作成フレームが、グローバルのHoudiniフレーム($F
)またはシミュレーション固有のフレーム($SF
)のどちらを参照するか決めます。
後者は、DOP Networkレベルのオフセット時間とスケール時間の影響を受けます。
Creation Frame
オブジェクトが作成されるフレーム番号。 現行フレーム番号がこのパラメータの値と同じ時にだけオブジェクトが作成されます。 つまり、DOP Networkは、指定したフレームでのタイムステップを評価しなければならないことを意味します。そうしないとオブジェクトが作成されません。
例えば、この値を3.5に設定すれば、必ずDOP Networkがフレーム3.5でタイムステップを持つように、DOP Networkの Timestep パラメータを1/(2*$FPS)
に変更しなければなりません。
Object Name
作成されるオブジェクトの名前。 これはGeometry Spreadsheet Viewで表示される名前で、この特定のオブジェクトを外部から参照するために使用します。
Note
同じ名前でたくさんのオブジェクトを持つことができますが、それでは参照の書き込みが困難になるので、名前には$OBJID
のような変数を使用することを推奨します。
Initial Geometry
POP Objectの初期状態として使用されるSOPのパス。
指定したSOPにパーティクル以外のジオメトリが含まれていれば、POP Solverが自動的にそれらの他のプリミティブをパーティクルシステムに変換するように設定することができます。
Use Object Transform
Initial Geometry を含んだオブジェクトのトランスフォームをGeometryデータに組み込むかどうか指定します。
Guides
Instance Guides
instancepath
アトリビュートをガイドジオメトリとして表示します。
Collisions
Tolerance
他のオブジェクトのサーフェスと衝突する時、この許容値が、光線の交差判断に使われます。
ポイントがサーフェスからこの距離内にある時は、そのポイントを衝突と見なします。
Volume Offset
ポイントがVolume表現と衝突した時、ボリュームのサーフェスがこの量で効率的に押し出されます。
上記の Tolerance 値と同様に、ポイントが実ボリュームからこの距離内にある時に衝突が発生します。
Physical
Bounce
オブジェクトの弾力性。Bounceが1.0の2つのオブジェクトが衝突すると、それらのオブジェクトはエネルギーを消失せずに跳ね返ります。 Bounceが0.0の2つのオブジェクトが衝突すると、それらのオブジェクトは停止します。
Bounce Forward
オブジェクトの接線方向の弾力性。Bounce Forwardが1.0の2つのオブジェクトが衝突すると、それらの接線方向の動きは、摩擦からの影響のみを受けます。 Bounce Forwardが0.0の2つのオブジェクトが衝突すると、それらの接線方向の動きは、一致します。
Friction
オブジェクトの摩擦係数。0の値は、摩擦なしを意味します。
これは、接線Velocityが衝突と静止接触で影響を受ける強さを制御します。
Dynamic Friction Scale
滑るオブジェクトは、静止しているオブジェクトよりも摩擦係数が低いです。このパラメータは、2つのオブジェクトに関連したスケール係数です。 これは摩擦係数ではなくて、0から1の間のスケールです。
1の値は、動摩擦と静摩擦が同じになることを意味します。0の値は、静摩擦を越えると、オブジェクトが摩擦なしで作用することを意味します。
Temperature
Temperatureはオブジェクトの温度をマークします。このパラメータは、燃料の着火ポイントまたは浮力計算のためにガスシミュレーションで使用します。
これは現実世界の温度スケールとは直接関係しないので、環境温度は通常では0と見なされます。
出力
First
このノードで作成されたシミュレーションオブジェクトが、単一出力を通して送り出されます。
ローカル変数
ST
この値は、ノードが評価されるシミュレーション時間です。
この値は、変数Tで表現される現在のHoudiniの時間と同じではなく、DOP Networkの Offset Time と Time Scale のパラメータの設定に依存しています。
この値は、シミュレーションの開始時間がゼロになるようになっています。つまり、シミュレーションの最初のタイムステップをテストする時は、$T == 0
や$FF == 1
を使うのではなくて、$ST == 0
のようなテストを使うのがベストです。
SF
この値は、ノードが評価されるシミュレーションフレーム(正確には、シミュレーションタイムステップ番号)です。
この値は、変数Fで表現される現在のHoudiniのフレーム番号と同じではなく、DOP Networkパラメータの設定に依存しています。代わりに、この値は、シミュレーション時間(ST)をシミュレーションタイムステップサイズ(TIMESTEP)で割算した値と同じです。
TIMESTEP
この値は、シミュレーションタイムステップのサイズです。この値は、1秒あたりのユニットで表現した値をスケールするのに役に立ちますが、タイムステップ毎に適用されます。
SFPS
この値は、TIMESTEPの逆数です。シミュレーション時間の1秒あたりのタイムステップ数です。
SNOBJ
これはシミュレーション内のオブジェクトの数です。Empty Objectノードなどのオブジェクトを作成するノードでは、この値は、オブジェクトが評価される度に値が増えます。
固有のオブジェクト名を確保する良い方法は、object_$SNOBJ
のようなエクスプレッションを使うことです。
NOBJ
この値は、このタイムステップ間で現行ノードで評価されるオブジェクトの数です。 この値は、多くのノードがシミュレーション内のオブジェクトすべてを処理しないので、SNOBJとは異なります。
この値は、ノードが各オブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJ
この値は、ノードで処理される特定のオブジェクトのインデックスです。 この値は、指定したタイムステップで常にゼロからNOBJ-1まで実行されます。 この値は、OBJIDやOBJNAMEなどのシミュレーション内の現行オブジェクトを識別せず、現在の処理順でのオブジェクトの順番を識別します。
この値は、オブジェクト毎に乱数を生成するのに役に立ちます。他には、処理別にオブジェクトを2,3のグループに分けるのに役に立ちます。 この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
OBJID
この値は、処理されているオブジェクトの固有のオブジェクトIDです。 すべてのオブジェクトは、すべての時間のシミュレーション内のオブジェクトすべてで固有な整数値が割り当てられています。たとえオブジェクトが削除されても、そのIDは決して再利用されません。
オブジェクトIDは、指定したオブジェクトを固有なものと識別するために常に使われています。 オブジェクトIDは、オブジェクト毎に別々の処理をさせたいシミュレーションで非常に役に立ちます。 オブジェクト毎に固有の乱数を生成するのにも使われます。
この値は、dopfieldエクスプレッション関数を使って、オブジェクトの情報を検索するのにベストな方法です。 この値は、ノードがオブジェクトを続けて処理(例えば、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ノードでは、以下のエクスプレッションを記述することができます:
$tx + 0.1
これはオブジェクトをタイムステップ毎にX軸方向に0.1単位分移動させます。
Examples
The following examples include this node.
FieldForceSmoke Example for Field Force dynamics node
SmokeシミュレーションからVelocityフィールドを抽出して、それをPOPシミュレーションの風のフォースとして使用します。
FEMSpheres Example for finiteelementsolver dynamics node
このサンプルでは、FEM Solverを使用して、球が地面と衝突した時にその球を変形させる方法を説明しています。 この球は、地面と衝突する前にパーティクルベースのアニメーションをしていて、衝突時にFEM Solverに切り替わります。
AdvectByFilaments Example for POP Advect by Filaments dynamics node
このサンプルでは、POP Advect by Filamentsノードを使って、VortexフィラメントのセットのVelocityフィールドで パーティクルを移流させる方法を説明しています。
AdvectByVolume Example for POP Advect by Volumes dynamics node
このサンプルでは、POP Advect by Volumesノードを使って、煙シミュレーションのVelocityで パーティクルを移流させる方法を説明しています。
ParticlesAttract Example for POP Attract dynamics node
このサンプルでは、POP Attractノードを使って、パーティクルのグループを、アニメーションする球の動きに追いかけさせる方法を説明しています。 さらに、POP InteractとPOP Dragのノードを使って、パーティクルと球の距離間での作用を制御しています。
ParticlesIntercept Example for POP Attract dynamics node
このサンプルでは、POP Attractノードを使って、個々のパーティクルを妨害したり、 追従するパーティクルシミュレーションを作成する方法を説明しています。
PointAttraction Example for POP Attract dynamics node
このサンプルでは、POP AttractノードのAttraction TypeをPointに設定することで、 ポイント単位でパーティクルの引き寄せを制御する方法を説明しています。
SphereAxisForce Example for POP Axis Force dynamics node
このサンプルでは、POP Axis ForceノードのTypeをSphereに設定してパーティクルシミュレーションを制御する方法を3通り説明しています。
TorusAxisForce Example for POP Axis Force dynamics node
このサンプルでは、POP Axis Forceノードを使って、パーティクルのグループを渦巻き上げさせる方法を説明しています。
ParticleCollisions Example for POP Collision Detect dynamics node
このサンプルでは、POP Collision Detectノードを使って、 変形しながら回転するトーラスと衝突するパーティクルをシミュレーションする方法を説明しています。
ColorVex Example for POP Color dynamics node
このサンプルでは、POP ColorノードでVEXエクスプレッションを使って、パーティクルに色を付ける方法を3通り説明しています。
CurveForce Example for POP Curve Force dynamics node
このサンプルでは、POP Curve Forceノードを使って、パーティクルシミュレーションとFLIP流体シミュレーションの流れを制御する方法を説明しています。
FlockInPops Example for POP Flock dynamics node
このサンプルでは、POP Flockノードを使って、パーティクルの群れを制御する方法を説明しています。
CurlForce Example for POP Force dynamics node
このサンプルでは、POP Forceノードを使って、渦巻きノイズをパーティクルシミュレーションに加える方法を説明しています。
BaconDrop Example for POP Grains dynamics node
このサンプルは、ベーコンをトーラス上に落とすデモです。 これは、テクスチャマップから2Dオブジェクトを抽出し、同じ肉の筋目をしたオブジェクトをDOPへ繰り返しで追加する方法を説明しています。
KeyframedGrains Example for POP Grains dynamics node
このサンプルでは、ソリッドの豚の頭の内部のGrain(粒)にキーフレームを打って、アニメーションする操り人形の作成方法を説明しています。
TargetSand Example for POP Grains dynamics node
このサンプルでは、モデルの表面上のポイントに引き寄せられる粒のシミュレーションを説明しています。
VaryingGrainSize Example for POP Grains dynamics node
このサンプルでは、まったく異なるサイズの粒で引き寄せられるシミュレーションを説明しています。
SwarmBall Example for POP Interact dynamics node
このサンプルでは、POP Interactノードを使って、パーティクル間の距離を制御し、ボール状の群れを作成する方法を説明しています。
LookatTarget Example for POP Lookat dynamics node
このインタラクティブなサンプルでは、POP Lookatノードの使い方を説明しています。 再生ボタンを押して、ビューポートにある緑のターゲットハンドルを動かしてみてください。 円錐のパーティクルが、あなたが動かしたターゲットの方向に向きます。
DragCenter Example for POP Property dynamics node
このサンプルでは、POP PropertyノードのDrag Centerパラメータを使用して、中心のずれた抵抗を落下オブジェクトに適用する方法を説明しています。
ProximateParticles Example for POP Proximity dynamics node
このサンプルでは、POP Proximityノードを使って、近くにあるパーティクルを探して、 他のパーティクルとの近接度に基づいてアトリビュートを設定する方法を説明しています。
CrossTheStreams Example for POP Stream dynamics node
このサンプルでは、POP Streamノードを使って、パーティクルシミュレーション内で異なる挙動をするストリームを定義する方法を説明しています。
ShatterDebris Example for RBD Fractured Object dynamics node
このサンプルでは、破壊の方法を説明しています。 RBD Fractured ObjectやDebrisのシェルフツールを使えば、破壊されたジオメトリの破片から発生する瓦礫を作成することができます。
まず最初に破壊の定義をするために、Shatterツール(Modelシェルフ)をグラスに使用します。 次にRBD Fractureツールをグラスに使用して、その破壊された破片をRBDオブジェクトにします。 最後にDebrisツールをそのRBD Fractureオブジェクトに使用してデブリ(瓦礫)を作成します。
popswithrbdcollision Example for RBD Point Object dynamics node
RBD形式の衝突をPOPで行なうために、POPシミュレーションにRBDシミュレーションを接続する方法を説明しています。
DentingWithPops Example for SOP Solver dynamics node
このサンプルでは、たくさんの重要なDOPの概念を組み合わせています。
-
最初に、POP SolverとRBD Solverのオブジェクトを両方使って、双方向にお互い反応させます。 RBDオブジェクトは、パーティクルに影響を与え、パーティクルはRBDオブジェクトに影響を与えます。
-
次に、実際にRBDオブジェクトにMulti-Solverを使って、RBD SolverとSOP Solverを組み合わせます。 RBD Solverは全体のオブジェクトの動きを制御し、一方でSOP Solverはジオメトリを凹ませます。
-
最後に、SOP SolverはRBD SolverからImpact情報を抽出してジオメトリを凹ませます。 SOP Solverは、DOPエクスプレッション関数を使って、この情報を抽出します。
その結果、パーティクルをぶつけられるトーラスのシミュレーションになります。 パーティクルはトーラスで跳ね返り、トーラスが動きます。 さらに、各パーティクルの衝突によって、トーラスが少し凹みます。
See also |