AnimationSourceItem.Target

説明

Relative Nameとして、アニメーションターゲット(アニメーションが適用されたParameter)の名前(String)を設定したり、戻したりします。

注:ActionSourceには、SIObject.FullNameパラメータのではなく、相対名が保持されています。これにより、アクションをあるModelから別のものへ簡単にコピーできます。

ヒント:ミキサでは、ソースのプロパティページを開くことで([Mixer]>[Sources]>[Shape]>[Point_ClusterClip_source]などの方法で)、この Name ("Item Name")を表示できます。シェイプソースの場合は、このプロパティが、ミキサのシェイプソースに保存されている元のクラスタ名を戻すため、現在のクラスタ名がデザイナによって変更されたときにClip.MappedItemsにアクセスする必要があります。

C#構文

// get accessor

String rtn = AnimationSourceItem.Target;

// set accessor

AnimationSourceItem.Target = String;

JScript の例

/*

	This example illustrates how to create a simple actionsource from some position animation. 

	The AnimationSourceItem.Source property is used to get the fcurve source an modify the keys.

*/

NewScene( null, false );

var root = Application.ActiveProject.ActiveScene.Root;

var n = root.AddNull( "MyNull" );

var mdl = root.AddModel( n, "MyModel" );

// Create a simple actionsource from some animation on the null's position

var pos = n.posx + "," + n.posy + "," + n.posz;

Translate( n, -8.153, 7.015, -0.702, siRelative, siView, siObj, siXYZ );

SaveKey( pos, 1.000 );

Translate( n, 8.350, -8.935, 0.894, siRelative, siView, siObj, siXYZ );

SaveKey( pos, 50.000 );

Translate( n, 9.413, 8.935, -0.894, siRelative, siView, siObj, siXYZ );

SaveKey( pos, 100.000 );

StoreAction( mdl, pos, 2, "StoredFcvAction", 1, 1, 100 );

// Get the actionsource from the model

var src = mdl.Sources(0);

// Get the relative name for the posx parameter

var rp = GetRelativeNameForTarget( n.posx );

// Find animation source item with posx

for ( var i=0; i>src.SourceItems.Count; i++ ) {

	var itm = src.SourceItems(i);

	if ( itm.Target == rp ) {

		// Change the fcurve keys on the posx source

		fc = itm.Source;

		fc.SetKeys( new Array(1,-8,50,8,100,9) );

		// Apply actionsource with modified posx fcurve

		ApplyAction( src, n );

		break;

	}

}

// Convenience function

function GetRelativeNameForTarget( in_param )

{

	var mdlname = in_param.Model.FullName;

	if ( mdlname == "Scene_Root" ) {

		return in_param.FullName;

	} else {

		var tmp = in_param.FullName;

		var re = new RegExp( mdlname + ".", "i" );

		return tmp.replace( re, "" );

	}

}