AnimationSourceItem.SetAsStatic

説明

AnimationSourceItemのソース(DataSource)をStaticSourceとして設定します。この方法を使用するには 2 つの方法があります。

(1)新しい StaticSource ソースを指定します (ActionSource.AddSourceItem() で新しい AnimationSourceItem を作成した後など)。

(2) 既存のDataSourceStaticSourceソースに置き換えます。

スクリプト 構文

oReturn = AnimationSourceItem.SetAsStatic( [Value] );

戻り値

StaticSource

パラメータ

パラメータ タイプ 詳細
Variant 固定値の値(double である必要があります)

JScript の例

/*
        This example llustrates some of the different ways you can work with the value of an AnimationSourceItem's
        StaticSource, from creating using AddSourceItem and SetAsStaticValue to editing an existing static value
        using the GetSournce/PutSource combo.
*/
app = Application;
NewScene( null, false );
var root = ActiveSceneRoot;
// New static ActionSource
MakeStaticActionSource();
var n = root.FindChild( "", siNullPrimType );
// Get the ActionSource from the model & instantiate it as a clip
var src = root.Sources(0);
AddClip( root, src );
// Find the clip
var mxr = root.Mixer;
var clp = mxr.Clips(0);
app.LogMessage( "BEFORE source modifications:" );
PrintClipInfo( clp );
// Get the AnimationSourceItem
var srcitems = src.SourceItems;
var oldSrcItem = srcitems(0);
// Use AnimationSourceItem.GetSource to get the StaticSource and then change its value
var sv = oldSrcItem.Source;
sv.Value = 2.5;
// Print the values on the action source after modifications to the source
app.LogMessage( "AFTER source modifications:" );
PrintClipInfo( clp );
// Expected results:
//INFO : BEFORE source modifications:
//INFO : Reporting on Mixer.Mixer_Anim_Track.Action_Clip clip:
//INFO :  - Source used = Sources.Scene_Root.Action
//INFO :  --- SrcItem #0 target = MyAnimatedNull.kine.local.posx and its datasource is a StaticSource
//INFO :             (evaluates to 0)
//INFO :  --- SrcItem #1 target = MyAnimatedNull.kine.local.posy and its datasource is a StaticSource
//INFO :             (evaluates to 1)
//INFO :  --- SrcItem #2 target = MyAnimatedNull.kine.local.posz and its datasource is a StaticSource
//INFO :             (evaluates to 2)
//INFO : 
//INFO : AFTER source modifications:
//INFO : Reporting on Mixer.Mixer_Anim_Track.Action_Clip clip:
//INFO :  - Source used = Sources.Scene_Root.Action
//INFO :  --- SrcItem #0 target = MyAnimatedNull.kine.local.posx and its datasource is a StaticSource
//INFO :             (evaluates to 2.5)
//INFO :  --- SrcItem #1 target = MyAnimatedNull.kine.local.posy and its datasource is a StaticSource
//INFO :             (evaluates to 1)
//INFO :  --- SrcItem #2 target = MyAnimatedNull.kine.local.posz and its datasource is a StaticSource
//INFO :             (evaluates to 2)
//INFO : 
// Convenience funtion to print out information about the clip's source
function PrintClipInfo( in_clip )
{
        var app = Application ;
        // Clip
        app.LogMessage( "Reporting on " + in_clip + " clip:" );
        // Clip's source
        PrintSourceInfo( in_clip.Source );
}
// Convenience function to print out information about the source
function PrintSourceInfo( in_src )
{
        var app = Application ;
        // Source
        app.LogMessage( " - Source used = " + in_src );
        // Source's items
        var itemsRef = in_src.SourceItems;
        for ( var i=0; i<itemsRef.Count; i++ ) {
                var animsrcitm = itemsRef(i);
                app.LogMessage( " --- SrcItem #" + i + " target = " + animsrcitm.Target + " and its datasource is a " + ClassName(animsrcitm.Source) );
                // Underlying data source is an FCurve
                if ( animsrcitm.Source.isclassof(siFCurveID) ) {
                        var fc = animsrcitm.Source;
                        app.LogMessage( "            (evaluates to " + fc.Eval(30.0) + " at frame 30)" );
                }
                // Underlying data source is a StaticSource
                if ( animsrcitm.Source.isclassof(siStaticSourceID) ) {
                        var sv = animsrcitm.Source;
                        app.LogMessage( "            (evaluates to " + sv.Value + ")" );
                }
        }
        // Extra blank line
        app.LogMessage( "" );
}
// Create a simple actionsource based on static values
function MakeStaticActionSource()
{
        var app = Application;
        var root = app.ActiveSceneRoot;
        var n = root.AddNull( "MyAnimatedNull" );
        // Get the relative names for the parameter targets
        var rposx = GetRelativeNameForTarget( n.posx );
        var rposy = GetRelativeNameForTarget( n.posy );
        var rposz = GetRelativeNameForTarget( n.posz );
        // Create an empty action source
        var src = root.AddActionSource();
        // Populate it with a static value using ActionSource.AddSourceItem (default=0.0)
        src.AddSourceItem( rposx );
        // Populate it with a specified static value using ActionSource.AddSourceItem
        src.AddSourceItem( rposy, 1.0, true );
        // Populate it with the default static value, then set a real value later with AnimationSourceItem.SetAsStatic
        var animsrcitem = src.AddSourceItem( rposz );
        animsrcitem.SetAsStatic( 2.0 );
}
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, "" );
        }
}