hibitekitou
MapObjectPositionToWorldSpace
xsi |2012-10-21
よさげな関数。Pythonで下さい(^^)
Softimage 頂点を渡すとグローバルの座標が戻される関数 [MOCHI-MOCHI]
ちなみに、SIのSDKドキュメントにおける MapObjectPositionToWorldSpaceのJscriptの例文はちゃんと正しい結果が返ってくるように見えますが、以下のように、Nullの子供にしてからoTransを得て、MapObjectPositionToWorldSpaceを実行すると、Globalな値は返ってこないように見えます。
返ってきてほしい値は、
//INFO : The local position is: X -4 Y -4 Z -4
//INFO : The world position is: X -2 Y 0 Z -4
のはずなのだけど、
//INFO : The local position is: X -4 Y -4 Z -4
//INFO : The world position is: X 2 Y 2 Z -4
となります。
これ、例文が間違っているだけなのか、何か意図のある例文なのか…
NewScene (null, false);
var oRoot = Application.ActiveProject.ActiveScene.Root;
var oCube = oRoot.AddGeometry("Cube","MeshSurface");
var oNull = oRoot.AddNull("")
oCube.Kinematics.Global.Parameters("posy").value = 4.0;
oCube.Kinematics.Global.Parameters("posx").value = 2.0;
oNull.Kinematics.Global.Parameters("posx").value = -4.0;
oNull.Kinematics.Global.Parameters("posy").value = -2.0;
oNull.AddChild(oCube);
var oTrans = oCube.Kinematics.Local.Transform;
var oPoint = oCube.ActivePrimitive.Geometry.Points(0);
var oPos = oPoint.Position;
Application.LogMessage ("The local position is: X "+ oPos.X + " Y " + oPos.Y + " Z " + oPos.Z);
var oGlobalPos = XSIMath.MapObjectPositionToWorldSpace( oTrans, oPos);
Application.LogMessage ("The world position is: X "+ oGlobalPos.X + " Y " + oGlobalPos.Y + " Z " + oGlobalPos.Z);
Softimage 頂点を渡すとグローバルの座標が戻される関数 [MOCHI-MOCHI]
ちなみに、SIのSDKドキュメントにおける MapObjectPositionToWorldSpaceのJscriptの例文はちゃんと正しい結果が返ってくるように見えますが、以下のように、Nullの子供にしてからoTransを得て、MapObjectPositionToWorldSpaceを実行すると、Globalな値は返ってこないように見えます。
返ってきてほしい値は、
//INFO : The local position is: X -4 Y -4 Z -4
//INFO : The world position is: X -2 Y 0 Z -4
のはずなのだけど、
//INFO : The local position is: X -4 Y -4 Z -4
//INFO : The world position is: X 2 Y 2 Z -4
となります。
これ、例文が間違っているだけなのか、何か意図のある例文なのか…
NewScene (null, false);
var oRoot = Application.ActiveProject.ActiveScene.Root;
var oCube = oRoot.AddGeometry("Cube","MeshSurface");
var oNull = oRoot.AddNull("")
oCube.Kinematics.Global.Parameters("posy").value = 4.0;
oCube.Kinematics.Global.Parameters("posx").value = 2.0;
oNull.Kinematics.Global.Parameters("posx").value = -4.0;
oNull.Kinematics.Global.Parameters("posy").value = -2.0;
oNull.AddChild(oCube);
var oTrans = oCube.Kinematics.Local.Transform;
var oPoint = oCube.ActivePrimitive.Geometry.Points(0);
var oPos = oPoint.Position;
Application.LogMessage ("The local position is: X "+ oPos.X + " Y " + oPos.Y + " Z " + oPos.Z);
var oGlobalPos = XSIMath.MapObjectPositionToWorldSpace( oTrans, oPos);
Application.LogMessage ("The world position is: X "+ oGlobalPos.X + " Y " + oGlobalPos.Y + " Z " + oGlobalPos.Z);
コメント ( 0 )|Trackback ( )
コメント |
コメントはありません。 |
![]() |
コメントを投稿する |
![]() |
ブログ作成者から承認されるまでコメントは反映されません |