Maya 標準のリジッドボディシミュレーションは、シミュレーションしたいオブジェクトの形を真面目に計算してしまうので結構重いです。Physx や ODE であればサクサク計算できてしまうようなシーンでもスムーズに計算できなくてイライラしている人が全国に百万人ぐらいいることと思います。
Physx や ODE が軽いのは、ジオメトリを単純な箱や球形状に置き替えて計算しているからです。この方法であれば、数千ポリゴンもあるような複雑なオブジェクトでも簡単に計算ができます。
しかし、Maya ではこのような proxy オブジェクトを計算する方法が用意されていません。困りました。proxyオブジェクトで計算させてコンストレインでハイモデルを動かすようなことをしてもいいのですが、あまり cool な方法とは言えません。
そこで、 rigidBody ノードに入力するメッシュを差し替えることで proxyオブジェクトを使ってリジッドボディシミュレーションを行う方法を考えました。
もしかしたら、この方法は FAQ に載っているようなアタリマエな方法かもしれません。
max から乗り移るために Maya の勉強をしていて、自分で見つけた嬉しさの余り書いた記事なので、やさしく見守って(そして、コッソリ教えて)ください 🙂
シーンのセットアップ
まずは、普通にシーンをセットアップします。 Plane を Passive Rigid body にして床にし、 Helix を Active Rigid body にした上に重力をアサインします。
proxy オブジェクトの用意
今回は、わかりやすくするために Cube を proxy として使います。 Cube を作って Helix の子供にし、Helix を囲うぐらいの大きさに調整します。
rigidBody ノードにproxyをアサインする
Helix の rigidBody の “Allow Disconnection” にチェックを入れます。これをしないと proxy に差し替えることができません。続いて、Helix と Cube を選択して Hypergraph のコネクション表示にします。この中から pCube1 を探して、中ボタンを押しながら Helix までドラッグアンドドロップします。メニューからは Other を選択します。すると Connection Editor が開きます。Left Display と Right Display 共に Show Hidden をオンにします。pCube1 の WorldMatrix と rigidBody の Rigid World Matrix を接続します。
まとめ
これで、計算は proxy で行い、その結果を使って Helix のアニメーションを見ることができるようになりました。
今回は全て手作業で行いましたが、これをツール化すればかなり使えるテクニックになると思います。
オブジェクトのバウンディングボックスで演算させる方法があります。
え!!そうなんですか!?情報ありがとうございます。調べてみます。
この記事の意味が…いやいや。バウンディングボックスよりは
詳細に計算したい時とか役に立つはずです。多分。きっと!!