AnimationSourceItem

Object Hierarchy | 関連する C++クラス:AnimationSourceItem

継承

SIObject

AnimationSourceItem

導入

v1.5

詳細

ActionSourceには、ActionSource.SourceItemsプロパティからアクセスできるアニメーションソース項目(AnimationSourceItemCollection)のコレクションが含まれています。

AnimationSourceItem は、アニメーションDataSourceFCurveなど)へのアクセス、およびそのターゲット(アニメーションソースが制御するパラメータ)へのアクセスを提供します。

アクションアニメーションを作成する方法の 1 つは、空の ActionSource を作成し、ActionSource.AddSourceItemメソッドを使用してそれを登録することです。このような場合、AnimationSourceItem.SetAsFCurveおよびAnimationSourceItem.SetAsStaticメソッドを使用して、アニメーションソースとしてFCurveまたは StaticSource を追加できます。

注:バージョン 4.0 から、SIObject.TypeメソッドがsiAnimationSourceItemType列挙子に含まれる値を戻すようになりました。

メソッド

IsClassOfオペレータ IsEqualToオペレータ SetAsFCurve SetAsStatic

プロパティ

Active Application Categories FullNameオペレータ
Help Nameオペレータ NestedObjects Origin
OriginPath Parent Source Target
Typeオペレータ      
       

1. VBScript の例

'

' This example illustrates how to access the fcurves inside a

' model's actionsource

'

NewScene , false

set oRoot = Application.ActiveProject.ActiveScene.Root

' These commands were cut and pasted from scripting history and modified to work in a script.

' The commands create a simple actionsource from some animation on the null's position

set oNull = GetPrim( "Null" )

strPosParams = oNull & ".kine.local.posx," & oNull & ".kine.local.posy," & oNull & ".kine.local.posz"

Translate oNull, -8.153, 7.015, -0.702, siRelative, siView, siObj, siXYZ

SaveKey strPosParams, 1.000

Translate oNull, 8.350, -8.935, 0.894, siRelative, siView, siObj, siXYZ

SaveKey strPosParams, 50.000

Translate oNull, 9.413, 8.935, -0.894, siRelative, siView, siObj, siXYZ

SaveKey strPosParams, 100.000

StoreAction oRoot, strPosParams, 2, "StoredFcvAction", True, 1, 100

' Get the ActionSource from the model

set oActionSource = oRoot.Sources("StoredFcvAction")

LogMessage oActionSource.Name

for each oSourceItem in oActionSource.SourceItems

	LogMessage vbTab & "target: " & oSourceItem.Target

	set oSource = oSourceItem.Source

	if TypeName(oSource) = "FCurve" then

		strKeys=""

		for each oKey in oSource.Keys

			if strKeys<>""then

				strKeys = strKeys & ","

			end if

			strKeys = strKeys & oKey.Time & "," & oKey.Value

		next

		LogMessage vbTab & "source: " & "fcurve keys(" & strKeys & ")"

	else

		LogMessage vbTab & "source ignored"

	end if

next

' Output of above script:

'INFO : StoredFcvAction

'INFO : 	target: null.kine.local.posx

'INFO : 	source: fcurve keys(1,-8.153,50,0.196999999999999,100,9.61)

'INFO : 	target: null.kine.local.posy

'INFO : 	source: fcurve keys(1,7.015,50,-1.92,100,7.015)

'INFO : 	target: null.kine.local.posz

'INFO : 	source: fcurve keys(1,-0.702,50,0.192,100,-0.702)

2. JScript の例

/*

	This example illustrates how to create an empty ActionSource using

	Model.AddActionSource, populate it with 2 static values and 1 fcurve 

	using ActionSource.AddSourceItem, and then replace the fcurve source 

	with a static value for the 2nd and change the static value for the 3rd 

	using AnimationSourceItem.SetAsStatic.

*/

NewScene( null, false );

// Get the scene root

var root = Application.ActiveSceneRoot;

// Create a null and get pointers to the pos parameters

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

var posx = n.posx; var rposx = GetRelativeName(posx);

var posy = n.posy; var rposy = GetRelativeName(posy);

var posz = n.posz; var rposz = GetRelativeName(posz);

// Create an empty actionsource and then populate it with static values

var src = root.AddActionSource( "StaticActionSource" );

var fc = MakeAnFCurve( n, "posy" );

src.AddSourceItem( rposx, 2.0 );	// static value 

src.AddSourceItem( rposy, fc );		// fcurve 

src.AddSourceItem( rposz );		// default static value = 0.0

// Now change the value on the posz parameter using SetAsStatic and change

// the posy parameter source to an fcurve

var animsrcitems = src.SourceItems;

for ( var i=0; i<animsrcitems.Count; i++ ) {

	var srcitem = animsrcitems(i);

	// Get a pointer to the source item (it can be either a StaticSource or an FCurve)

	var datasrc = srcitem.Source;

	if ( datasrc.IsClassOf(siFCurveID) ) {

		// Print the FCurve type

		Application.LogMessage( "AnimationSourceItem[" + i + "] (" + srcitem.Target 

			+ ") has " + datasrc.GetNumKeys() + " keys" );

	}

	if ( datasrc.IsClassOf(siStaticSourceID) ) {

		// Print the current value

		Application.LogMessage( "AnimationSourceItem[" + i + "] (" + srcitem.Target 

			+ ") has this static value: " + datasrc.Value );

	}

	// AnimationSourceItem.Target returns the RelativeName

	if ( srcitem.Target == rposy ) {

		srcitem.SetAsStatic( 1.0 );

		// Check for the new value (we know it's a StaticSource because we just set it)

		var datasrc = srcitem.Source;		// refresh

		Application.LogMessage( "New static value = " + datasrc.Value );

	}

	if ( srcitem.Target == rposz ) {

		srcitem.SetAsStatic( 1.5 );

		// Check for the new value (we know it's a StaticSource because we just set it)

		var datasrc = srcitem.Source;		// refresh

		Application.LogMessage( "New static value = " + datasrc.Value );

	}

}

//INFO : AnimationSourceItem[0] (null.kine.local.posx) has this static value: 2

//INFO : AnimationSourceItem[1] (null.kine.local.posy) has 4 keys

//INFO : New static value = 1

//INFO : AnimationSourceItem[2] (null.kine.local.posz) has this static value: 0

//INFO : New static value = 1.5

// Function to remove the name of the model from the FullName of the specified parameter.

// This is necessary when setting up a source that will later be used to instantiate a

// clip when the parameter lives under a model other than the Scene_Root.

function GetRelativeName( 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, "" );

	}

}

// Convenience function 

function MakeAnFCurve( in_obj, in_param )

{

	var p = in_obj.Kinematics.Local.Parameters( in_param );

	var fc = p.AddFCurve( siStandardFCurve );

	fc.AddKey( 1.0, 1.25 );

	fc.AddKey( 25.0, 2.0 );

	fc.AddKey( 40.0, 2.75 );

	fc.AddKey( 85.0, 0.0 );

	return fc;

}

3. JScript の例

// Simple example showing how to access action source items from a collection

	NewScene( false, false ) ;

	var cube = ActiveSceneRoot.AddPrimitive("Cube") ;

	var actionsource = StoreAction( null, "cube.kine.local.posx, cube.kine.local.posy, cube.kine.local.posz", null, "Test", null, 1, 5, null, null, null, 1);  

	var items = actionsource.SourceItems;

	// Log all items

	for ( var i = 0; i< items.Count; i++ )

	{

		LogMessage( items(i).Name );

	}

	// Log specific items

	LogMessage( "cube.kine.local.posx ActionSourceItem active: " + items("cube.kine.local.posx").Active );

	var filtereditems = items.Filter ("","","cube.kine.local.posx");

	LogMessage( "cube.kine.local.posx ActionSourceItem source value: " + filtereditems(0).Source.Value );

関連項目

ActionSource ActionSource.SourceItems ActionSource.AddSourceItem