DOP
ダイナミクス
単位時間ににおける処理のための状態を記述する。SOPのような上から下にデータが逐次的に流れ、Cookが実行されていくのとは大きくことなる。
ネットワークによって構築するのは、シミュレーションの「場」のようなもの
流体や破片、パーティクルであってもコリジョンジオメトリを同じように持っているために衝突が可能
フレームを使うと齟齬が発生するため$F(@Frame)や$T(@Time), ではなく、 $ST, $SFを使う
単位は重さ:kg、時間:秒、長さ:m、密度:kg/m^3
solverは様々な条件を加味して、力、位置を計算する
solverの計算時に、DOP上に登録されている状態が加味される
その時の力、衝突の挙動は決定するが、衝突結果を計算するわけではない
異なる挙動を持つシミュレーション(例えば液体や剛体)はmulti solverで逐次計算できる
DOP networkのmax feedback loops
衝突を探すためのループ回数
この数を制限すれば、衝突は不十分になるが、処理は軽くなる
Constraintは基本的にはグラフ構造で、ポイントとポイントを結ぶラインでそこに持つAttributeによって挙動を定義する
RBD bullet
あるポイントに固定→解放、といようなユースケースが多い
PackedGeometryと対応付けるs@nameはpoint attribute
Geometry側もPrimitiveではなくPointにnameをもたせる
s@nameに重複があると、問答無用で落ちるので注意
s@constraint_name: Glue, Pin, Soft ...
f@restlength
f@strength
Vellum
s@constraint_name
f@restlength
f@strength
SOP
vellumなどDOP Network配下に入らずフレームワーク化されているものが多い
基本的にはGeometryに対するConstraintの構築であり、DOPも自分で最小限を組めたほうが動作も軽く、汎用性がある
SOP階層では、SOPのIOや、Constraintの設定系が多い
Vellum系
RBD Bullet系
RBD pin constraint
RBD constraint property
RBD material fracture
材質からGeometryの適切なピース分割と、Constraintの作成を行ってくれる
DOPノード
merge
リレーションをつくる
衝突できる関係にする
なのでアイコンがサイロ
シミュレーションシナリオを構築するためstaticなものは最初に置く
multi solver
オブジェクトに対して複数のsolverを組み合わせられる
たとえば、bullet solverとpopの処理
rigidbody solver
名前が混同しまくっているがrbd solverと bullet solverを内包しており、どちらを使うかを選択できる
solverの実体はこれら
bulletのほうが高速でモダンなど
GeometryとPOP処理を入力できるため便利
bullet solver
rigidbody solverの内部にあるので、
packed geometryのコリジョン処理、v@w , pivot, orientの出力
RBD packed object
RBDでは単一であっても、packed geometryを使うのが一般的か
deforming, animatedのアトリビュートで衝突のための形状更新がかわる
v@w , pivot, orientを初期値として持たせられる
Initial State > Inherit Velocity from Point Velocityにチェック
constraint network
SOPとConstraintの定義を紐づけ、決定させる
定義はhard con rel, bullet soft con rel, spring con relなどが存在
SOPでの命名(Glue, Softなど)は実は任意で、ここで対象指定できる
POP
パーティクルベースのシミュレーションを扱うノード群
紫のピン、線
pop solver
パーティクルのライフなどでステータス管理も行う
アニメーション挙動はv@force, v@vなどを使う
rigidbodyもPacked Primitiveを使う限りはパーティクルベースとしてみなせるため、POPと併用が可能
Ref