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 件のコメント:
コメントを投稿