破壊する物体を、2つのパーツから構成するようにしました。 まずは、物体が地面にちゃんと接地している状態にしたいので、シミュレーションを実行して Apply Transformation をしておきます。 (RigidBody06.html参照) | |
それぞれ Cell Fracture を実行しました。 シーンが多少複雑なので、破片の数は少なめにしています。 破片について色分けをしています。 また、破片と破片になる前の物体が重なっているので、表示も乱れています。 | |
元の物体は、Cube.A と Cube.B という名前にしました。 それぞれの破片は、FractureA と FractureB というコレクションに含まれるようにしました。 | |
破片、FractureA と Cube.B に剛体設定をして、シミュレーションで壊してみます。 壊れる前の Cube.A は剛体設定を切っておきます。 | |
剛体の設定をするときには、破片をコレクションごとにまとめて選んで、Copy From Active や Calculate Mass をします。 (1個1個設定はしていられないので…) アウトライナーからうまく選択をするか、Ctrl+G の Select Grouped (グループで選択)を利用するとまとめて選択が手早く行えます。 | |
次に、FractureB の側も剛体にしますが、そのままでは Cube.B と重なっているのではじけ飛んでしまいます。 | |
剛体同士の相互作用の(する/しない)は剛体の設定の中の Collection (コレクション)で設定できます。 |
Animated(アニメ)設定にキーを打って、最初は手付のアニメーション(つまり静止状態)でいて、ある程度時間が進んでから Animated を切って、シミュレーションによって動くようにします。 | |
これも一つ一つアニメーションを設定するのは大変すぎるので、Ctrl + L によって Link(リンク作成)を使います。 アニメーションデータをリンクすると、アクティブなオブジェクトのアニメーション情報が、選択されたオブジェクト達にコピーされます。 | |
時間差で破壊が起きました。 あとは、赤い破片たち(FractrueB)が動き出す前までの間、Cube.B に親子関係を付ければある程度破壊が進んだ状態から2段階目の破壊が起きそうなのですが… 剛体同士の親子関係は残念ながら機能しません。 | |
そこで Cube.B の動きを剛体としての運動ではなくし、シミュレーションの結果を通常のアニメーションとして保存すれば良いことになります。 ただし、一旦アニメーションにしてしまうと、調整してシミュレーションのやり直しなどがしづらくなってしまいます。 そこで、エンプティに登場してもらいます。 エンプティを原点に配置して… | |
Constraint の Child of (チャイルド)で、Cube.B の子供の様にすることができます。 | |
オブジェクトメニューの Animation > Bake Animation (アニメーションをベイク)で、エンプティの動きをアニメーションとして焼き付けることができます。 | |
オプションとして、Visual keying (ビジュアルキーイング)と Clear Constraints(コンストレイントをクリア)しておきます。 コンストレイントによる動きを考慮してベイクを行い、ベイク後にコンストレイントがクリアされます。 | |
エンプティは、Cube.B と同じ動きをしますが、その動きはシミュレーションとは関係なくアニメーションとして焼き付けられています。 そのため、剛体である赤い破片も、このエンプティの子供にして動かすことができます。 | |
赤い破片が途中で崩壊する2段階の破壊が表現できました。 これでCube.B を非表示にすれば良い…ように見えますが、まだCube.B は緑の破片とは相互作用してしまっています。 オブジェクトごと削除するのが手っ取り早いですが、 再調整用に残しておきたければ、非表示にして剛体のコレクションを変えて相互作用をなくすなどの工夫をすればよいでしょう。 |