GameModelに書き出すときは実ジオメトリデータが必要になります
Scriptから、Positionなどにアクセスできれば
その位置に配置することが出来るなぁと
思いながら誰かが作ってくれるのを待ちます
待てども待てども・・・。
だれも作ってくれないので、
ちょっと現実逃避がてら作業をしてみました
とりあえず、PointPositionを取得できたので、
Cubeをコピーすることに。
現フレームのポイントのポジションを取得して、
キューブを配置してます。
草や樹木程度だといけそうな感じ
from win32com.client import Constants as c
app = Application; log = app.Logmessage
#ポイントクラウドを選択
oPC = app.Dictionary.GetObject("pointcloud")
#ICEアトリビュートを取得、今回はPointPosition
attr = oPC.ActivePrimitive.Geometry.GetICEAttributeFromName("PointPosition")
#DataType(どんなパラメーターなのかコレで判別)
oType = attr.DataType
#アトリビュート内のデーターを取得
oData = attr.DataArray
#選択しているオブジェクト
oCube = app.Selection(0)
#位置を設定するためにPosのワールドベクト、トランスフォームを用意
v = XSIMath.CreateVector3()
oTrans = XSIMath.CreateTransform()
#データーに格納してある要素を取り出す
#コレの長さってどうやって出すんだ?
for elem in oData:
#ベクトルにポジションを入れる
v.Set(elem.X, elem.Y, elem.Z)
#トランスフォームにセット
oTrans.SetTranslation(v)
#オブジェクトを複製
newObj = app.Duplicate(oCube)(0)
#複製したものに位置を設定
newObj.Kinematics.Global.Transform = oTrans
#log( "Vector3: " + str(elem.X) + ":" + str(elem.Y) + ":" + str(elem.Z) )

0 件のコメント:
コメントを投稿