パーティクル フローは、コア インタフェースの particleFlow を提供します。
メソッド:
<void>particleFlow.beginEdit()
<void>particleFlow.endEdit()
MAXScript で作成されたパーティクル フローアクションのイベント カプセル化をブロックします。
作成された パーティクル フローアクション (オペレータかテスト) は、自動的にパーティクル フロー イベントにカプセル化されます。これは、すべての パーティクル フロー アクションをイベントに所属させるための処理です。
この処理が MAXScript を使ってアクションを作成するとき邪魔になることもあります。この場合は beginEdit と endEdit の組み合わせを使用できます。
<node>particleFlow.openParticleView()
パーティクル ビューを開きます。パーティクル ビュー ノード に戻ります。
例:
|
--Disable Automatic Event Encapsulation
particleFlow.beginEdit()
OK
--Create a new Find_Target Action
ft = Find_Target()
--> $Find_Target:Find Target 01 @ [0.000000,0.000000,0.000000]
--Enable Automatic Event Encapsulation again
particleFlow.endEdit()
OK
--Open Particle View and take a look:
pview = particleFlow.openParticleView()
--> $Particle_View:Particle View 01 @ [0.000000,0.000000,0.000000]
--As expected, Find_Target will not appear inside
--an Event in Particle View
|
ツールバー、メニュー、クアッド メニュー、キーボード ショートカットなどに配置可能なアクション項目を生成して、シーン内に PF_Source がない場合でも迅速にパーティクル
ビューを開けるようにするには、次の短い MacroScript を使用します。
サンプル スクリプト:
|
macroScript PView_Open
category:"Particle View"
buttontext:"Open PView"
tooltip:"Open Particle View"
(
-- Open Particle View
particleFlow.openParticleView()
)
|
<node>particleFlow.scriptRunner()
このメソッドを PF_Source、更新したステップ毎スクリプト、および最終ステップ更新スクリプト内で使用して、現在実際にスクリプトを実行している PF ソースを特定することができます。
例:
|
pf= particleFlow.ScriptRunner()
|
<int>particleFlow.getActionOrder()
パーティクル フロー アクションの順番を取得します。
<void>particleFlow.setActionOrder <integer>order
パーティクル フロー アクションの順番を設定します。
有効な値は次のとおりです。
0: [グローバルを最初](Globals First) - 各インテグレーション ステップで、パーティクル フロー は最初にグローバル イベント内のアクションを適用し、続いてその他のローカル イベント内のアクションを適用します。通常、ローカル イベント内のアクションによって、グローバル
イベント内の類似のアクションが無効になります。
1: [ローカルを最初](Locals First) - 各インテグレーション ステップで、パーティクル フロー は最初にローカル イベント内のアクションを適用し、続いてグローバル イベント内のアクションを適用します。通常、グローバル イベント内のアクションによって、ローカル
イベント内の類似のアクションが無効になります。
注:期待どおりの結果を得たい場合は、グローバル イベント内とローカル イベント内に類似したアクションが存在しないように注意する必要があります。グローバル イベント内とその他のイベント内に類似したアクションが存在する場合、パーティクル フローはここで指定された順番でシステムに適用されます。通常、パーティクル システムでは最後に適用された効果が表示されます。既定値は [1: ローカルを最初](1: Locals First)です。
<integer>particleFlow.getUpdateType()
パーティクル フロー の更新タイプを取得します。
<void>particleFlow.setUpdateType <integer>type
パーティクル フロー の更新タイプを設定します。
有効な値は次のとおりです。
0: [Complete モード](Complete mode) - パーティクル アニメーション全体が最初のフレームから再計算されます。
1: [Forward モード](Forward mode) - パーティクルはすぐには更新されません。再生時には、パーティクル履歴は再計算されません。新しいイベントにだけ新しい設定が適用されます。
注:再生中にパラメータを変更したときのパーティクル フローの更新方法は、更新タイプで決定されます。所定のフレームのパーティクル システムの状態は以前のフレーム内のイベントに左右されるため、[完了](Complete)オプションを使用すると速度は落ちますが、変更結果をより正確に描画できます。時間がかかるのは、システム全体を最初のフレームからもう一度計算し直すためです。既定値は
[0: Complete モード](0: Complete)です。
<integer>particleFlow.cleanUpParticleFlow <boolean>doReport
使用されていない項目を削除することで、パーティクル フローをクリーンアップします。
引数に true が渡された場合、処理の結果がポップアップ ダイアログ ボックスとして表示されます。false の場合、処理は暗黙的に行われます。
削除された ParticleFlow 項目「dirty」の数を返します。
3ds Max 2010 以降 で使用可能です。
<void>particleFlow.repairCacheSystem <boolean>doReport
キャッシュ システムを修復します。
引数に true が渡された場合、処理の結果がポップアップ ダイアログ ボックスとして表示されます。false の場合、処理は暗黙的に行われます。
3ds Max 2010 以降 で使用可能です。
<integer>particleFlow.synchronizeLayers <boolean>doReport
パーティクル フロー項目を、同じレイヤにパーティクル フロー エミッタ オブジェクトとして移動します。
レイヤ マネージャを使用してパーティクル フロー エミッタ オブジェクトを別のレイヤに移動したとき、関連するその他のオブジェクト (すべてのパーティクル フロー オペレータ
ヘルパーや一部の内部オブジェクトなど) は自動的には同じレイヤに移動されません。これにより、たとえばレイヤがオフになっている場合に、フローが不正な動作をする可能性があります。
このメソッドは同期を実行するため、すべてのオブジェクトが確実に同じレイヤに移動します。
引数に true が渡された場合、処理の結果がポップアップ ダイアログ ボックスとして表示されます。false の場合、処理は暗黙的に行われます。
同期されたレイヤの数を返します。
3ds Max 2010 以降 で使用可能です。
<void>particleFlow.resetParticleView()
パーティクル ビューをリセットします。
3ds Max 2010 以降 で使用可能です。
<void>particleFlow.presetManager()
プリセット マネージャ ダイアログ ボックスを開きます。
3ds Max 2010 以降 で使用可能です。
<void>particleFlow.setNodeEditorDisplayFlags <integer>displayFlags
ノード エディタの display フラグを設定します。
3ds Max 2015 以降で使用可能です。
<void>particleFlow.forceRedrawParticleView <node>particleView
パーティクル ビュー エディタの再描画を強制します。
3ds Max 2015 以降で使用可能です。