MODO 機能紹介・チップスサイト このサイトでは、MODOの基本機能やチップスをご紹介していきます。

パーティクルの衝突でメッシュを変形させるには

https://www.youtube.com/watch?v=y8wuT48QUEc

今回はパーティクルがメッシュに衝突することで、メッシュを変形させる方法を解説していきます。

まずは衝突される側となるメッシュを作ります。ツールを起動し、ツールプロパティパネルを開いたら、球モード四角形ボール分割レベル4ポリゴンタイプCatmull-Clarkに設定し、適用ボタンをクリックします。わかりやすいように名称はBallとしておきましょう。

次にこのボールに衝突するパーティクルを作成します。セットアップパレットのパーティクルのサブタブからラディアルエミッターを追加します。これは放射状にパーティクルを噴出します。ボールから若干離して配置します。ボールに向かって一直線にパーティクルを放射できるよう、角度を変え、円錐角度も5度程度にしておきます。パーティクルの動きが見やすくするため、Particle Simulationのサイズを5ぐらいに変更しておきましょう。

では、まずはボール側の設定を行います。こちらのボールの設定は、パーティクルの衝突によって柔らかく変形していきますので、ダイナミクスのソフトボディに設定します。ボールを選択し、ダイナミクスタブからソフトボディを適用します。このままの状態でシミュレーションを行ってみると、ボールが緩やかに落下していくのが確認できます。デフォルトの状態では重力の設定が行われているためです。このシーンでは重力設定は必要ありませんので、アイテムリストからsolverのアイテムを選択し、重力の値を0に設定しておきます。

再度ボールを選択してみると、ダイナミクスのタブが追加されますので、ソフトボディのカテゴリを見てみます。ここで必要となるのがゴールの設定です。このボールのメッシュはパーティクルによる衝突を受けることになりますが、その際にゴールマップでボールの中で動かない個所というのを設定していないと、正しくパーティクルの動きを反映させることができません。

今回の場合、ボールの再度部分にあるポリゴンを2枚選択し、ここに対してGoalというウェイトマップを設定してみます。ゴールマップを作成したら、ゴール一致の値を100%、ゴールマップのドロップダウンから先ほど作成したGoalのウェイトマップを指定しておきます。これでボール側の設定はいったん終了です。

次にパーティクル側の設定を行っていきます。パーティクルは勢いよくボールに衝突してほしいので、初期速度を5mぐらいにしておきます。この状態ではまだ、シミュレーションをキャッシュして確認してみても、パーティクルはボールをすり抜けていきます。パーティクルとダイナミクスを組み合わせるには、ダイナミックリプリケータというアイテムを使用します。

アイテムリスト アイテム追加ダイナミクスの中にあるDynamic Replicatorを追加します。ここからの設定はスケマティックビューを使って、全体を確認しながら行っていきましょう。スケマティックビューを出し、パーティクル設定のParticle Simulationとダイナミクス設定のsolverを追加して、それぞれ関連するノードを展開してみます。この状態ではお互いに関連がありませんが、Dynamic Replicatorsolverダイナミクスへと接続することで、パーティクルとダイナミクスの設定がリンクするようになります。

ただしこの段階でも、まだ放射されるパーティクルはボールをすり抜けていきます。これはDynamic Replicatorで衝突する設定は行われたものの、実際にジオメトリのデータを持つ衝突を起こすためのメッシュレイヤーがプロトタイプとして設定されていないためです。ですので、ここでひとつひとつのパーティクルに対応するメッシュレイヤーを作ります。空のメッシュレイヤーを一つ作ったら、小さめのボックスを作っておきます。これをDynamic Replicatorのプロトタイプに接続します。

シミュレーションをキャッシュして確認してみると、パーティクルがボールに衝突し、ボールにへこみができているのがわかります。より正確に演算させたいという場合には、Dynamic Replicatorの衝突シェイプメッシュに変更してみてください。これでより正確な結果は得られるようになりますが、プロトタイプとなるメッシュが複雑になると、その分演算処理に時間はかかりますので注意してください。

リプリケータを追加して、実際に衝突の様子を確認してみましょう。このときリプリケータプロトタイプは、Dynamic Replicatorプロトタイプと合わせる必要はありませんので、衝突演算用のDynamic Replicatorでは簡易的な形状を用い、リプリケータではより複雑な形状を用いるということが可能です。

これでも十分面白い表現が可能ですが、さらに衝突したメッシュにパーティクルがスナップする表現も試してみましょう。メッシュの表面にパーティクルをスナップさせるには、Particle Snap Modifierというモディファイヤを使用します。スケマティックビューの追加 Particles Particle Snap Modifierを追加します。Particle Snap ModifierのパーティクルソースとしてParticle Simulationを指定し、スナップさせる先のメッシュとしてボールのメッシュを指定します。さらにプロパティとして、最大距離を少し大きめの値に指定し、スナップタイプClosest、一番近い位置というのを指定します。これでパーティクルがボールのメッシュに対して一番近い距離にスナップするようになります。あとはParticle Snap ModifierをReplicatorのパーティクルソースに接続しなおしてみます。そうすると、ボールはパーティクルの衝突で変形を行いながら、メッシュに衝突したパーティクルはボールの表面にとどまったままという表現を可能にすることができます。

2021年5月11日