すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

RBDのConstraintのSOPへの読み込み

SOP上へのRBDのConstraint Geometryの読み込み。

RBD Deform PiecesとかあのへんでSOPでもConstraint Geometryが必要なことがあるので。

RBD Bullet SOPを使用しない場合。特にRBDは使用しないことも多いのでメモ。

ただ結構ややこしい。

全体

f:id:godofsuama:20210220193011p:plain

DOP内

SOP上へ読み込むのに、DOP内のConstraint処理を変更する必要がある。

f:id:godofsuama:20210220191818p:plain

Constraint Networkのつなぎは通常通り、第二入力にGlue / Soft Constraint Relationshipとかをつなぐ。

Constraint Networkも通常通りだが、RelationshipタブのAttach Internal Constraints to Objectにチェックを入れる。

f:id:godofsuama:20210220192017p:plain

これにチェックを入れるとSOPで読み込めるようになるが、Constraint Networkの第三入力でConstraintが切れなくなる。

Rigid Body Solverの第三入力、Post-SolveにSOP Solverをつなぐ。

SOP SolverのData NameをConstraintGeometryに変更。

f:id:godofsuama:20210220193208p:plain

SOP Solver内で以下のようにする。

f:id:godofsuama:20210220193906p:plain

DOP ImportでConstraintGeometryを読み込む。

f:id:godofsuama:20210220193935p:plain

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のが良いと思う。

f:id:godofsuama:20210220194526p:plain

プレビューするとちゃんとBreakできているのがわかるはず。

f:id:godofsuama:20210220194723p:plain

SOPへの読み込み

前回のVellumをSOPに読み込む方法と同じ手法でSOPに読み込むことができる。

Geometry

f:id:godofsuama:20210220195018p:plain

ちなみに、この読み込み時にImport StyleをCreate Points to Represent ObjectsにするとPointのみ、読み込むようになる。

デフォルトでは、動かすのに必要なアトリビュートのみになるので、Transfer Attributesで必要なアトリビュートを指定する。

この方法のほうがキャッシュサイズが軽くなるため、ピースの数が増えた場合にFile IOの点で有利になるので可能な限りこちらで読んだほうが良い。

f:id:godofsuama:20210220195755p:plain

Constraint Geometry

f:id:godofsuama:20210220195044p:plain

i@group_broken = 1`でbrokenグループに入れた場合は、blastなどでGroup外飲み残したりする。

f:id:godofsuama:20210220195209p:plain

読み込んだConstraint Geometryの形状は動いていない状態になる。(アトリビュートは毎フレーム更新される)

もし動かしたい場合は、Transform Piecesなどで動かすことができる。

f:id:godofsuama:20210220195507p:plain