SOP上へのRBDのConstraint Geometryの読み込み。
RBD Deform PiecesとかあのへんでSOPでもConstraint Geometryが必要なことがあるので。
RBD Bullet SOPを使用しない場合。特にRBDは使用しないことも多いのでメモ。
ただ結構ややこしい。
全体
DOP内
SOP上へ読み込むのに、DOP内のConstraint処理を変更する必要がある。
Constraint Networkのつなぎは通常通り、第二入力にGlue / Soft Constraint Relationshipとかをつなぐ。
Constraint Networkも通常通りだが、RelationshipタブのAttach Internal Constraints to Objectにチェックを入れる。
これにチェックを入れるとSOPで読み込めるようになるが、Constraint Networkの第三入力でConstraintが切れなくなる。
Rigid Body Solverの第三入力、Post-SolveにSOP Solverをつなぐ。
SOP SolverのData NameをConstraintGeometryに変更。
SOP Solver内で以下のようにする。
DOP ImportでConstraintGeometryを読み込む。
Transform Geometry With Position Data, Transform Geometry With Geometry Data, Add DOP Object Path Attribute, Add to Existing Velocity Attributesをオフにする。
Point VelocitiesをNo Point Velocitiesに変更。
Primitive Wrangleで分離処理を書く。
removeprim
で通常通りBreakしてもいいが、brokenに入れる処理でも良い。
SOPでなにかbrokenを使いたいことがあればbrokenのが良いと思う。
プレビューするとちゃんとBreakできているのがわかるはず。
SOPへの読み込み
前回のVellumをSOPに読み込む方法と同じ手法でSOPに読み込むことができる。
Geometry
ちなみに、この読み込み時にImport StyleをCreate Points to Represent ObjectsにするとPointのみ、読み込むようになる。
デフォルトでは、動かすのに必要なアトリビュートのみになるので、Transfer Attributesで必要なアトリビュートを指定する。
この方法のほうがキャッシュサイズが軽くなるため、ピースの数が増えた場合にFile IOの点で有利になるので可能な限りこちらで読んだほうが良い。
Constraint Geometry
i@group_broken = 1`でbrokenグループに入れた場合は、blastなどでGroup外飲み残したりする。
読み込んだConstraint Geometryの形状は動いていない状態になる。(アトリビュートは毎フレーム更新される)
もし動かしたい場合は、Transform Piecesなどで動かすことができる。