mParticles コリジョン テスト

mParticles コリジョン テストは標準のコリジョン テストと似ていますが、パーティクルとディフレクタ スペース ワープを衝突させるのではなく、パーティクルと PFlow コリジョン シェイプ(WSM)モディファイヤを適用された標準オブジェクトを衝突できるようにします。使用方法は衝突テストと似ていますが、物理シミュレーションの特性および MassFX のセットアップのために、細部でいくつか異なる点があります。

ヒント: mParticles テストはイベント内で常に[mParticles ワールド](mParticles World)オペレータの下に配置します。そうしないと、シミュレーション インテグレーション ステップの後でテストは適切なシミュレーション情報を取得できません。mParticles テストを適切に配置しないと、mParticles ワールド シミュレーションが非アクティブ化されます。その影響に対するメッセージが MAXScript リスナーのログに記録され、3ds Max インタフェースの下部のステータス バーにも表示されます。

手順

この手順では、外側のスペースのボックス内でのボールと一連のブロックの遭遇をシミュレートする mParticles コリジョンの簡単な使用方法を説明します。

  1. パーティクル ビューを開き(6 を押す)、コンテナからウィンドウに mParticles フローをドラッグします。

    mParticles フローを使用すると、物理シミュレーションに必要なすべての要素を含む単純なフローを簡単に作成できます。

    パース ビューポートに、ブロックのキュービック配列(発生グリッドによって作成されたキュービック パーティクル)と mParticles ワールド ヘルパー アイコンが表示されます。

  2. [イベント 001](Event 001)で、[mParticles ワールド](mParticles World)オペレータをクリックし、[mParticles ワールド](mParticles World)ロールアウトで[=>]ボタンをクリックします。

    mParticles ワールド ヘルパーが選択され、そのパラメータが[修正](Modify)パネルに表示されます。

  3. [パラメータ](Parameters)ロールアウトの先頭にある[重力の適用](Apply Gravity)をオフにします。
  4. パース ビューポートで、ブロックを格納してさらに余裕のあるボックス プリミティブを追加します。一辺が約 150 単位の立方体です。ボックスの中心をブロックにします。
  5. ボックスを編集可能ポリゴンに変換し、上部のポリゴンを選択して削除し、シェル モディファイヤを追加します。ビューに角度を付けて、ボックスの底まで見えるようにします。次の図のようになります。


  6. フロント ビューポートで、ボックスの右側の上部に半径が 20 の球を追加します。パース ビューポートは次のようになります。


  7. フレーム 30 に移動し、オート キーを有効にして、フロント ビューポートで、次の図のように球をボックスの左下隅のすぐ内側に配置します。


  8. アニメーションを再生またはスクラブします。ボールが移動してブロックと交差します。交差しない場合はパスを調整します。
  9. フレーム 0 に戻り、オート キーをオフにします。
  10. 球を選択し、PFlow コリジョン シェイプ(WSM)モディファイヤを適用します。
  11. モディファイヤの[パラメータ](Parameters)ロールアウトで、[シェイプ](Shape)を[球](Sphere)に設定して、[アクティブ化](Activate)をクリックします。
  12. ボックスを選択し、PFlow コリジョン シェイプ(WSM)モディファイヤを適用します。[シェイプ](Shape)オプションが[ジオメトリ](Geometry)に設定されていることを確認します(既定値)。設定されていない場合は[ジオメトリ](Geometry)を選択します。
  13. [アクティブ化](Activate)をクリックします。

    衝突シェイプ モディファイヤにより、ボックスと球がボックス内のパーティクルと衝突するようになります。

  14. パーティクル ビューに戻り、[mParticles コリジョン](mParticles Collision)テストをイベント 001 の下部にドラッグします。テストをクリックしてパラメータをパーティクル ビューに表示し、[ディフレクタ](Deflectors)リスト(現在は空)で[リスト別](By List)をクリックします。

    [ディフレクタを選択](Select Deflectors)ダイアログが開き、mParticles コリジョンでディフレクタとして認められたオブジェクト(ボックスと球)だけがリストされます。

  15. リストでボックスと球のエントリをハイライト表示し(たとえば Ctrl+A)、[選択](Select)をクリックします。

    ボックスと球が[ディフレクタ](Deflectors)リストに表示されます。

    この例ではパーティクルを別のイベントに渡さないので、[次イベントのパーティクル条件](Test True If Particle)またはそのいずれのオプションも必要ありません。

  16. アニメーションを再生します。

    球がパーティクルの配列と衝突し、パーティクルは散乱して、相互に、またボックスの内側で跳ね返ります。アニメーションの長さを 300 フレームなどに延長した場合、パーティクルがボックスの上部の開口部から飛び出し始めるのがわかります。



  17. ヒント: ボールもボックスの内部でバウンドさせたい場合は、球ジオメトリを削除し、グローバル イベントに接続された別のイベントにおいて[発生ストリーム](Birth Stream)オペレータで作成される球状パーティクルとしてボールを再作成し、発生ストリーム アイコンでパーティクルの配列をねらいます。必ず、[mParticles シェイプ](mParticles Shape)オペレータおよび[mParticles ワールド](mParticles World)オペレータのインスタンスを 2 番目の発生イベントに含めるようにします。[mParticles ワールド](mParticles World)オペレータをインスタンス化すると、mParticles コリジョン テストは両方のイベントに対してグローバルになるので、テストもインスタンス化する必要はありません。

インタフェース



ディフレクタ
MassFX シミュレーションにおいてディフレクタとなる非パーティクル オブジェクトをリストします。これは、mParticles コリジョン テストと標準の衝突テストの大きな相違点です。ディフレクタ タイプのスペース ワープを使用する代わりに、PFlow コリジョン シェイプ(WSM)モディファイヤを適用したジオメトリ オブジェクトを指定します。[ディフレクタ](Deflectors)リストは、そのようなオブジェクトのみを含むことができます。ジオメトリ オブジェクトがPFlow コリジョン シェイプで修正されない場合、mParticles コリジョン テストのディフレクタとはみなされません。

もう 1 つの重要な違いは、mParticles コリジョンが[mParticles ワールド](mParticles World)オペレータによって定義されているシミュレーションのすべてのパーティクルに対して衝突をシミュレートすることです。つまり、[mParticles ワールド](mParticles World)オペレータが同じ mParticles ワールド ドライバと関連付けられているすべてのイベントのパーティクルです。特定のイベントでの mParticles コリジョン テストの配置に関係なく、テストが[mParticles ワールド](mParticles World)オペレータと同じイベント内にある場合は、[mParticles ワールド](mParticles World)オペレータのドライバのコントロール下にあるすべてのパーティクルに対して衝突が行われます。

追加(Add)/リスト別(By List)/除去(Remove)
PFlow コリジョン シェイプで修正されたオブジェクトをシミュレーションに追加するには、[追加](Add)をクリックした後、オブジェクトを選択します。または、複数のオブジェクトを一度に追加するには、[リスト別](By List)を使用します。オブジェクトを削除するには、リストでそのオブジェクトの名前をハイライト表示して、[除去](Remove)をクリックします。
=>
mParticles コリジョンで割り当てられているオブジェクトを選択するには、リストでハイライト表示してから、このボタンをクリックします。シーン内でオブジェクトが選択されて、オブジェクトのパラメータに簡単にアクセスできるようになります。

[次イベントへのパーティクル条件]領域

mParticles コリジョン テストの主要な機能は、シミュレーション内のパーティクルが衝突するシーン ジオメトリ オブジェクトを定義することです。オペレータはテストとして機能するので、それを使用して衝突時にパーティクルを次のイベントにリダイレクトすることもできます。どのパーティクルが衝突し、いつ衝突が発生するのかを追跡するジョブには、追加の CPU リソースが必要になるので、リダイレクション用にテストが必要ない場合は(また、テストから出るワイヤがない場合)、[次イベントのパーティクル条件](Test True If Particle)をオフにします。

また、[次イベントのパーティクル条件](Test True If Particle)がオフの場合は、テストはグローバル シミュレーション レベルで動作するので、テストがどのイベントに存在するかは問題ありません。[次イベントのパーティクル条件](Test True If Particle)がオンの場合、ディフレクタがある現在のイベント内のパーティクルのすべての衝突がカウントされ、この領域の他のパラメータによって指定されているように、適切なタイミングに次のイベントにパーティクルをリダイレクトするために使用されます。

[衝突する場合](Collides)、[衝突後以下より遅い場合](Is Slow After Collision(s))、[衝突後以下より速い場合](Is Fast After Collision(s))、[複数回衝突する場合](Collided Multiple Times)の各オプションおよびコントロールは、標準の衝突テストと似ていますが、いくつか違いがあります。

  • [衝突する場合](Collides)このオプションには、後のパーティクルの加速度を定義するためのドロップダウン リストはありません。シミュレーションの間に、パーティクルは衝突する必要があり、それ以上の加速度はディフレクションの結果であるため、バウンス、停止、継続の選択を提供することは意味がありません。定義により、パーティクルは常にバウンドします。

    衝突はインテグレーション ステップ全体の間に考慮されます。テストは、インテグレーション ステップのシミュレーションが完了した後でのみ、次のイベントにパーティクルを送ります。実質的に、パーティクルはインテグレーション ステップの間に複数回衝突する場合があります。[衝突する場合](Collides)オプションを使用した場合、パーティクルは次のイベントにリダイレクトされます。ただし、パーティクルは最初の衝突の直後には次のイベントにリダイレクトされません。インテグレーション ステップの間の衝突したという事実に基づいてリダイレクトされます。

  • [複数回衝突する場合](Collided Multiple Times)同様に、このオプションでは、インテグレーション ステップの間に(およびそれより前のフレームで累積的に)パーティクルが少なくとも指定した回数だけディフレクタと衝突した場合にのみ、パーティクルは次のイベントにリダイレクトされます。この場合も、パーティクルは N 回目に衝突してすぐには次のイベントにリダイレクトされません。インテグレーション ステップの終了時に、累積衝突回数が[回数](# Times)スピナーの値を超えている場合、パーティクルは次のイベントにリダイレクトされます。
  • [衝突を予測](Will Collide)使用できません。
データ オペレータにレポート(Report To Data Operator)
高度なデータ操作ツールを使用しているとき、衝突回数データを[データ](Data)オペレータで使用する必要がある場合は、このオプションを有効にします。[入力 mParticles](Input mParticles)サブオペレータを使用して、これらのデータを[データ](Data)オペレータで取得できます。

[次イベントのパーティクル条件](Test True If Particle)がオンのときに使用できます。通常は、テストが後のイベントにワイヤリングされていない場合にこれを使用します。

加算カウント(Additive Count)
オンにすると、レポートされるデータは、現在のイベントに存在していた間にパーティクルに発生した衝突の合計回数を表します。オフにすると、最後のインテグレーション ステップの間にパーティクルに発生した衝突の回数のみがレポートされます。

[データ オペレータにレポート](Report To Data Operator)がオンの場合にのみ使用できます。

衝突グループ(Collision Group)
この設定は衝突の除外に使用します。「mParticles ワールド ヘルパー」のトピックを参照してください。