先日はMAYAのMASH機能を使ってドーナッツの上に乗るチョコチップを大量にペイントするチュートリアル記事を書きましが、
今回は瓶に薬となるシリンダーをダイナミクスを使って大量に入れるチュートリアル記事を書いてみたので参考にしてみてください。
まずは瓶と大量に詰め込む薬を適当にモデリングします。
MASHを設定します。
アニメーションから
MASH→「MASHエディタ」
MASHエディタが表示されるので、「作成」から「MASHネットワークを作成」を選びます。
すると自動で円柱が複製され、「MASH_Distriubute1」が作られるので選択するとアトリビュートに
「配分」と書かれたアトリビュートが表示されます。
配分タイプを「グリッド」に変更して、
距離とグリッド数をそれぞれ変えて瓶の中に詰めたいシリンダーの量を作りますが、一度に大量のシリンダーを詰め込むとシュミレーション時間が多くかかってしまうので、今回は4分割してシリンダーを入れていきました。
1度に大量に入れようとしたら、全てのシリンダーが同時に動いて時間がかかりすぎて大変になりました…。
入れる瓶の大きさによりますが、今回の1回分はこの数値の塊で作りました。
こんな見た目になると思います。
ベースのシリンダーを変更したら全ての形状が変わる。
MASHを設定してあげると、ベースで作ったモデルを変形すると全てのモデルが自動で変わってくれるのでとても便利です。dyanmicsでシュミレーションした後にもフリーズしていなければ形状を変更する事も出来ちゃいます。
シリンダーの塊を作ったら、MASHエディタに「Transform」を追加して
位置を移動させて瓶に詰める場所に移動させてあげます。
次に「Dynamics」を追加します。これを追加する事でアニメーションを再生させたら瓶にシリンダーが入るようになります。
MASHエディタに追加されているのが分かります。
瓶に入る設定をしてあげる。
アニメーションを再生してみると、今はシリンダーが瓶には入らずすっぽり落ちてしまいます。どの瓶に入れるのか設定してあげないと入ってくれないので、Dynamicsを追加したら、瓶のオブジェクト「nurbstopoly1」を
「MASH_BulletSolver」を選びその中にある「コライダオブジェクト」の中に、中ボタンでポイッと入れてください。
また、シリンダーを瓶に綺麗に入れるために、”じょうご”となる大きな受け口を作ってあげました。
これも先ほどの「コライダオブジェクト」に追加してあげる事で、アニメーションした時に瓶の中にスムーズに入っていくようになります。
MASH_BulletSolverの設定をしてあげる
そして大切なのが、ここを設定してあげる事で隙間を減らして綺麗に詰め込む事が出来るようになります。
衝突の反復10
内部フレームレート240
衝突のマージン0
ではアニメーションの再生ボタンを押してください。
ドボドボっと入っていきます。
1回分が入り終わったらアニメーションを停止させて、「MASH_ReproMesh」をコピーしてモデルに変換します。
こんな感じ。
モデルに変換されたら「コライダオブジェクト」に追加して
また1からアニメーションを再生させると、上からシリンダーが積まれていきます。1度に全てのシリンダーを詰め込もうとすると、全てのシリンダーが少しずつ動くので処理に時間が掛かりますが、分割する事で時間をかけずに瓶にシリンダーを詰め込んでいきます。
2回目も詰め込み終わったらコピーして流し込む事を繰りかえせば
瓶に薬となるシリンダーを大量に詰め込む事ができました。ちなみに内側に少し食い込んでしまう場合は、瓶のモデルを少し変形させてあげればOKです。