CreateUserMotion

導入

v10.5 (2012)

詳細

ユーザ モーション プロパティを作成します。ユーザ モーションは、オブジェクトのジオメトリの頂点のモーション ベクトルを制御するために使用されます。 ユーザ モーションは、頂点クラスタのみで作成できます。 ユーザ モーション プロパティには、クラスタの頂点ごとに 3 つの浮動小数点値を保存します。 ユーザ モーション プロパティをオブジェクトに適用すると、モーション ブラーが計算されなくなり、代わりにこのプロパティのモーション データが使用されます。

スクリプト構文

oReturn = CreateUserMotion( [InputObjs], [PropertyName], PropPresetObj );

戻り値

新しく作成されたプロパティの XSICollection を戻します。

パラメータ

パラメータ タイプ 説明
InputObjs 文字列 オブジェクトまたはポイント クラスタ全体のリスト

デフォルト値: 現在選択されている値

PropertyName 文字列 ユーザモーションプロパティの名前。

デフォルト値: "UserMotion"

PropPresetObj プリセット オブジェクト ユーザ モーション プロパティ プリセット

デフォルト値: "User Motion Property" プリセット

JScript の例

/* 

	This JScript example illustrates how to set the user motion vectors on

	the UserMotion Cluster Property with ICE. The motion vectors of a static

	cylinder are set by the motion of an animated cylinder.

*/

// Create the cylinders

NewScene(null, false);

CreatePrim("Cylinder", "MeshSurface");

Duplicate("cylinder");

// Animate the cylinder

Translate(null, -8, 5, 0);

SaveKeyOnKeyable("cylinder1", 1);

Translate(null, 16, 0, 0);

SaveKeyOnKeyable("cylinder1", 25);

Translate(null, 0, -10, 0);

SaveKeyOnKeyable("cylinder1", 50);

Translate(null, -16, 0, 0);

SaveKeyOnKeyable("cylinder1", 75);

Translate(null, 0, 10, 0);

SaveKeyOnKeyable("cylinder1", 100);

SelectObj("cylinder", null, true);

// Add a User Motion Cluster Prop on the static cylinder and set its ICE Tree

CreateUserMotion();

var oICETreeColl = CreateSimulatedICETree("cylinder", siNode, null);

var oICETree = oICETreeColl.Item(0);

AddICENode("GetDataAtPreviousFrameNode", oICETree);

SetValue(oICETree + ".GetDataAtPreviousFrameNode.reference", "cylinder1.PointPosition");

AddICENode("GetDataAtPreviousFrameNode", oICETree);

SetValue(oICETree + ".GetDataAtPreviousFrameNode[1].reference", "cylinder1.kine.local");

AddICENode("MultiplyVectorByMatrixNode", oICETree);

ConnectICENodes(oICETree + ".MultiplyVectorByMatrixNode.vector", oICETree + ".GetDataAtPreviousFrameNode.value");

ConnectICENodes(oICETree + ".MultiplyVectorByMatrixNode.matrix", oICETree + ".GetDataAtPreviousFrameNode[1].value");

AddICENode("GetDataNode", oICETree);

SetValue(oICETree + ".SceneReferenceNode.reference", "cylinder1.PointPosition", null);

AddICENode("GetDataNode", oICETree);

SetValue(oICETree + ".SceneReferenceNode[1].reference", "cylinder1.kine.local", null);

AddICENode("MultiplyVectorByMatrixNode", oICETree);

ConnectICENodes(oICETree + ".MultiplyVectorByMatrixNode[1].vector", oICETree + ".SceneReferenceNode.value");

ConnectICENodes(oICETree + ".MultiplyVectorByMatrixNode[1].matrix", oICETree + ".SceneReferenceNode[1].value");

AddICENode("SubtractNode", oICETree);

ConnectICENodes(oICETree + ".SubtractNode.first", oICETree + ".MultiplyVectorByMatrixNode.result");

ConnectICENodes(oICETree + ".SubtractNode.second", oICETree + ".MultiplyVectorByMatrixNode[1].result");

AddICENode("DivideByScalarNode", oICETree);

ConnectICENodes(oICETree + ".DivideByScalarNode.value", oICETree + ".SubtractNode.result");

SetValue(oICETree + ".DivideByScalarNode.divideby", 2, null);

AddICECompoundNode("Set Data", oICETree);

SetValue(oICETree + ".Set_Data.Reference", "cylinder.cls.UserMotionCls.UserMotion.Motions", null);

AddICENode("SwitchContextNode", oICETree);

ConnectICENodes(oICETree + ".SwitchContextNode.value", oICETree + ".DivideByScalarNode.result");

ConnectICENodes(oICETree + ".Set_Data.Value", oICETree + ".SwitchContextNode.result");

ConnectICENodes(oICETree + ".port1", oICETree + ".Set_Data.Execute");

// Draw a render region with motion blur on, and playback the scene

RenderRegionCreate(siViewportB, 0, 1, 0, 1);

SetValue("Views.ViewB.RenderRegion.MotionBlur", true, null);

PlayForwardsFromStart();

関連項目

AddProp ClusterProperty