PartialOffloadAction

導入

v4.0

カテゴリ

animmixer

詳細

指定のフレーム範囲において、1 つまたは複数の F カーブ アクション ソースを部分的にアンロードします。 このコマンドを実行するには、アクション ソースが外部ストレージを持つ必要があります。

アクションがダーティである場合は、アクション ソースをアンロードする前に書き出します。 オフロードまたは部分的なオフロードが実行された後は、アクション ソースがデータを再び書き出すことはありません。 アクションソースを部分的にオフロードすると、アクションソースのStatusパラメータがsiActionStatusPartiallyLoadedになります(「siAssetStatus」を参照)。

注: これは FCurve アクション ソースのみに適用されます。

スクリプト構文

PartialOffloadAction( [InputObjs], StartFrame, EndFrame, [Remember] );

パラメータ

パラメータ タイプ 詳細
InputObjs 文字列 処理するアクション ソースのリスト

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

StartFrame Integer F カーブのキーのオフロードを開始するフレーム。 アクションの AnimStart パラメータよりも小さい場合は、代わりに AnimStart 値が使用されます。
EndFrame Integer F カーブのキーのオフロードを終了するフレーム。 アクションの AnimEnd パラメータよりも大きい場合は、代わりに AnimEnd 値が使用されます。
Remember ブール True の場合は、フレームの範囲がアクションの OffloadedRanges パラメータに適用されます。これにより、シーンを再ロードすると部分アンロードが実行されます。 False の場合は一時的に F カーブ キーをアンロードします。

デフォルト値: False

JScript の例

/*
        This example shows how to partially offload an animation source.
*/
// ----------------------------------------------------------------------------------
// 
//      SETUP
// Create an animation source of a sphere.
NewScene( null, false );
CreatePrim( "Cone", "MeshSurface", null, null );
Translate( null, -7.85065649868519, 0.715575131336405, -7.15575131336405E-02, 
        siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null );
SaveKey( "cone.kine.local.posx,cone.kine.local.posy,cone.kine.local.posz", 1, null, null );
SetValue( "PlayControl.Key", 10, null );
SetValue( "PlayControl.Current", 10, null);
Translate(null, 4.19500728937374, 7.06630442194682, -0.706630442194682, 
        siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null );
SaveKey( "cone.kine.local.posx,cone.kine.local.posy,cone.kine.local.posz", 10, null, null );
SetValue( "PlayControl.Key", 20, null );
SetValue( "PlayControl.Current", 20, null );
Translate( null, 4.25493596493627, -7.84151081422792, 0.784151081422792, 
        siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null );
SaveKey( "cone.kine.local.posx,cone.kine.local.posy,cone.kine.local.posz", 20, null, null );
SetValue( "PlayControl.Key", 30, null );
SetValue( "PlayControl.Current", 30, null );
Translate( null, 4.1350786138113, 7.57317013997673, -0.757317013997673, 
        siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null );
SaveKey( "cone.kine.local.posx,cone.kine.local.posy,cone.kine.local.posz", 30, null, null );
SetValue( "PlayControl.Key", 40, null );
SetValue( "PlayControl.Current", 40, null );
Translate( null, 2.21736099581185, -7.48372324855972, 0.748372324855972, 
        siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null );
SaveKey( "cone.kine.local.posx,cone.kine.local.posy,cone.kine.local.posz", 40, null, null );
CreateModel( null, null, null );
SelectObj( "Model.Cone", null, null );
StoreAction( "", "Model.Cone.kine.local.sclx,Model.Cone.kine.local.scly,"
        + "Model.Cone.kine.local.sclz,Model.Cone.kine.local.rotx,Model.Cone.kine.local.roty,"
        + "Model.Cone.kine.local.rotz,Model.Cone.kine.local.posx,Model.Cone.kine.local.posy,"
        + "Model.Cone.kine.local.posz,Model.Cone.kine.global.sclx,Model.Cone.kine.global.scly,"
        + "Model.Cone.kine.global.sclz,Model.Cone.kine.global.rotx,Model.Cone.kine.global.roty,"
        + "Model.Cone.kine.global.rotz,Model.Cone.kine.global.posx,Model.Cone.kine.global.posy,"
        + "Model.Cone.kine.global.posz", 2, "simplemove", true, 1, 40, false, false );
// Add a clip of the source in the mixer
SelectObj( "Model", null, null );
AddTrack( "Model", "Model", 0, null, null );
AddClip( "Model", "Sources.Animation.Model.simplemove", null, "Model.Mixer.Mixer_Anim_Track", 
        1, null, null, null, null );
SetValue( "PlayControl.Key", 20, null );
SetValue( "PlayControl.Current", 20, null );
// We need to set the external storage to external if we want to be able to offload the source
SetValue( "Sources.Animation.Model.simplemove.storage", 3, null );
var oAction = GetValue( "Sources.Animation.Model.simplemove" );
// ----------------------------------------------------------------------------------
// 
//      OFFLOAD
// Note that this partial offload has not been added to the OffloadedRanges parameter 
// of the source.
PartialOffloadAction( "Sources.Animation.Model.simplemove", 10, 20, false );
Application.LogMessage ( FindActionStatus(oAction.status.Value) );
Application.LogMessage ( oAction.OffloadedRanges.Value );
// ----------------------------------------------------------------------------------
// 
//      RELOAD
// Reloading the action will dispose the temporary offloaded ranges
oAction.Reload();
PartialOffloadAction( "Sources.Animation.Model.simplemove", 12, 22, true );
Application.LogMessage ( FindActionStatus(oAction.status.Value) );
Application.LogMessage ( oAction.OffloadedRanges.Value );
// ----------------------------------------------------------------------------------
// 
//      OUTPUT
//INFO : The action source contains section that are offloaded.
//INFO : 
//INFO : The action source contains section that are offloaded.
//INFO : 12,22
// ----------------------------------------------------------------------------------
// 
//      HELPER
function FindActionStatus( in_Val ) 
{
        var results = "";
        switch ( in_Val ) {
                case siActionStatusOffloaded :
                        results = "The action source is offloaded on disk.";
                        break;
                case siActionStatusPartiallyLoaded :
                        results = "The action source contains section that are offloaded.";
                        break;
                case siActionStatusLoaded :
                        results = "The action source is loaded.";
                        break;
                default :
                        results = "Unrecognized action status.";
        }
        return results;
}

関連項目

OffloadAction ActionSource.Offload ActionSource.PartialOffload