説明:
次の例では、インテグレータ インタフェースの proceedSynch メソッドを使用した 2 つの PF_Source のパーティクル位置の違いを示しています。
用途:
これら 2 つのサンプル スクリプトは、Script_Test アクションの内部で使用されます。
-
ビューポートで PF_Source を作成します。
-
[パーティクル ビュー]を開きます。
-
[Event01]の最後に Script_Test アクションを追加します。
-
パーティクル システムのクローンを作成しますが、まったく同じ位置に置いたままにしておきます。
-
2 つ目のパーティクル システムのカラーを変更します。
-
最初のパーティクル システムの Script_Test テストにある最初のサンプルをロードします。
-
2 つ目のパーティクル システムの Script_Test テストにある 2 つ目のサンプルをロードします。
効果:
ユーザが、2 つの ProceedSynch コールの効果を比較できます。
すべてのパーティクルの位置の結果が、リスナーに印刷されます。
例 1
|
--ChannelsUsed ハンドラは、スクリプトに提供される
--チャンネルを定義します。
--すべてのチャンネルのリストについては、
--インタフェース: MaxscriptParticleContainer を参照してください。
--ハンドラに渡されるパラメータ pCont には
--スクリプトの適用先のパーティクル コンテナが含まれています。
on ChannelsUsed pCont do
(
pCont.useTime = true --時間チャンネルを有効にします。
pCont.usePosition = true --位置チャンネルを有効にします。
)
--初期化時には Init ハンドラが呼び出されます。
--この例では使用しません。
on Init pCont do
(
)
--roceed ハンドラで、インテグレータの ProceedSync メソッドを
--呼び出します。
on Proceed pCont do
(
end = pCont.GetTimeEnd()asfloat
_int = pCont.GetIntegrator()
count = pCont.NumParticles()
pCont_curr = pCont.GetParticleContainer()
for i in 1 to count do
(
pCont.particleIndex = i
if_int != undefinedthen
_int.proceedSync pCont_curr (end/160) 0.0 false #{}
format "p1.particle%=%\n" i (pCont.GetParticlePosition i)
)
)
--Release ハンドラを使ってクリーンアップを行います。
--この例では使用しません。
on Release pCont do
(
)
|
例 2
|
--ChannelsUsed ハンドラは、スクリプトに提供される
--チャンネルを定義します。
--すべてのチャンネルのリストについては、
--インタフェース: MaxscriptParticleContainer を参照してください。
--ハンドラに渡されるパラメータ pCont には
--スクリプトの適用先のパーティクル コンテナが含まれています。
on ChannelsUsed pCont do(
pCont.useTime = true --時間チャンネルを有効にします。 pCont.usePosition = true -- 位置チャンネルを有効にします。
)
--初期化時には Init ハンドラが呼び出されます。
--この例では使用しません。
on Init pContdo( )onProceed pCont do(
end = pCont.GetTimeEnd()asfloat_int = pCont.GetIntegrator()
count = pCont.NumParticles()pCont_curr = pCont.GetParticleContainer()
for i in 1 to count do
(
pCont.particleIndex = i
if_int != undefinedthen
_int.proceedSync pCont_curr (end/160) 0.5 false #{}
-- テストする配列バージョン:
--_int.proceedASync pCont_curr #((end/160), (2*end/160), (3*end/160)) #(0.1, 0.2, 0.5) true #{1..3}
format "p2.particle%=%\n"i (pCont.GetParticlePosition i)
)
)
--Release ハンドラを使ってクリーンアップを行います。
--この例では使用しません。
on Release pCont do
(
)
|