日々適当

hibitekitou

(メモ)パーティクルの粒子位置にオブジェクトを移動させる

xsi |2004-12-10
現在のフレームにおけるパーティクル粒子位置すべてに、既存のオブジェクトを複製して割り当てる。

以下のスクリプトの場合、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 ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。