リジッドボディ基礎15 アニメーションからシミュレーションへの移行の仕方


こんにちは篠島です。今回はアニメーションからシミュレーションへの移行の仕方を説明します。

 

今回のサンプルファイルです。
Anim_to_Sim.zip

 

アニメーションからシミュレーションへ移行する一番簡単な方法はRBD Packed Objectを使うことです。Bulletソルバー限定ですが、RBDソルバーを使う機会はそうそうないと思うので大丈夫でしょう。もしRBD ObjectとRBDソルバーでアニメーションからシミュレーションへの切り替え方が知りたい方はOBJ Position DOP または RDB Keyframe Active DOP などを使えばできます。

 

RBD Packed Object の良い所は様々なパラメーターをポイントアトリビュートによってコントロールできる所です。例えば、Overwrite Attribute というパラメーターがあり、ここで指定したアトリビュートはSOPジオメトリのアトリビュートから値を持ってきます。なので、Initial Object Type がActiveであっても、ポイントアトリビュートのactiveアトリビュートが0であればStaticになったりと柔軟なコントロールができるわけです。ここで animated というアトリビュートがあり、これを1にしてやる事でDOP内でアニメーションを再生できるわけです。しかし、DOP内でアニメーションを再生するにはactiveアトリビュートは0で無ければなりません。

 

たとえば下のように sin() と cos() で円を描くアニメーションがあるとします。

 

SOPレベルで下のように active と animated アトリビュートを作ります。途中で active を1にしてシミュレーションが適用されるようにしています。

 

 

すると下のような最初はアニメーションを再生して、途中からシミュレーションに変わるシーンを作ることが出来ます。SOP内でVelocityを計算してやらなくてもDOP内で自動的に計算されているので、トランジッションもスムーズです。