このトピックでは、パーティクル フローでの mParticles インターコリジョン テストの使用方法について追加情報を提供します。
まず、mParticles インターコリジョンでは、パーティクルが互いに衝突するかどうかを制御しません。既定では、パーティクルが MassFX シミュレーションに関与し、その衝突シェイプが[mParticles シェイプ](mParticles Shape)オペレータによって定義されている場合、それらのパーティクルは互いに衝突します。これは、シミュレーションに不可欠な部分です。
mParticles インターコリジョン テストは、パーティクル間の衝突を登録し、パーティクルを(衝突情報に従って)他のイベントにリダイレクトします。
mParticles インターコリジョン テストをイベントに追加することは、mParticles コリジョン テストで[次イベントのパーティクル条件](Test True If Particle)オプションをオンにすることとほぼ同じです。パーティクル フローは衝突に関する情報の収集を開始します。mParticles コリジョン テストの場合と同様、この情報収集ジョブではかなりの CPU リソースを必要とするため、互いの衝突状況に基づき、パーティクルを他のイベントにリダイレクトする必要がない場合にはテストを追加しないでください。
[衝突を登録](Collision Registration With)領域で、登録する特定のパーティクル グループの衝突を定義します。この項目は、既定で[現在のイベントのパーティクル](Particles In Current Event)に設定されています。これは、現在のイベントのパーティクルが現在のイベントの別のパーティクルと衝突する場合には、その衝突が登録されて処理されることを意味します。その他のオプション([次イベントのパーティクル条件](Test True If Particle)に応じて、衝突は、テストするパーティクルを True とする場合としない場合があります。結果に関係なく、このオプションが[現在のイベントのパーティクル](Particles In Current Event)に設定されている場合は、現在のイベント内のパーティクル間の衝突のみが処理されます。
代替オプションは[イベントのパーティクル](Particles In Events)です。このオプションにより、衝突登録に関して、関心対象の他のイベントを定義します。既定では、リスト(シミュレーションはパーティクル フロー パーティクル システムによってのみ実行できるため、同じ PF ソース グローバル イベントの下)に現在のパーティクル システムのすべてのイベントが表示されます。リストには現在のイベント エントリも含まれることに注意してください。したがって、現在のイベントを含め、イベントのセットとの衝突を登録する必要がある場合は、そうすることができます。リストにはすでにすべてのイベントが含まれているため、イベントをハイライト表示(濃い青で表示)して、衝突で必要とされるイベントを識別する必要があります。
衝突登録スコープについての要点を図示するため、次の例( MassFXInterCollision01.max )について考慮します。
この例では、最初にすべてのパーティクルがボックスを形成し、次に円環体ディフレクタ上に落下します。最初のイベント[イベント 01](Event 01)には、円環体ディフレクタとの衝突を定義する mParticles コリジョンと、パーティクルが互いに衝突する場合の次のイベントへのジャンプを定義する mParticles インターコリジョンの 2 つのテストがあります。衝突登録スコープは、[現在のイベントのパーティクル](Particles In Current Event)に設定されていることに注意してください。したがって、すべての隣接パーティクルがすでにお互いに衝突し、次のイベントに転送される前に、一部の不運なパーティクルが他のどのパーティクルとも衝突しないということがあり得ます。ご存じのとおり、この構成では、「取り残された」パーティクルが存在し、カラーが緑のままになります(最初のイベントでのカラーと同じ)。
すべてのパーティクルを最終的に次のイベントに移動するには、衝突登録スコープを[イベントのパーティクル](Particles In Events)に変更し、リストの 3 つのイベント([イベント 001](Event 001)、[イベント 002](Event 002)、および[イベント 003](Event 003))をハイライト表示します。ここでアニメーションを再生すると、すべてのパーティクルが衝突通知を受け取り、緑、黄色、青の順に変化します。
上の例( MassFXInterCollision01.max )に関するもう 1 つの注記: パーティクルは、最後のイベントに到達するとすぐ、シミュレーションをオフに切り替えることによって静止します(最後のイベントの[mParticles スイッチ](MassFX Switch)オペレータを参照)。これらのパーティクルの静止状態により、「取り残された」一部のパーティクル(緑のパーティクル)は、不可能な状態にされます。それらのパーティクルは、静止パーティクル間でスクイーズされ、配置するための十分なスペースがなくなります。これが原因で、緑パーティクルではジッター モーションが観察されます。
このジッターは、最後のイベントの[mParticles スイッチ](mParticles Switch)オペレータを調整することによって回避できます。シミュレーションをオフにする代わりに、[位置の一致](Match Position)をオンにできます。これにより、最後と最初のイベントのすべてのパーティクルがシミュレーションに含められます。ある意味でそれらは、「すべてがダイナミック」というシミュレーションの目的と同じです。そのため、いくらかの「予備スペース」が緑のパーティクルのために確保され、均衡のとれた配置が達成可能になります。
[次イベントのパーティクル条件](Test True If Particle)領域の[衝突する場合](Collides)オプションと[複数回衝突する場合](Collided Multiple Times)オプションの違いを、別の例( MassFXInterCollision02.max )を使用して説明します。この例には 2 つのイベントがあり、パーティクルは、[回数](# Times)オプションに従って、互いに 15 回衝突すると 2 番目のイベントにリダイレクトされます。パーティクルは、次のイベントで静止するように設定されます([速度](Speed)と[スピン](Spin)の値が 0)。[速度](Speed)と[スピン](Spin)の値は、通常のパーティクル フローのオペレータ([速度 01](Speed 01)と[スピン 01](Spin 01))によって設定されますが、パーティクルを静止にするには[mParticles スイッチ](mParticles Switch)オペレータを使用します。
アニメーションを再生すると、一部のパーティクルが 2 番目のイベントに到達できなかったことを確認できます。これは、一部のパーティクルでは、アニメーションの再生期間に最低でも 15 回の衝突が起きなかったからです。演習として、確実にすべてのパーティクルが次のイベントに転送される範囲でこの値をどれほど大きくできるのかを確かめるため、[回数](# Times)の値を減らしてください。この値は、アニメーションの再生中にパーティクルが他のパーティクルと衝突する最低回数です。また、衝突登録スコープは、すべてのイベントをハイライト表示した状態で、[イベントのパーティクル](Particles In Events)に設定します。この例では、すべてのパーティクル内の衝突をカウントします。
最後の例( MassFXInterCollision03.max )は、[データ オペレータにレポート](Report To Data Operator)および[加算カウント](Additive Count)オプションの使用方法を示しています。ここでは、両方のオプションがオンになっています。これは、衝突登録スコープで定義されたすべての衝突を登録する間、テストにより、[データ](Data)オペレータによって使用される整数データ チャネルを介して衝突がレポートされることを意味します。mParticles インターコリジョン テストはどのイベントにもワイヤリングされませんが、テストの下には[データ](Data)オペレータがあります。次の図の左側に示すこのパラメータのデータ フローの先頭には、[入力 mParticles](Input mParticles)サブオペレータが含まれています。それらのサブオペレータの 1 つがディフレクタ(この場合は、円環体ディフレクタ)との衝突をすべてカウントし、他のサブオペレータがパーティクル内の衝突すべてをカウントします。両方の値は、合計され、テクスチャ グラデーションとのマッピングにおける相対オフセットとして使用されます。この方法により、パーティクルの衝突回数が増え、そのカラーが明るくなります。
[データ オペレータにレポート](Report To Data Operator)の使用方法に関する注記: この例では、テストがどこにもワイヤリングされないようにしつつ、[次イベントのパーティクル条件](Test True If Particle)オプションを[複数回衝突する場合](Collided Multiple Times)に設定しています。このオプションを有効にすると、他の選択項目に比べて、最も精度の高い衝突のカウント結果が得られます。一方、[回数](# Times)パラメータの値はカウント精度に影響しません。
この例に関するその他の注記: ビューポートでの再生速度は、最初の 2 つの例と比べて低速です。これは主に、ビューポートでパーティクルのカラー変更を更新するのに時間を要するからです。[表示](Display)オペレータを[ティック](Ticks)に変更すると、再生速度が著しく改善されますが、アニメーションの再生中にパーティクルのカラー変更が反映されなくなります。
[衝突後以下より遅い場合](Is Slow After Collision(s))オプションと[衝突後以下より速い場合](Is Fast After Collision(s))オプションは、mParticles コリジョン テストと通常のコリジョン テストでのオプションに似ています。