hibitekitou
(メモ)パーティクルの粒子位置にオブジェクトを移動させる
xsi |2004-12-10
現在のフレームにおけるパーティクル粒子位置すべてに、既存のオブジェクトを複製して割り当てる。
以下のスクリプトの場合、Particle TypeがCloudに2つ存在し、それぞれに別のオブジェクトを割り当てようとしている。シーン内には以下のものが存在しているとする。
なを、CopyObjとCopyObjB、それぞれの名前に数字がついたオブジェクトが存在していると正しく動作しないので、要改良ではある。
以下のスクリプトの場合、Particle TypeがCloudに2つ存在し、それぞれに別のオブジェクトを割り当てようとしている。シーン内には以下のものが存在しているとする。
- パーティクルクラウド名:cloud
- パーティクルタイプの数:2
- 一つ目のオブジェクト:CopyObj
- 二つ目のオブジェクト:CopyObjB
なを、CopyObjとCopyObjB、それぞれの名前に数字がついたオブジェクトが存在していると正しく動作しないので、要改良ではある。
set oRoot = ActiveProject.ActiveScene.Root
set oCloud = oRoot.FindChild( ,"cloud" )
set oParticles = oCloud.Particles
i = 1
j = 1
'パーティクルの粒子一つ一つについて評価
for each ParticleID in oParticles.IDArray
set oParticle = oParticles.Item(ParticleID)
set pos = oParticle.Position
'一つ目のパーティクルタイプについて評価
if oParticle.TypeID = 0 then
Duplicate "CopyObj", , 2, 1, 1, 0, 0, 1, 0, 1, , , , , , , , , , , 0
SetValue "CopyObj1.Name", "phosphatide_"& i
set oObj = oRoot.FindChild("phosphatide_"& i)
oObj.Kinematics.Global.Parameters("posx").value = pos.x
oObj.Kinematics.Global.Parameters("posy").value = pos.y
oObj.Kinematics.Global.Parameters("posz").value = pos.z
i = i + 1
else
'二つ目のパーティクルタイプについて評価
Duplicate "CopyObjB", , 2, 1, 1, 0, 0, 1, 0, 1, , , , , , , , , , , 0
SetValue "CopyObjB1.Name", "cholesterol_"& j
set oObj = oRoot.FindChild("cholesterol_"& j)
oObj.Kinematics.Global.Parameters("posx").value = pos.x
oObj.Kinematics.Global.Parameters("posy").value = pos.y
oObj.Kinematics.Global.Parameters("posz").value = pos.z
j = j + 1
end if
next
logmessage "finsh!"
コメント ( 0 )|Trackback ( )
コメント |
コメントはありません。 |
コメントを投稿する |
ブログ作成者から承認されるまでコメントは反映されません |