どうも、篠島です。今まではRBD Objectを使って一つのオブジェクトだけを使ってシミュレーションしてましたが、今回は複数のオブジェクトをRBD Point Objectによって作ってみたいと思います。
今回のサンプルファイルです。
RBD_point.zip
RBD Point Object
RBD Point Object はCopy SOPと非常に似ていて、あるポイントに指定したジオメトリをコピーしてDOPのオブジェクトを作ります。Copy SOPを理解している人は簡単にRBD Point Objectも使うことが出来ます。 ポイントのアトリビュートによって、作られるオブジェクトの向きや大きさなどが簡単に変えられます。
Point SOP Pathでポイントを指定し、Geometry PathをOverride Point Valueにしてコピーしたいオブジェクトを選択します。
試しにおなじみのテストオブジェクトをGridに配置してみたのが下のGIFアニメーションです。Rotate to Normal をONにすると、ポイントの法線の向きにオブジェクトが向きます。Use Particle Scale AttributeをONにすると、pscaleアトリビュートを元にオブジェクトのサイズが変わります。ポイントには予めNormal と pscale をランダムな値を入れています。
ポイントアトリビュート
RBD Point Objectのアトリビュートの殆どが、ポイントからアトリビュートを読み込んでオブジェクトごとに異なる値を指定することが出来ます。どんな名前のアトリビュートを作ればいいかわからない場合はパラメーターにマウスを載せると名前を確認することが出来ます。
下のGIFアニメーションはポイントにランダムなbounceアトリビュートを付けたものです。オブジェクトごとに跳ね返りの強さが違うのが確認できます。
コピーするオブジェクト
もしポイントごとに異なるオブジェクトを作りたい場合は、Geometry PathをUse Point Valueにし、SOP上でPoint SOPを使ってAdd Instanceを選んで、instanceアトリビュートを追加します。アトリビュートを確認すると、instanceというアトリビュートにオブジェクトのパスが入っているのが確認できます。
instanceアトリビュートを追加するのはPoint SOPで無くてはダメという訳ではなく、Attribute VOPやWrangleでinsntanceという名前のアトリビュートを作って値を入れてやれば問題なくできます。Point SOPはマルチコアに対応していないので、Point SOPはできるだけ使いたくない という人は手動でアトリビュートが作れます。
ポイントにinstanceアトリビュートをつけて、異なるオブジェクトを作ってみたのが下のGIFアニメーションです。