日々適当

hibitekitou

(メモ)ポリゴンメッシュの頂点に既存のオブジェクトを配置(法線の向きを考慮)

xsi |2004-11-29
よくわからんけど、こんなもんで…



Dim oRoot, oObj, oGeometory, oNull, i , duplicatedObjectName

'複製するオブジェクトの名前を登録(existObjectNameを書き換える)
duplicatedObjectName = "existObjectName"


i = 1
DeselectAll

set oRoot = Application.ActiveProject.ActiveScene.Root

'対象オブジェクトをピックする。
PickElement "Object","Select Objct","Select Objct", oObj, button

set oObjTarget = oRoot.addNull("targetTempNull___Temp")

set oGeometry = oObj.ActivePrimitive.Geometry

'ピックしたオブジェクトの頂点にヌルを配置
for each oPoint in oGeometry.Points
'Phosphatideを複製して名前を変える
Duplicate duplicatedObjectName, , 2, 1, 1, 0, 0, 1, 0, 1, , , , , , , , , , , 0
SetValue duplicatedObjectName &"1.Name", duplicatedObjectName &"_"& i
'対象オブジェクトの頂点の法線を取り出す
set oNormal = oPoint.Normal
'対象オブジェクトの法線方向にNullを移動
SetValue oObjTarget &".kine.local.posx" , oNormal.x * 5
SetValue oObjTarget &".kine.local.posy" , oNormal.y * 5
SetValue oObjTarget &".kine.local.posz" , oNormal.z * 5
'Nullの方向にPhosphatideを傾ける
ApplyCns "Direction", duplicatedObjectName &"_"& i, oObjTarget
SetValue "Phosphatide_"& i &",.kine.dircns.dirx", 0
SetValue "Phosphatide_"& i &",.kine.dircns.diry", 1

Refresh

DeleteObj "Phosphatide_"& i &",.kine.dircns"

'Phosphatideをターゲットのポイント上に移動
SetValue duplicatedObjectName &"_"& i &",.kine.local.posx" , oPoint.Position.x
SetValue duplicatedObjectName &"_"& i &",.kine.local.posy" , oPoint.Position.y
SetValue duplicatedObjectName &"_"& i &",.kine.local.posz" , oPoint.Position.z

i = i + 1
next

'抽出用のヌルを削除
DeleteObj oObjTarget
コメント ( 0 )|Trackback ( )