パーティクル フローの FAQ(よくある質問)

この項では、パーティクル フローの使い方を初めて学ぶ際によくある質問と、その回答を示します。項の最初ですべての質問へのリンクを示し、その後で質問と回答をカテゴリ別に示します。

質問リスト

パーティクル フローでは、どのように時間を処理しますか。

別のフレームに移動したときに、3ds Max がしばらくフリーズすることがあります。これは何が原因ですか。

アニメーションを「ベイク処理する」ときのように、パーティクル シミュレーションの一部をあらかじめ計算しておく方法はありますか。

パフォーマンスを最適化するための方法は他にありますか。

パーティクル フローを使用してオブジェクトを分解する方法はありますか。

パーティクル フローのシミュレーションの精度を制御する方法はありますか。

MAXScript を使用してパーティクルに影響を与えることはできますか。

複数のジオメトリとしてインスタンス化されたオブジェクトを使用することはできますか。

特定の光源からパーティクルを排除する方法はありますか。

コマンド パネル上で[パーティクル ビュー](Particle View)ボタンをクリックせずにパーティクル ビューを開く方法はありますか。

複数のパーティクル システムを管理するには、複数のパーティクル ビューが必要ですか。

パーティクル システムを部分的に選んで無効にしたり「オフ」に切り替えたりできますか。

パーティクル ビュー内に「アクション修復」という名前のイベントが表示されることがあります。これはどこにありますか。

アクション パラメータをアニメートする方法はありますか。

アニメートされたビットマップ テクスチャをパーティクル エージに同期させる方法はありますか。

パーティクル フローのパーティクルをスペース ワープにバインドする必要がありますか。

パーティクルをパスに沿って表示する方法はありますか。

パーティクル フローでスナップショットを使用できますか。

パーティクル フローでモーション ブラーを使用する方法はありますか。

パーティクル フローでパーティクル エージとパーティクル モーション ブラーのマップを使用する方法はありますか。

ダイナミック システムで作成したアニメーションにパーティクル フローを適用しようとしています。予期しないパーティクル スポーンなど、結果に不具合が生じる原因は何ですか。

異なるエージに設定したすべてのパーティクルを最初のフレームに表示させる方法はありますか。

アニメートしたパラメータをパーティクルに適用するタイム フレームを指定する方法はありますか。

パーティクルにバブル モーションを適用するにはどうすればよいですか。

イベントを他の複数のイベントに分岐させる方法はありますか。

イベント内のアクションの順序によって何か問題が起こりますか。

特定のイベントに存在するパーティクルを示す方法はありますか。

別のイベントに移動したらパーティクルのマテリアルが失われてしまいました。この原因は何ですか。

1 つのイベントが複数のイベントからの入力を受信するようにできますか。

オペレータの設定を変更したのですが、パーティクル システムで有効になっていないようです。

イベントがどこにも接続しないようにパーティクル ビューから切り離すことはできますか。

一般

パーティクル フローでは、どのように時間を処理しますか。

パーティクル フローでは、時間を測定するパラメータ([Birth] [放出開始](Emit Start)または[放出停止](Emit Stop) [エージ テスト](Age Test) [テスト値](Test Value)など)を、フレームで指定します。しかし、常に現在のシステム フレーム レート(fps)が監視されており、このレートが変更されると、同じタイミングを保持するように時間に関係するすべてのパラメータが調整されます。たとえば、NTSC フレーム レート(30 fps)を使用しているときに[テスト値](Test Value)を 60 に設定して、次に PAL(25 fps)に切り替えても、パーティクル フローによって自動的に値が 50 に変更されるため、テストされるエージは 2 秒のままです。

その一方で、[速度](Speed)などのレート パラメータは秒単位で測定されるため、別のフレーム レートに移行しても変更されません。

別のフレームに移動したときに、3ds Max がしばらくフリーズすることがあります。これは何が原因ですか。

パーティクル フローのアニメーションのほとんどは、履歴に依存しています。つまり、特定のフレーム内でパーティクルを描画できるようにするために、パーティクル フローはこれまでのすべてのフレームで発生したことを認識する必要があります。通常、パラメータ値が変更された場合、パーティクル フローは開始フレームから現在のフレームまでの間のすべてのフレームを再計算する必要があります。あるいは、別のフレームに移動した場合、1 つ以上のアニメーション フレームを再計算しなければなりません。先に進む場合は、現在のフレームと移動先のフレームとの間のフレームを計算する必要があります。したがって、たとえば、次のフレームに進むだけの場合は、比較的少ない計算量ですみます。しかし、元に戻る場合は、戻るのがフレーム 1 つ分だけであっても、アニメーションの開始から移動先のフレームまですべてのフレームを計算する必要があります。

必要な計算量が多ければ、遅延が発生します。この間、3ds Max のステータス バーには「PF Source 01 更新中 xx%(キャンセルするには[Esc]を押してください)」といったメッセージが表示されるので、再計算の進捗状況が把握できます。このメッセージが表示されたときに Esc キーを押すと、「PF Source 01 をオフにするには、[OK]をクリックしてください」といった警告メッセージが表示されます。[OK]をクリックすると、再計算が停止し、ユーザがアニメーションを最適化できるようになります。たとえば、テストを行うためにパーティクルの数を減らすことができます。ソースをオンに戻して、続行してください。[キャンセル](Cancel)をクリックすると、計算を続行します。

ヒント: 再計算やパーティクルのレンダリングを高速化する簡単な方法は、パーティクルの総数を調整することです。このためには、パーティクル フローのソース アイコンを選択し、[修正](Modify)パネル [エミッション](Emission)ロールアウト [マルチプライヤ量](Quantity Multiplier)領域を表示します。ここでは、ビューポート表示とレンダリングで別々に、パーティクルの総数をパーセンテージによって増減できます。
ヒント: パラメータを調整せずにアニメーション再生を高速化するには、[キャッシュ](Cache)オペレータを使用します(下記参照)。

アニメーションを「ベイク処理する」ときのように、パーティクル シミュレーションの一部をあらかじめ計算しておく方法はありますか。

はい、できます。パーティクル フローの [キャッシュ](Cache)オペレータを使用すれば、パーティクル アニメーションの全部または一部をメモリまたはファイルに保存できるので、保存されたアニメーションを再生することが可能になり、パーティクル モーションを再計算する必要がなくなります。これによって、アニメーションの異なる部分間を、非常に高速でジャンプできるようになります。

パフォーマンスを最適化するための方法は他にありますか。

パーティクル フローは、コンピュータの処理能力やリソースに重い負荷をかけることがあります。パフォーマンスの最適化を図るには、できるだけ高速な CPU を使用することが最も重要です。また、多数のパーティクルをパーティクル システムで使用する場合、コンピュータに可能な限り多くのメモリを搭載してください。特に、キャッシュを使用する場合はこれが必要です。

パフォーマンスを向上するその他の方法としては、[マルチプライヤ量](Quantity Multiplier)設定を使用してビューポート パーティクルのパーセンテージを少なくしたり、現在作業していないフローやアクションを一時的に無効にすることなどがあげられます。パラメータを変更するときは、最初のフレームに戻ってから再生を進めるか、[パーティクル ビュー](Particle View) [オプション](Options)メニュー [更新のタイプ](Update Type)で[現フレーム以降](Forward)に設定します。この方法の場合、設定が変更されても、パーティクル システムは状態を最初から再計算しなくてすみます。変更が影響するのは、現在のフレームから先のアニメーションだけだからです。その一方で、違いをすぐに表示することができないため、誤った結果が導き出されてしまう可能性もあります。

また、スポーンの使用にも注意が必要です。特に、[スポーン](Spawn)テストで[移動距離ごと](By Travel Distance)オプションを使用している場合、非常に多くの数のパーティクルが即時に作成されてしまうからです。

パーティクル フローを使用してオブジェクトを分解する方法はありますか。

パーティクル フローは、mParticles システムの一部であるパーティクル スキナー モディファイヤによるオブジェクト断片化をサポートします。 使用例については、『3ds Max チュートリアル』の「mParticles クイック スタート チュートリアル」を参照してください。

パーティクル フローのシミュレーションの精度を制御する方法はありますか。

PF ソース アイコンの[システム マネージメント](System Management)ロールアウトで、ビューポートの再生とレンダリングについて、個別にインテグレーション ステップを調整できます。インテグレーション ステップを小さくすれば、パーティクル フローがフレームごとのパーティクル モーションを計算する時間は長くなり、その結果、計算時間の分だけ計算の精度は高くなります。

MAXScript を使用してパーティクルに影響を与えることはできますか。

はい、できます。パーティクル フローには、Script オペレータ[スクリプト テスト](Script Test)テスト、および [発生スクリプト](Birth Script)オペレータが含まれており、これらを使用して、パーティクル システムを完全にカスタマイズできます。スクリプト可能な各アクションには、サンプル スクリプトが含まれており、ここには関連するスクリプト可能な関数もすべてリストされています。また、スクリプト ワイヤリングを使って、[フォース](Force)オペレータ[間隔を保持](Keep Apart)オペレータのパラメータを制御することもできます。詳細は、それぞれの項目を参照してください。

さらに、各インテグレーション ステップでスクリプトを 1 つ実行し、各フレームが表示またはレンダリングされる直前に別のスクリプトを実行することができます。「[スクリプト](Scropt)ロールアウト」を参照してください。

複数のインスタンス化されたオブジェクト

はい、できます。[シェイプ インスタンス](Shape Instance)オペレータによって、グループ、階層、および複数の要素から成るオブジェクトを使用できます。結合されたオブジェクトの各メンバーは、個別のパーティクルを構成します。これらのオブジェクトは、指定の順序またはランダムな順序で放出できます。たとえば、テキストに表示される順序で文字が放出されるような、テキスト オブジェクトを使用できます。

光源の排除

パーティクルが光源による影響を受けないようにするには、[一般パラメータ](General Parameters)ロールアウト([修正](Modify)パネル)にあるライトの[除外](Exclude) を使用して、排除するパーティクルを含むイベントを指定します。[PF Source XX]オブジェクト(既定値の名前)を指定しても効果はありません。[PF Source XX]/[Event XX]としてリストされているオブジェクトをすべて指定する必要があります。

パーティクル ビュー

コマンド パネル上で[パーティクル ビュー](Particle View)ボタンをクリックせずにパーティクル ビューを開く方法はありますか。

6 キーを押してください。最初にメイン ツールバーの ([キーボード ショートカットの切り換え](Keyboard Shortcut Override Toggle))をオンにしておくことが必要な場合もあります。

複数のパーティクル システムを管理するには、複数のパーティクル ビューが必要ですか。

いいえ。パーティクル ビューにはすべてのパーティクル システムが表示されます。イベント表示をスクロールしたりズームして、複数のシステムを表示することができます。

パーティクル システムを部分的に選んで無効にしたり「オフ」に切り替えたりできますか。

パーティクル ビューでは、これを実行するために複数の方法が提供されています。アクションのアイコンまたはイベントの電球アイコンをクリックしてオフに切り替えるか、右クリック メニューを使用するか、[編集](Edit)メニューの[オンに切り替え](Turn On)および[オフに切り替え](Turn Off)コマンドを使用することができます。また、3ds Max では、パーティクル フローの計算中に Esc を押すと、パーティクル システム全体をオフにして、3ds Max の制御をただちにユーザに戻すようにする機会が提供されます。また、システムを分析して、パーティクル フローの速度を落とす領域を決定したり、パーティクル フローを最適化または単純化し、アニメーションを再計算したりすることもできます。

パーティクル ビュー内に「アクション修復」という名前のイベントが表示されることがあります。これはどこにありますか。

パーティクル フロー データを含むシーンをマージすると、全体のイベントおよび分離したアクションを読み込むことができます。イベントを含まないアクションがマージされた場合は、「アクション修復」という名前のイベント内に置かれます。

アニメーション

アクション パラメータをアニメートする方法はありますか。

3ds Max の他のパラメータをアニメートする場合と同じように[オート キー](Auto Key)の手法を使用します。

注: パーティクル フローのパラメータは、[セット キー](Set Key)モードや Shift+右クリックを使用してアニメートしないでください。また、トラック バー内にアクションに関するアニメーション キーを表示するには、パーティクル フロー ソース アイコンが選択された状態であることを確認してください。

アニメートされたビットマップ テクスチャをパーティクル エージに同期させる方法はありますか。

マテリアル ダイナミック オペレータビットマップ 2D マップと組み合わせて使用します。この方法の詳細な手順については、こちらを参照してください。

パーティクル フローのパーティクルをスペース ワープにバインドする必要がありますか。

いいえ。[衝突](Collision)テスト[衝突スポーン](Collision Spawn)テスト、または[フォース](Force)オペレータを使用して、パーティクル モーションに 3ds Max のスペース ワープによる影響を与えることができます。これをグローバルおよびローカル(イベントごとの)ベースで実行できるようになったため、スペース ワープがパーティクルに及ぼす影響を、これまでのシステムより大幅に制御できるようになりました。

パーティクルをパスに沿って表示する方法はありますか。

[アイコンによる速度](Speed By Icon)オペレータまたは [ターゲット探査](Find Target)テストを使用して、アイコンやターゲットをスプライン パスに割り当てることができます。どちらの項目でも、具体的な手順が説明されています。

パーティクル フローでスナップショットを使用できますか。

使用できません。現在、スナップショット ツールはパーティクル フローと互換性がありません。

パーティクル フローでモーション ブラーを使用する方法はありますか。

パーティクル ビューの右クリック メニューで、イベントのオブジェクト プロパティを編集すれば、モーション ブラーをイベントごとに適用することができます。また、グローバル イベントのオブジェクト プロパティを編集すれば、グローバル ベースに適用できます。[パーティクル ビュー](Particle View)ダイアログ ボックスで、編集するイベントをハイライト表示させ、右クリックして、[プロパティ](Properties)を選択します。[オブジェクト プロパティ](Object Properties)ダイアログ ボックスで、[モーション ブラー](Motion Blur)領域の設定を編集します。

別の方法として、カメラのマルチパス モーション ブラー効果を使用すると、プロパティ設定を行わずにパーティクル フロー システム全体にモーション ブラーを適用できます。

注: 3ds Max のオブジェクトと同じように、[オブジェクト プロパティ](Object Properties)を使用して、イベントやパーティクル システムの他のプロパティも変更できます。これは、ビューポート内のソース アイコンを使用するのではなく、パーティクル ビュー内のみで実行してください(右クリック メニュー [プロパティ](Properties)または[編集](Edit)メニュー [オブジェクト プロパティ](Object Properties))。
注: オブジェクト モーション ブラーを使用するときに、イベントに、パーティクル エージ、パーティクル モーション ブラー、ビットマップのいずれかのマップと一緒にマテリアルを使用するマテリアル ダイナミック オペレータが含まれている場合、そのイベントは[削除](Delete)オペレータや、[スポーン](Spawn)テストまたは[衝突スポーン](Collision Spawn)テストを含むことはできません。また、そのイベントは、他のイベントにワイヤリングされたテストを含むこともできません。これに対する唯一の例外は、エージ テストのオペレータが、まったく変動しない絶対値時間に設定されている場合のみです。この場合、すべてのパーティクルが同時にイベントを手放すからです。これが適用されるのは、オブジェクト モーション ブラーのみです。イメージ モーション ブラーには何の制約もありません。

パーティクル フローでパーティクル エージとパーティクル モーション ブラーのマップを使用する方法はありますか。

パーティクル フローでパーティクル エージのマップを使用するには、[削除](Delete)オペレータを使用して、パーティクルの有効期間を有限にする必要があります。詳細は、「[削除](Delete)オペレータ」を参照してください。

次の事項にも注意してください。

  • パーティクル エージ、パーティクル モーション ブラー、およびアニメートされたビットマップを含んでいるビットマップ マップは、[パーティクル ID と同じ](Same As Particle ID)がオンの状態であるマテリアル ダイナミック オペレータでのみ使用できます。ビットマップとパーティクル エージの使用手順については、この項目で説明します。
  • パーティクルのマテリアルを、サブマテリアルにすることはできません。これは、メイン マテリアルである必要があります。
  • 3ds Max の非イベント駆動型パーティクル システムでは、パーティクル モーション ブラーは、[トラベル/モーションブラーの方向](Direction Of Travel\MBlur)という名前のコントロールと、それに付随する[ストレッチ](Stretch)パラメータによって使用されます。パーティクル フローでは、スケール(Scale)オペレータを使用することでストレッチの効果をコピーできます。このためには、[スケール係数](Scale Factor) [コンストレイン プロパティ](Constrain Properties)をオフにして、1 つの軸に沿ってパーティクルをスケールします。

ダイナミック システムで作成したアニメーションにパーティクル フローを適用しようとしています。予期しないパーティクル スポーンなど、結果に不具合が生じる原因は何ですか。

一般に、パーティクルとダイナミクスを組み合わせるには、MassFXmParticles 機能を使用します。または、ダイナミック システムでは、おそらく、オイラー XYZ コントローラを使用して回転キーが生成されています。補間が途切れるのを防ぐには、このようなオブジェクトの回転コントローラを TCB 回転に変更します。

異なるエージに設定したすべてのパーティクルを最初のフレームに表示させる方法はありますか。

[発生](Birth)オペレータで、負のフレーム範囲を使用します。たとえば、パーティクル エージを 30 フレームに広げるには、[放出開始](Emit Start)を -29 に設定し、[放出停止](Emit Stop)を 0 に設定します。

アニメートしたパラメータをパーティクルに適用するタイム フレームを指定する方法はありますか。

キーフレーム化によってパーティクル フローの多くのパラメータ値をアニメートできます。ほとんどのアクションでは、このアニメーションをパーティクルに適用するためのタイム フレームを、[同期](Sync)というラベルの付いたドロップダウン リストから選択できます。このアニメーションは、アニメーション全体のタイム フレーム内でパーティクルに適用するか、各パーティクルの特定の生存時間(パーティクル エージ)で適用するか、またはパーティクルが現在のイベントに存在している時間の長さに基づいて適用することができます。詳細は、オペレータとテストに関する個々の項目を参照してください。

パーティクルにバブル モーションを適用するにはどうすればよいですか。

パーティクル フローには P アレーに含まれているバブル モーション オプションは含まれていませんが、次の手順でバブル モーション効果をシミュレートできます。

  1. パーティクル ジオメトリとして動作するオブジェクトと、ダミー ヘルパー オブジェクトを追加します。
  2. パーティクル ジオメトリ オブジェクトの中心から離れた位置にダミーを置き、ダミーが親オブジェクトになるように(つまり、パーティクル ジオメトリ オブジェクトからダミーに向かってドラッグして)、パーティクル ジオメトリをダミーにリンクします。これら 2 つのオブジェクトの基点間の距離が、バブル モーションの半径になります。
  3. パーティクル ビュー内で、バブル モーションを適用するイベントに[シェイプ インスタンス](Shape Instance)オペレータおよび[スピン](Spin)オペレータを追加します。
  4. [シェイプ インスタンス](Shape Instance)オペレータをクリックし、ダミー オブジェクトをパーティクル ジオメトリ オブジェクトとして指定します。
  5. [スピン](Spin)オペレータをクリックし、[スピン レート](Spin Rate)と[変動](Variation)を適切な値に設定します。[スピン軸](Spin Axis)には、既定値の[ランダム 3D](Random 3D)をそのまま使用します。

パーティクルがパスに沿って移動しながらが小刻みに動くという、バブル モーションと似たパーティクル モーションが作成されます。

イベント

イベントを他の複数のイベントに分岐させる方法はありますか。

パーティクル フローには、複数の分割テストが含まれています。これらを使用すると、いくつかのパーティクルを量、選択、ソースに基づいて、他のイベントに送信することができます。ユーザは、単一のイベント内で任意の数の分割テストを使用してパーティクル ストリームの一部を別のイベントに送信することができ、更に、[送信](Send Out)テストを使用して、残りのパーティクルを他のイベントに送ることができます。2 番目以降のテストは、イベント内に残っているパーティクルに対してのみ動作し、必ずしもイベント内で開始するすべてのパーティクルに対して動作するわけではないことに注意してください。

イベント内のアクションの順序によって何か問題が起こりますか。

場合によります。イベントに複数の同じタイプのオペレータ(Shape オペレータなど)が含まれている場合、最後のオペレータによって残りのオペレータが上書きされてしまいます。イベントに複数のテストが含まれる場合、テストが評価され、パーティクルはテストの表示順序で送信されます。

ただし、イベント内の 2 つのアクションが同じプロパティを制御する場合、相互作用はもっと複雑になります。継続して動作するアクションは、通常、パーティクルが最初にイベントに入ってきたときのみ影響を与えるアクションよりも優先されます。たとえば、[ターゲット探査](Find Target)テスト[速度](Speed)オペレータは両方ともパーティクルの速度と方向を制御できます。しかし、テストは継続して動作しますが、オペレータは 1 回しか実行されません。イベントにこの両方が含まれている場合、オペレータがテストの後から実行されたとしても、一般にパーティクルの速度と方向を主に制御するのはテストの方です。ただし、オペレータの設定がパーティクルの動作に影響を及ぼすこともあります。特に、速度の値がテストの値よりも大幅に高く設定されている場合などです。アクションの有効なタイム フレームの一覧は、「アクションタイム フレーム」を参照してください。

また、イベント内の他のアクションによる影響を受ける可能性があるような特定の条件をテストしている場合、必ず、テストをアクションの後に配置してください。たとえば、[フォース](Force)オペレータ[衝突](Collision)テストを含むイベントの場合、[衝突](Collision)テストを[フォース](Force)オペレータの後に配置します。これによって、衝突テストを実行する前に、パーティクルを押し出すフォースがディフレクタを通り過ぎてしまう可能性がなくなるので、パーティクルがディフレクタを通ることができます。一般的に、テストはイベントの最後に配置します。

特定のイベントに存在するパーティクルを示す方法はありますか。

1 つの方法は、各イベント内の [表示](Display)オペレータの[タイプ](Type)オプションが異なるように選択します。たとえば、最初のイベントには[ティック](Ticks)、2 番目には[円](Circles)、3 番目には[ライン](Lines)を使用します。この方法によって、パーティクルがイベント間を移動すると、ビューポート内のパーティクルの外観が変化します。さらに明確に識別するために、[表示](Display)オペレータを使用してパーティクルの色を変更することもできます。

もう 1 つの方法は、特定のイベント内のすべてのパーティクルを選択します。パーティクル フロー ソース アイコンを選択し、[修正](Modify)パネル [選択](Select)ロールアウトで、[イベント](Event)アイコンをクリックします。次に、[イベント別に選択](Select By Event)リスト内のイベントをクリックすると、ビューポート内のすべてのパーティクルをハイライト表示できます。

別のイベントに移動したらパーティクルのマテリアルが失われてしまいました。この原因は何ですか。

マテリアルは、イベントのスタティック プロパティです。これはパーティクルと一緒にイベント間を移動しません。パーティクルのマテリアル ID は移動しますが、マテリアルそのものは移動しません。パーティクルで常に同じマテリアルを使用する場合は、Material オペレータまたは[シェイプ インスタンス](Shape Instance)オペレータを使用して、グローバル イベント内でマテリアルを定義します。それ以外の場合は、各ローカル イベント内でマテリアルを定義する必要があります。

1 つのイベントが複数のイベントからの入力を受信するようにできますか。

パーティクル フローでは、任意の数のテストから単一のイベントにワイヤリングできます。

オペレータの設定を変更したのですが、パーティクル システムで有効になっていないようです。

グローバル イベント内に同じようなオペレータが存在すると、ローカル オペレータは無視されてしまう可能性があります。既定値では、パーティクル フローは最初にローカル オペレータを評価し、次にグローバル オペレータを評価します。グローバル オペレータがローカル オペレータと同じプロパティ(速度など)に影響を及ぼしている場合、パーティクル システムではグローバル オペレータで設定された値が使用されます。ローカル オペレータによってグローバル オペレータを無効に設定するには、[パーティクル ビュー](Particle View) [オプション](Options)メニュー [アクションの順番](Action Order) [グローバルを最初](Globals First)を選択します。

イベントがどこにも接続しないようにパーティクル ビューから切り離すことはできますか。

できます。ただし、そのイベントはパーティクル システムに何の影響も及ぼさなくなります。