インタフェース: particleObjectExt
 
 
 

particleObjectExt インタフェースは、パーティクル フロー Source クラスで公開されます。

   

プロパティ:

<PF_Source>.particleIndex : index : Read|Write|Validated by Range: 1 to 100000000 	 

現在のパーティクル インデックスを取得/設定します。

   

<PF_Source>.particleID : index : Read|Write|Validated by Range: 1 to 100000000   

現在のパーティクル ID を取得/設定します。

   

<PF_Source>. particleAge : time : Read|Write|Validated by Range: 0f to 625000f 

現在のパーティクル エージを取得/設定します。

   

<PF_Source>. particleGroupTime : time : Read|Write|Validated by Range: 0f to 625000f 

現在のパーティクルの Group Time を取得/設定します。

   

<PF_Source>.particlePosition : point3 : Read|Write 

現在のパーティクルの位置を取得/設定します。

   

<PF_Source>. particleSpeed : point3 : Read|Write 

現在のパーティクルの速度を取得/設定します。

   

<PF_Source>. particleOrientation : point3 : Read|Write 

現在のパーティクルの方向を取得/設定します。

   

<PF_Source>. particleSpin : angleAxis : Read|Write 

現在のパーティクルのスピンを取得/設定します。

   

<PF_Source>.particleScale : float : Read|Write|Validated by Range: 0.0 to 1e+009 

現在のパーティクルのサイズを取得/設定します。

   

<PF_Source>.particleScaleXYZ : point3 : Read|Write 

現在のパーティクルのスケールを Point3 値として取得/設定します。

   

<PF_Source>.particleTM : matrix3 : Read|Write 

現在のパーティクルの変換行列を取得/設定します。

   

<PF_Source>.particleSelected : bool : Read|Write 

現在のパーティクルの選択された状態を取得/設定します。

   

<PF_Source>.particleShape : mesh : Read|Write 

現在のパーティクルのメッシュを取得/設定します。

例と結果:

--[作成]パネルから、シーンの既定値の PF Source を作成します。
--インタフェース プロパティをテストするための Source を名前で取得します。
pf = $'PF Source 01'
$PF_Source:PF Source 01 @ [2.536594,-48.031052,0.000000]
--現在のパーティクルのインデックスを取得します。
pf.particleIndex
1
--パーティクル インデックスを変更します。以降のプロパティは、
--すべてパーティクル 2 からになります。
pf.particleIndex = 2
2
--動作を確認します。
pf.particleIndex
2
--パーティクル 2 のパーティクル ID を取得します。
pf.particleID
0
--フレーム 0 のパーティクル エージを取得します。
--これは生まれたてのパーティクルで、エージは 0 です。
pf.particleAge
0f
--ここでシーンの時間をフレーム 10 に変更します。
sliderTime = 10
10
--...もう一度エージを取得してみます。
--10 フレーム後を取得すると、エージは 9.7 フレームになっています。
pf.particleAge
9.7f
--パーティクル 2 が選択されているかどうかを確認します。
--選択されていません。
pf.particleSelected
false
--[修正]パネルに変更します。
max modify mode
OK
--パーティクルのサブオブジェクト レベルに変更します。
subObjectLevel = 1
1
--パーティクル 2 を選択します。1 つのパーティクルは 
--ビューポート内で赤に変わります。
pf.particleSelected = true
true
--パーティクルの位置を取得します。
pf.particlePosition
[12.1301,-40.7149,-96.9697]
--これは変更できます。
--パーティクルはそこに移動します。
pf.particlePosition = [10.0,-10.0,-40.0]
[10,-10,-40]
--パーティクル 2 の速度を取得します。
pf.particleSpeed
[0,0,-0.0625]
--パーティクル 2 の方向を取得します。
pf.particleOrientation
[-2.75317,-1.18547,-0.402363]
--パーティクル 2 のスピンを取得します。
pf.particleSpin
(angleAxis 0 [1,0,0])
--パーティクルのサイズを取得します。
pf.particleScale
16.3299
--パーティクルのスケールを取得します。
pf.particleScaleXYZ
[1,1,1]
--パーティクルの完全な TM を取得します。
pf.particleTM
(matrix3 [0.345842,-0.147184,0.926677] [-0.0394943,-0.989029,-0.142347] [0.937461,0.0126313,-0.34786] [12.1301,-40.7149,-96.9697])
--TriMesh のシェイプを取得します。
msh = pf.particleShape
TriMesh
--頂点の数を見てみます。
msh.numverts
4
--...次に面の数見てみます。
msh.numfaces
4
--実際の TriMesh を見てみましょう。
--新しい空の編集可能メッシュを作成します。
new_mesh = Editable_mesh()
$Editable_Mesh:Object01 @ [0.000000,0.000000,0.000000]
--シェイプのスナップショットをメッシュに割り当てます。
new_mesh.mesh = msh
TriMesh
--最後に編集可能メッシュのすべてのキャッシュを更新して、結果を確認します。
update new_mesh
OK

メソッド:

   

<void><PF_Source>.updateParticles <node>particleSystem <time>time 

指定した時間にパーティクルを更新するように強制します。

   

<integer><PF_Source>.numParticles() 

パーティクルの数を返します。

   

<integer><PF_Source>.numParticlesGenerated() 

生成されたパーティクルの数を返します。

   

<void><PF_Source>.setEveryStepUpdateScriptLine <string>script 

すべての更新ステップで実行されるようにスクリプト文字列を設定します。

   

<void><PF_Source>.setEveryStepUpdateScriptFile <filename>fileName 

すべての更新ステップで実行されるようにスクリプト ファイルを設定します。

   

<void><PF_Source>.setFinalStepUpdateScriptLine <string>script 

最後の更新ステップで実行されるようにスクリプト文字列を設定します。

   

<void><PF_Source>.setFinalStepUpdateScriptFile <filename>fileName 

最後の更新ステップで実行されるようにスクリプト ファイルを設定します。

   

<time><PF_Source>.getUpdateTime() 

現在の更新時間を返します。

   

<void><PF_Source>.getUpdateInterval <&time>timeStart <&time>timeEnd 

timeStart is In and Out parameter 
timeEnd is In and Out parameter 

2 つの参照変数内の更新間隔を返します。

   

<index><PF_Source>.getParticleID <index>particleIndex 

インデックスで指定されたパーティクルのパーティクル ID を返します。

   

<bool><PF_Source>.hasParticleID <index>particleBornIndex <&index>particleIndex 

particleIndex is In and Out parameter 

指定したパーティクル発生 ID を持つパーティクルが存在する場合、true を返します。指定した参照変数内にある実際のパーティクル インデックスを返します。

   

<node><PF_Source>.getParticleGroup <index>particleIndex 

インデックスで指定されたパーティクル グループのノードを返します。

   

<index><PF_Source>.getParticleIndex <index>particleBornIndex 

指定した発生インデックスを持つパーティクルのパーティクル インデックスを返します。

   

<time><PF_Source>.getParticleAge <index>particleIndex 

インデックスで指定されたパーティクルのパーティクル エージを返します。

   

<time><PF_Source>.getParticleAgeByID <index>particleID 

パーティクル ID によって指定されたパーティクルのパーティクル エージを返します。

   

<void><PF_Source>.setParticleAge <index>particleIndex <time>age 

指定したインデックス指定のパーティクルのパーティクル エージを、指定したエージの値に設定します。

   

<void><PF_Source>.setParticleAgeByID <index>particleID <time>age 

ID によって指定されたパーティクルのパーティクル エージを、指定したエージの値に設定します。

   

<time><PF_Source>.getParticleLifeSpan <index>particleIndex 

指定したインデックス指定のパーティクルのスパン期間を返します。

   

<time><PF_Source>.getParticleLifeSpanByID <index>particleID 

ID によって指定されたパーティクルのスパン期間を返します。

   

<void><PF_Source>.setParticleLifeSpan <index>particleIndex <time>lifeSpan 

インデックスで指定されたパーティクルのスパン期間を、指定された[寿命]の値に設定します。

   

<void><PF_Source>.setParticleLifeSpanByID <index>particleID <time>lifeSpan 

ID によって指定されたパーティクルのスパン期間を、指定された[寿命]の値に設定します。

   

<time><PF_Source>.getParticleGroupTime <index>particleIndex 

インデックスで指定されたパーティクルの Group Time を返します。

   

<time><PF_Source>.getParticleGroupTimeByID <index>particleID 

ID によって指定されたパーティクルの Group Time を返します。

   

<void><PF_Source>.setParticleGroupTime <index>particleIndex <time>age 

インデックスで指定されたパーティクルの Group Time を、指定したエージの値に設定します。

   

<void><PF_Source>.setParticleGroupTimeByID <index>particleID <time>age 

ID によって指定されたパーティクルの Group Time を、指定したエージの値に設定します。

   

<point3><PF_Source>.getParticlePosition <index>particleIndex 

インデックスで指定されたパーティクルの位置を返します。

   

<point3><PF_Source>.getParticlePositionByID <index>particleID 

ID によって指定されたパーティクルの位置を返します。

   

<void><PF_Source>.setParticlePosition <index>particleIndex <point3>position 

インデックスで指定されたパーティクルの位置を、指定された Point3 型の値に設定します。

   

<void><PF_Source>.setParticlePositionByID <index>particleID <point3>position 

ID で指定されたパーティクルの位置を、指定された Point3 型の値に設定します。

   

<point3><PF_Source>.getParticleSpeed <index>particleIndex 

インデックスで指定されたパーティクルの速度を Point3 型の値として返します。

   

<point3><PF_Source>.getParticleSpeedByID <index>particleID 

ID で指定されたパーティクルの速度を Point3 型の値として返します。

   

<void><PF_Source>.setParticleSpeed <index>particleIndex <point3>speed 

インデックスで指定されたパーティクルの速度を、指定された Point3 型の値に設定します。

   

<void><PF_Source>.setParticleSpeedByID <index>particleID <point3>speed 

ID で指定されたパーティクルの速度を、指定された Point3 型の値に設定します。

   

<point3><PF_Source>.getParticleOrientation <index>particleIndex 

インデックスで指定されたパーティクルの方向を Point3 型の値として返します。

   

<point3><PF_Source>.getParticleOrientationByID <index>particleID 

ID で指定されたパーティクルの方向を Point3 型の値として返します。

   

<void><PF_Source>.setParticleOrientation <index>particleIndex <point3>orientation 

インデックスで指定されたパーティクルの方向を、指定された Point3 型の値に設定します。

   

<void><PF_Source>.setParticleOrientationByID <index>particleID <point3>orientation 

ID で指定されたパーティクルの方向を、指定された Point3 型の値に設定します。

   

<angleAxis><PF_Source>.getParticleSpin <index>particleIndex 

インデックスで指定されたパーティクルのスピンを angleAxis 値として返します。

   

<angleAxis><PF_Source>.getParticleSpinByID <index>particleID 

ID で指定されたパーティクルのスピンを angleAxis 値として返します。

   

<void><PF_Source>.setParticleSpin <index>particleIndex <angleAxis>spin 

インデックスで指定されたパーティクルのスピンを、指定した AngleAxis 値に設定します。

   

<void><PF_Source>.setParticleSpinByID <index>particleID <angleAxis>spin 

ID によって指定されたパーティクルのパーティクルのスピンを、指定した angleAxis 値に設定します。

   

<float><PF_Source>.getParticleScale <index>particleIndex 

インデックスで指定されたパーティクルのサイズを浮動小数点の値として返します。

   

<float><PF_Source>.getParticleScaleByID <index>particleID 

ID で指定されたパーティクルのサイズを浮動小数点の値として返します。

   

<void><PF_Source>.setParticleScale <index>particleIndex <float>scale 

インデックスで指定されたパーティクルのサイズを、指定した浮動小数点の値に設定します。

   

<void><PF_Source>.setParticleScaleByID <index>particleID <float>scale 

ID によって指定されたパーティクルのパーティクルのサイズを、指定した浮動小数点の値に設定します。

   

<point3><PF_Source>.getParticleScaleXYZ <index>particleIndex 

インデックスで指定されたパーティクルのスケールを Point3 型の値として返します。

   

<point3><PF_Source>.getParticleScaleXYZByID <index>particleID 

ID で指定されたパーティクルのスケールを Point3 型の値として返します。

   

<void><PF_Source>.setParticleScaleXYZ <index>particleIndex <point3>scaleXYZ 

インデックスで指定されたパーティクルのスケールを、指定された Point3 型の値に設定します。

   

<void><PF_Source>.setParticleScaleXYZByID <index>particleID <point3>scaleXYZ 

ID で指定されたパーティクルのスケールを、指定された Point3 型の値に設定します。

   

<matrix3><PF_Source>.getParticleTM <index>particleIndex 

インデックスで指定されたパーティクルの変換行列を返します。

   

<matrix3><PF_Source>.getParticleTMByID <index>particleID 

ID によって指定されたパーティクルの変換行列を返します。

   

<void><PF_Source>.setParticleTM <index>particleIndex <matrix3>TM 

インデックスで指定されたパーティクルの変換行列を設定します。

   

<void><PF_Source>.setParticleTMByID <index>particleID <matrix3>TM 

ID によって指定されたパーティクルの変換行列を設定します。

   

<bool><PF_Source>.getParticleSelected <index>particleIndex 

インデックスで指定されたパーティクルの選択された状態を返します。

   

<bool><PF_Source>.getParticleSelectedByID <index>particleID 

ID によって指定されたパーティクルの選択された状態を返します。

   

<void><PF_Source>.setParticleSelected <index>particleIndex <bool>selected 

インデックスで指定されたパーティクルの選択された状態を設定します。

   

<void><PF_Source>.setParticleSelectedByID <index>particleID <bool>selected 

ID によって指定されたパーティクルの選択された状態を設定します。

   

<mesh><PF_Source>.getParticleShape <index>particleIndex 

インデックスで指定されたパーティクルのシェイプをメッシュ値として返します。

   

<mesh><PF_Source>.getParticleShapeByID <index>particleID 

ID で指定されたパーティクルのシェイプをメッシュ値として返します。

   

<void><PF_Source>.setParticleShape <index>particleIndex <mesh>shape 

インデックスで指定されたパーティクルのシェイプを、指定したメッシュ値に設定します。

   

<void><PF_Source>.setParticleShapeByID <index>particleID <mesh>shape 

ID によって指定されたパーティクルのパーティクルのシェイプを、指定したメッシュ値に設定します。

   

<void><PF_Source>.setShapeForAllParticles <mesh>shape 

すべてのパーティクルのシェイプを、指定されたメッシュ値に設定します。

例と結果:

--ビューポート内に新しい パーティクル フロー Source を作成します。
--次に、それを名前によってシーンから取得します。
pf = $'PF Source 01'
$PF_Source:PF Source 01 @ [2.536594,-48.031052,0.000000]
--シーンの時間をフレーム 10 に設定します。
sliderTime = 10
10
--時間 10 のパーティクルを更新します。
pf.updateParticles pf 10f
OK
--現時点のパーティクルの総数を取得します。
pf.numParticles()
34
--現時点までに生成されたパーティクルの総数を取得します。
pf.numParticlesGenerated()
34
--パーティクルの更新時間を取得します。
pf.getUpdateTime()
10f
--2 つのユーザ変数を 0 に初期化します。
ts = te = 0
0
--シーンの時間をフレーム 10 に設定します。
sliderTime = 10f
10f
--参照渡しの変数に入れる更新間隔を取得します。
pf.getUpdateInterval &ts &te
OK
--開始時間をチェックします。
ts
9f
--終了時間をチェックします。
te
10f
pf.getParticleID 34--34番目のパーティクルのパーティクル ID を取得します。
34
--35 番目のパーティクルを取得してみます。
--パーティクルは 34 個しか存在しないので、ID は 0 になります。
pf.getParticleID 35
0
--参照に渡す変数を初期化します。
idx = 0
0
--ID が 34 であるパーティクルが存在するかどうかチェックします。
--存在しています。
pf.hasParticleID 34 &idx
true
--そのインデックスは 34 です。
idx
34
--同じことをパーティクル ID 35 についても調べてみます。
--こちらは存在していません。
pf.hasParticleID 35 &idx
false
--パーティクル グループのノードを取得します。
pf.getParticleGroup 2
$Particle_Group:PF Source 01->Event 01 @ [0.000000,0.000000,0.000000]
--パーティクル 34 のインデックスを取得します。
pf.getParticleIndex 34
34
--パーティクル 35 のインデックスを取得します。
--そのようなパーティクル ID は存在しないので、インデックスは 0 になります。
pf.getParticleIndex 35
0
--パーティクル 2 のパーティクル エージを取得します。
pf.getParticleAge 2
9.7f
--パーティクル ID 2 のパーティクル エージを取得します。
--同じパーティクルです。
pf.getParticleAgeByID 2
9.7f
--パーティクル 34 のパーティクル エージを取得します。
--これは後で発生したパーティクルなので、エージは小さくなります。
pf.getParticleAge 34
9f
--パーティクル 2 のエージを 5 つのフレームに設定します。
pf.setParticleAge 2 5f
OK
--動作しているかどうか確認します。動作していました。
pf.getParticleAge 2
5f
--パーティクル 2 のスパン期間を取得します。
--永久に存続させたいのはどれでしょうか。これです。
pf.getParticleLifeSpan 2
1.34218e+007f
--パーティクル 2 のスパン期間を変更します。
pf.setParticleLifeSpan 2 10f
OK
--再確認します。 変更されていました。
pf.getParticleLifeSpan 2
10f
--パーティクル 2 の Group Time を取得します。
pf.getParticleGroupTime 2
0f
&endash;-Set the Particle Group Time to 10
pf.setParticleGroupTime 2 10f
OK
--もう一度時間を取得します。設定されています。
pf.getParticleGroupTime 2
10f
--パーティクル 2 のメッシュを天球体に変更してみます。
gs = (geosphere radius:5).mesh
TriMesh
--表示をジオメトリに変更します。
pf.Event_01.Display_01.Type = 6
6
--パーティクル メッシュを設定します。
--1 つのパーティクルが天球体になっていました。
pf.setParticleShape 2 gs
OK
--ティーポットのメッシュを取得します。
tp = (teapot radius:5).mesh
TriMesh
--さらに、すべてのパーティクルに割り当てます。ティーポットに変わるはずです。
--さあ、お茶の時間です!
pf.setShapeForAllParticles tp
OK

このインタフェースは下記で使用できます。

PF_Source : GeometryClass

ParticleGroup : GeometryClass

関連事項