pfSystem インタフェースは、パーティクル フロー Source クラスによって公開されます。
メソッド:
<float><PF_Source>.getMultiplier <time>time
レンダリング ステータスにしたがって Qualtity マルチプライヤを返します。レンダリング ステータスの詳細は、下記のメソッド
setRenderState
および
isRenderState
を参照してください。
1.0f という値は、オペレータが 100% のレートでパーティクルを生成することを意味しています。0.5f という値は、オペレータが、生成するようにサポートされているパーティクルの半数しか生成しないことを意味しています。たとえば、[Birth]オペレータが全体で
1000 のパーティクルを生成するように設定されている場合、マルチプライヤが 0.5f に設定されていると、オペレータは 500 のパーティクルしか生成しません。
注:time パラメータは、将来的な使用のために予約されています。0f または任意の時間の値を渡して、メソッドを呼び出します。
例:
|
--ビューポート内に新しい パーティクル フロー Source を作成します。
--次に、それを名前によってシーンから取得します。
pfs = $'PF Source 01'
$PF_Source:PF Source 01 @ [2.536594,-48.031052,0.000000]
--ビューポート内にマルチプライヤを取得します。
pfs.getMultiplier 0f
0.5
--Particle Source のステータスをレンダリングに変更します。
pfs.SetRenderState true
true
--マルチプライヤをもう一度取得します。レンダリング状態にある場合、
--ソースがすべてのパーティクルを生成します。
pfs.getMultiplier 0f
1.0
|
<integer><PF_Source>.getBornAllowance()
発生の許可を返します。これは現在、時間 0 の[上限]になります。<PF Source>.Particle_Amount_Limit と同じです。
<bool><PF_Source>.hasEmitter()
Particle System にエミッタが存在する場合は true、そうでない場合は false を返します。
<integer><PF_Source>.getEmitterType <time>time
指定された時間のエミッタのタイプを返します。
<void><PF_Source>.getEmitterDimensions <time>time <&float array>dimensions
dimensions is In and Out parameter
指定された時間のエミッタ次元を、参照変数内に保存された浮動小数点の配列として返します。
<mesh><PF_Source>.getEmitterGeometry <time>time
指定された時間のエミッタ ジオメトリをメッシュとして返します。
<bool><PF_Source>.isEmitterGeometryAnimated()
指定されたエミッタ ジオメトリがアニメートされている場合は true、それ以外の場合は false を返します。
<void><PF_Source>.setRenderState <bool>renderState
パーティクル システムのレンダリング ステータスを、指定されたブール値に設定します。下記の説明を参照してください。
<bool><PF_Source>.isRenderState()
Particle System がレンダリング ステータスの場合は true、そうでない場合は false を返します。
重要:
|
パーティクル フロー のパーティクル システムには、レンダリングとビューポートという 2 通りのステータスがあります。どの時点でも、どちらか一方の状態です。パーティクル システムのパラメータは、レンダリングとビューポートとで異なるので (マルチプライヤの値や、エミッタ
ジオメトリなど)、現在どちらのステータスにあるのかを認識しておくことが重要です。setRenderState を使用して、パーティクル システムのステータスを切り替えることができます。レンダリングの開始時と終了時には、パーティクル フローのパーティクル システムによって自動的に状態が切り替えられます。
|
<time><PF_Source>.getIntegrationStep()
[インテグレーション ステップ]を時間の値で返します。
<integer><PF_Source>.getUpdateType()
Update Type を整数で返します。
0 : 完了
1 : 進む
<integer><PF_Source>.numParticlesSelected()
選択したパーティクルの数を返します。
<index><PF_Source>.getSelectedParticleID <index>index
インデックスで指定されたパーティクルのパーティクル ID を返します。
<bool><PF_Source>.isParticleSelected <index>index
インデックスで指定されたパーティクルが選択されている場合は true、それ以外の場合は false を返します。
<integer><PF_Source>.numActionListsSelected()
選択されたアクション リストの数を返します。
<node><PF_Source>.getSelectedActionList <index>index
インデックスで指定されたアクション リストを返します。
<bool><PF_Source>.isActionListSelected <index>index
インデックスで指定されたアクション リストが選択されている場合は true、それ以外の場合は false を返します。
例と結果:
|
--ビューポート内に新しい パーティクル フロー Source を作成します。
--次に、それを名前によってシーンから取得します。
pf = $'PF Source 01'
$PF_Source:PF Source 01 @ [0.000000,0.000000,0.000000]
--Source によって発生させることのできるパーティクルの数を取得します。
pf.getBornAllowance()
100000
--Source にエミッタがあるかどうかを確認します。
pf.hasEmitter()
true
--エミッタ タイプを取得します。
pf.getEmitterType 0
0
dim = #()--空の配列を定義します。
#()
--Emitter Dimensions を取得して、
--空の配列を参照変数に渡します。
pf.getEmitterDimensions 0 &dim
OK
--これまで空だった配列を見てみると、
--その中に寸法が入っています。
Dim
#(20.0, 20.0)
--Emitter Geometry を、フレーム 0 上の TriMesh として取得します。
m = pf.getEmitterGeometry 0
TriMesh
m.numverts--頂点の数を確認します。
4
m.numfaces--次に面の数見てみます。
2
--エミッタ寸法がアニメートできるかどうか確認します。
pf.isEmitterGeometryAnimated()
false
--レンダリング ステータスを設定/取得します。
pf.setRenderState false
OK
pf.isRenderState()
false
pf.setRenderState true
OK
pf.isRenderState()
true
--ビューポートのインテグレーション ステップを取得します。
pf.getIntegrationStep()
1f
--更新タイプを取得します。 0 であれば、完了です。
pf.getUpdateType()
0
--選択したパーティクルの数を取得します。
pf.numParticlesSelected()
0
--パーティクル 1 が選択されているかどうかを確認します。
pf.isParticleSelected 1
false
--UI 内の選択されたアクション リストの数を取得します。
pf.numActionListsSelected()
0
--UI で、最初のアクション リストを選択して再試行します。
pf.numActionListsSelected()
1
--今選択したアクション リストのノードを取得します。
pf.getSelectedActionList 1
$Event:Event 01 @ [0.000000,0.000000,0.000000]
|
このインタフェースは下記で使用できます。
PF_Source : GeometryClass