2008年4月27日日曜日

useSliderTime

3ds maxに搭載されているParticleFlowというパーティクルツールは、フローチャート型のGUIでユーザー親和性を高めたツールです。
多くの部分はオペレータと呼ばれる小さな働きをする部品を組み合わせていくことで、場合によってはなかなかいい性能を発揮します。
が、なぜ標準でこの機能が無いのか?と思う部分も少なくありません。
そうした場合に、
ParticleFlowではScriptオペレータとScriptテストという機能が提供されています。
Scriptオペレータは同じ動きをする、例えば常に20単位だけX軸方向にずらしたいとき、などに使えます。
Scriptテストは判定としてTrueまたはFalseであるかを元にテストを合格とするか、不合格とするかという動作をします。

今回はScriptテストを使って、指定したタイムスライダ時間になっているかどうかをテストしてみます。
例えば、特定の時間以降に特定のフォースの影響を受けたい場合などに便利です。

-- useSliderTime
on ChannelsUsed pCont do
(
--pCont.useTime = true
--pCont.usePosition = true
)

on Init pCont do
(

)

on Proceed pCont do
(
count = pCont.NumParticles()
for i in 1 to count do
(
if sliderTime > 100f then pCont.particleTestStatus = true
)
)

on Release pCont do
(

)

例によってMAXファイルをアップロードできないのが難ありですが、こんな風になります。

この例では100f以降になると、風の影響を受けるようになります。
pCont.particleTestStatus = true
は、パーティクルをテストにTuer(合格)させるという操作になります。
【補足】
ParticleFlow内のスクリプト及びそのコメントには日本語を使用しない。
これは経験上のことでしかないのではっきりしませんが、ParticleFlow内のスクリプト及びそのコメントに日本語を使うとファイルが開けなくなる場合があるようです。
なので、ファイルを保存するときはスクリプトを別にもテキストにバックアップしおいたり、MAXファイル名を変更しながら慎重に作業を進めるのがよいと思います。

制作・©:のぼる/N.Lab