どうも篠島です。RBD Fracture Object等で複数のDOPオブジェクトを作った場合、全てがバラバラだと面白くないので普通はいくつかのオブジェクトをまとめて一つの塊のように扱います。そこで使うのがGlueの設定です。現在はBulletソルバーによるGlue Constraint Networkなどを使ったGlueの設定が主流ですが、今回は普通のRBD Object内のGlueタブの設定の説明です。
今回のサンプルファイルです。
Fracture_Glue.zip
前回のブログで下準備した椅子のオブジェクトをRBD Fracture Objectで読み込んでみます。椅子オブジェクトにはAssemble SOP で Create Groups をONにすることでグループも作っています。これにより、RBD Fracture Objectで name アトリビュートまたはグループによってDOPオブジェクトが作ることが出来ます。今回はグループ名を元にDOPオブジェクトを作っています。
実際にシミュレーションしてみると全てのオブジェクトがバラバラです。これでは全然椅子に見えませんね。
そこで、GlueタブによってDOPオブジェクトを別のDOPオブジェクトにくっつけることが出来ます。Glue to Object の所でくっつけたいDOPオブジェクトを指定します。Glue Strength で強度を指定します。もしオブジェクトにかかるフォースがこの Glue Strength を超えると Glue が破壊されてバラバラになります。Glue Strength のデフォルトの値は -1 で、これはどれだけ大きなフォースが加わっても絶対に壊れません。今回は適当な値で1250という値を指定しています。Glueの設定をすると、Geometry Spreadsheet内でデータが確認できます。DOPオブジェクト内の Position の中で glueobject とgluethreshold というデータが変更されているのが確認できます。
Glue の設定をしたシミュレーションは以下の用になります。オブジェクト同士が繋がることで、衝突の際も椅子の形を保っているので、さっきのシミュレーションよりも椅子っぽくみえますね。
ちなみに Glue するオブジェクトは椅子の座る部分のオブジェクトを指定していますが、Glueするオブジェクトには気をつける必要があります。もし物理的につながっていないDOPオブジェクトに対して Glue してしまうと、オブジェクトが空中に浮いてしまう場合があります。
物理的につながっていないオブジェクト同士を Glue したものが下のシミュレーションです。オブジェクトの幾つかは衝突の際に Glue が壊れますが、残りのオブジェクトはそのまま Glue されたまま空中に浮いてしまっています。なのでGlue先のオブジェクトには注意をはらいましょう。そして椅子のシミュレーションでGlue先のオブジェクトを変えていろいろと試してみてください。