チュートリアル / 3ds Maxではじめるエフェクト制作
第3回:mParticles Flowの応用
- 3ds Max
- エフェクト
- コラム
- チュートリアル
- 学生・初心者
トリプルアディショナル小張です。
前回はmParticles Flowを使用して、リジッドボディーのシミュレーションをしていきました。
今回はもう少しだけ踏み込んだ使用方法を紹介していきます。
具体的には、mParticles GlueとParticle Skinnerを使用していきます。
mParticles GlueとParticle Skinnerを使用すると何が出来るのか?を先に説明しておきます。
mParticles Glueをヘルプで見てみると、パーティクル間のバインドを作成するテストと書いてあります。
またGlueを辞書で調べてみると、「接着剤」等と出てくるかと思います。
その意味通りの感じで、パーティクル同士を結び接着する機能になります。
mP Glueなし
mP Glueあり
Paricles Skinnerは、Paricle Flowによるパーティクルを使用してジオメトリ(ポリゴンやメッシュ等)を変形する機能になります。
二つの機能を組み合わせることで、ソフトボディーシミュレーションのようなことや破れ散るようなアニメーションが可能になります。
ソフトボディーとは、ジオメトリーが変形するものを指します。
ゴム製のボールであったり、固体のゼリー(液体ではない)や、クロス(布)等と色々あります。
クロスシミュレーションであれば、3ds MaxではCloth機能の方が向いています。
また単体でゼリーのようなものにアニメーションを付けていくときは、flexだったりの方が思い通りの動きを作っていき易いと思います。他のものにも向き不向きがあります。
パーティクルベースでソフトボディーシミュレーションが向いているものとしては、ある程度リアルさを妥協できるような状況で、大量のオブジェクトに対してシミュレーションが必要な場合や、よりエフェクティブな絵作りを求められているときであったりではないかと思います。
では、以下のようなアニメーションを作ってみます。
以降青文字は何のために作業したかの解説になります。
シーンにはエミッターにするオブジェクトが二つ入っています。
ネット用のオブジェクト(Net_Emitter)と、固定するための枠用のオブジェクト(Frame_Emitter)です。
今回はゼロから作っていこうと思うので、フローからEmpty Flowを選びドラッグ&ドロップします。
さらにオペレーターからBirthをドラッグ&ドロップし発生イベントを作成します。
後々分かり易いように、イベント名をnetに変更しました。
作成したイベント名をnetに変更します。
オブジェクトをエミッターとして使用するにはPosition Objectを使用します。
Position Objectを作成した発生イベント(netイベント)にドラッグ&ドロップします。
Position Objectを選択した状態でEmitter Objectsにネットになるオブジェクト(Net_Emitter)を選択。
LocationをVertex Allにします。
グローバルイベント(PF Source 001)とnetイベントを繋ぎます。
次にイベントのBirthを選択しEmit Start およびStopを0にし、0フレーム目でパーティクルが発生しきるようにします。
ネット用のエミッターの頂点を埋め尽くせていないので、エミッターの頂点数とパーティクルの量を合わせてあげます。
Amountを発生源オブジェクト(Net_Emitter)の頂点数と同じ441に変更します。
同様の作業を枠用のオブジェクトにも行っていきます。

ここで一つ重要な点としては、mParticles Flowのシミュレーションで別の発生イベントのパーティクルと相互作用させるには、基本的には上の画像のようなつなぎ方をします。
同じグローバルイベントに繋いであげることで複数のイベントで発生したパーティクルを相互作用させることが出来ます。
次にmPartices Flowを仕込んでいきます。
netイベントにshapeをドラッグ&ドロップします。
作成したShapeを選択した状態で、sphere 20-sideに変更します。
追々上からモノを落とした時に突き抜けてしまわぬようサイズを大き目の15にしました。
さらにmPartices Flowでのシミュレーション用にmP Shapeをnetイベントにドラッグ&ドロップします。
追々調整した結果ではありますが、ある程度パーティクルが交差出来るようにShape Interpentration内にあるTolearanceを8にしました。
次にmP Worldをnetイベントにドラッグ&ドロップします。
作成したmP Worldを選択した状態で、Create New Driverをクリックしドライバーを作成します。
こちらも調整していった結果ですが、ドライバーの設定で重力を300にしました。地面は今回は不要なのでGround Collision Planeはオフにします。
矢印のようなアイコンをクリックしドライバーの設定を開き、Apply Gravityのチェックをオン。
Ground Collision Planeはオフにします。
ここまで出来たら、netイベントのShapeとmP Shape、mP World をshift+Dragでframeイベントにインスタンスコピーします。
次にmParticles Glueを設定していきます。

netイベントにmP Glueをドラッグ&ドロップします。
作成したmP Glueを選択した状態で、Vizualize Bindingのチェックを入れてみます。
デフォルトの設定ではもっと距離が近くないとバインドされないので、何も表示されません。
もっと遠くまでバインドされるようBind Distanceの値を大きくしていきます。
Bind Distanceの値を10まで上げました。青い線で結ばれたでしょうか?
更新されてない場合があるのでタイムスライダーを1フレ等動かしてみると更新されます。
バインドはされましたが、このままでは下に落ちていってしまします。
そこで固定するための設定をしていきます。
frameイベントに、mP Switchをドラッグ&ドロップします。
作成したmP Switchを選択した状態で、Turn Off Simulationにチェックを入れます。
これで、frameイベントのパーティクルは動かなくなりました。
次にnetイベントに戻り、mP Glueを選択
mP Glueのパラメーター内、To Bind WithでCurrent Event Particlesのチェックを外しOther Event Particlesにチェックを入れます。
さらに、その直下にある選択ボックスでnetとframeの両方のイベントを選択してあげます。
そうすると、netとframeイベントがバインドされます。Vizualize Bindingにチェックが入っていれば線で結ばれるかと思います。
試しに再生してみます。
四隅が固定され、真ん中の方だけ撓んでいるのが確認できるかと思います。
では、上から球体を落としていってみます。
Birth Streamをパーティクルビューの空の部分にドラッグ&ドロップし、新たにBirthイベントを作成します。
さらに作成したイベントにPosition Icon、Shape 、mP Shapeをドラッグ&ドロップします。
ShapeをSphere 80-sideに変更 Sizeを20にしました。
mP ShapeのCollide AsをSphereに変更。Mass(質量)をBy Valueに変更し1500と大き目にします。
シーンにあるPF Source 001のアイコンを上方に移動。Emitter IconのLength Widthをともに100にしました。
さらにnetイベントからmP Worldをshift+ドラッグ&ドロップしインスタンスコピーします。
ネットの撓みが小さかったので、netイベントのmP ShapeのMass(質量)をBy Valueに変更し10まで上げてみました。
最後にParticle Skinnerでモデルに動きをつけます。

ネットのエミッターにしているオブジェクトのクローンを作成します。
クローンオプションはコピーにします。
クローンにモデファイアのParticle Skinnerを適用します。
Parameters内、Particle Flow System にAddでPF Source 001を指定します。
Activate Skinningをクリックし、アクティブにします。
All Particle Flow Eventsのチェックを外し、Add By Listでnetイベントを選択し指定します。
再生してみると、オブジェクトがnetイベントの動きをするようになったかと思います。
最後にモデファイアのLatticeを適用し格子状にして、ネットっぽくしてみました。
mP Glueのバインドを壊していくには

mP Glueのバインドを壊すには、mP Glueのパラメーター内にあるBreakabilityを設定していくことで可能です。
またヘルプを見ると、Max Forceは保持される線形の最大フォース、Max Torqueは保持される最大の角度とあります。
では先ほどのシーンに設定してみます。
netイベントのmP Glueを選択しパラメーターを表示します。
Breakability内にある、Breakable By Forceにチェックを入れます。
これで壊れるようになりましたが、シミュレーション開始と同時に壊れてしまいます。
まず最低限重力に耐えられframeイベントとの接合部分が壊れないだけの保持力が必要になります。
また球が落ちてきた時にある程度耐えた後、壊れるように調整していきます。
Max Forceの値を1000、Max Torqueの値を 2000に変更しました。
さらに距離も考慮させるためMax By Bind Distanceの設定もしていきます。
Max By Bind Distanceをオンにし、Distance Unitの値を40まで上げてみました。

最後にParticle Skinnerの設定をしていきます。
Parametersの下の方にあるRip Surface Apartの設定をしていくことで、ジオメトリーが切り裂かれていくようになります。
Rip Surface Apartにある、TypeをDistance Chargeにしてみます。
これで、ジオメトリーが千切れていくようになったのが確認できるかと思います。
さらに、Edit Split PrecisionとDistance Chargeの値を変更し精度を調整しました。
以上がmParticles GlueとParticle Skinnerの基本的な使用方法になります。
冒頭に貼った画像は、前回の記事で紹介したCollisionテストを使用した方法と今回使用したmP GlueおよびPartice Skinnerの機能を組み合わせて作りました。
任意のパーティクルにmP Glueを適用し徐々に剥がれていくような雰囲気にしています。
最初の方に見て頂いたparticle_skinner1.aviの球体の表面が剥がれ落ちていくセットアップをキャラクターに変えただけです。
キャラクターはAutodesk Character Generatorで作成したものをブラッシュアップして作成しました。
ではまた次回もよろしくお願い致します。
今回のシーンファイルがダウンロードできます。