v4.0
Partially offloads the fcurve items one or many action sources
for a given range of frames. Note that this applies only to
FCurve items in the action.
The action source needs to have an external storage in order to be
able to execute this command. Before offloading an action source,
if the action is dirty it will be exported. Once offloaded or
partially offloaded, an action source will never export the data
again. When an action source is partially offloaded, the status
parameter of the source is reset to 1 (roughly equivalent to the
siAssetStatusPartiallyLoaded
enum value.
ActionSource.PartialOffload( FrameStart, FrameEnd, [Remember] ); |
Parameter | Type | Description |
---|---|---|
FrameStart | Integer | The frame to start offloading the fcurve keys. If smaller than AnimStart parameter on the action, AnimStart will be used instead. |
FrameEnd | Integer | The frame to end offloading the fcurve keys. If greater than AnimEnd parameter on the action, AnimStart will be used instead. |
Remember | Boolean | If true, the range of frames will be appended to the
OffloadedRanges parameter of the action, so when the scene is
reloaded the partial offload will be processed. If false, the range
of frames is only temporarily offloaded.
Default Value: false |
/* This example demonstrates how to partially offload an animation source. */ NewScene( null, false ); // Create an animation source of a sphere. 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); var oAction = GetValue("Sources.Animation.Model.simplemove"); // Now offload the fcurve in the section of frames 10 to 20 oAction.PartialOffload( 10,20, false ); LogMessage(oAction.status.Value); LogMessage(oAction.OffloadedRanges.Value); // Note that this partial offload as not been added to the OffloadedRanges parameter of the source. // reloading the action will dispose the temporary offloaded ranges oAction.Reload(); oAction.PartialOffload( 12,22, true ); LogMessage(oAction.status.Value); LogMessage(oAction.OffloadedRanges.Value); // Expected result: //INFO : 1 //INFO : //INFO : 1 //INFO : 12,22 |