SaveKey

Description

Saves key frames on parameters at a given frame. When you invoke this command on a parameter not already driven by an FCurve, a new FCurve is automatically created.

The tolerance argument can be used to merge all keys within a certain range. The range is defined as Frame - Tolerance and Frame + Tolerance. The merged key will inherit the constraints of the nearest key within this range.

Scripting Syntax

SaveKey( [InputObjs], [Time], [Value], [Tolerance], [Layer], [ModifiedOnly], [AutokeyScope] )

Parameters

Parameter

Type

Description

InputObjs

String

List of animatable parameters (for example "cone*/kine.local.pos").

Default Value: If no argument is specified, the current marking

is used.

 

 

Note: This command will fail if no argument is specified and no parameters are marked.

 

Time

Double

Frame at which to set the key.

Default Value: If no argument is specified, the current frame is used.

Value

Number

Key frame values.

Default Value: Parameter values at current frame.

Tolerance

Double

Frame tolerance

Default Value: Nearest 0.5 frame (-1)

Possible Values:

>0: Merge all keys between Frame - Tolerance and Frame + Tolerance

0: Key must be exactly at frame

-1: Nearest 0.5 frame

Layer

Integer

Animation layer to set keys on

Default Value: Current animation layer (-1)

ModifiedOnly

Boolean

If true keys will only be set for parameters that have been modified at the current frame

Default Value: False

AutokeyScope

Integer

Specifies whether keys will be set on all parameters or only those with existing fcurves or keys.

Default Value: All specified parameters (0)

Possible Values:

0: Key all specified parameters

1: Only key parameters that have an existing key at the given time

2: Only key parameters that have an existing fcurve

Examples

1. VBScript Example

'
'  This example demonstrates how you can use the SaveKey command with
'  or without marking parameters. This example saves position keys on 
'  the nulls using various techniques demonstrating the flexibility of
'  this command.
'

NewScene , false

' Specify the parameter to set, the frame at which to set it and the value to use
GetPrim "Null", "null"
SaveKey "null.kine.global.posx", 50, 3
SaveKey "null.kine.global.posy", 50, 3
SaveKey "null.kine.global.posz", 50, 3

' Instead of a string identifying the null, we can also use the Null 
' object's shortcut to the Parameter 
set n1 = GetPrim( "Null" )
SaveKey n1.posx, 50, 3
SaveKey n1.posy, 50, 3
SaveKey n1.posz, 50, 3

' You can also mark the parameters instead of specifying them
GetPrim "Null" 
SetMarking "kine.local.pos"
SaveKey , 50, 3

' This saves the same keys, but does not mark posx, posy, and posz
ClearMarking
GetPrim "Null"
SaveKey "/kine.local.pos", 50, 3

' You can also use the currently marked parameters at the current frame
GetPrim "Null" 
SetMarking "kine.local.pos"
Translate , 3, 3, 3
SetValue "PlayControl.Key", 50
SetValue "PlayControl.Current", 50
SaveKey

2. Python Example

#
# This example demonstrates how you can use the SaveKey command to define an FCurve 
# on a parameter and then change its interpolation type to Linear (the default is 
# cubic Bezier -- see the FCurve object's documentation for more details). 
#

from win32com.client import constants as c

# Create scene
Application.NewScene( "", 0 )
Application.GetPrim( "Null", "null" )
Application.CreatePrim( "Arc", "NurbsCurve" )
Application.SelectObj( "null", c.siSelectDefault, 1 )
Application.ApplyCns( "Path", "null", "arc" )

# Set some keys
Application.SaveKey( "null.kine.pathcns.perc", 1, 0 )
Application.SaveKey( "null.kine.pathcns.perc", 30, 25 )
Application.SaveKey( "null.kine.pathcns.perc", 75, 85 )
Application.SaveKey( "null.kine.pathcns.perc", 100, 100 )

# Get the fcurve from a string path using the GetSource command
col = Application.GetSource( "null.kine.pathcns.perc" )
fc = col(0)

# Alternatively, you can use the Dictionary.GetObject method to 
# get the parameter object and then use its Source method
pathperc = Application.Dictionary.GetObject( "null.kine.pathcns.perc" )
fc = pathperc.Source

# Get the fcurve interpolation type 
Application.LogMessage( fc.Interpolation )

# Change the fcurve from cubic Bezier (3) to linear (2) and then 
# print the interpolation type again
Application.SetCurveType( "null.kine.pathcns.perc", 2 )
Application.LogMessage( fc.Interpolation )

# Expected results: (siFCurveInterpolation: 1=constant; 2=linear; 3=bezier cubic)
#INFO : 3
#INFO : 2

See Also

SaveKeyOnKeyable

SaveKeyOnMarkedKeyable

FCurve.SetKey

FCurve.SetKeys

AddFCurve

RemoveAnimation

RemoveAllAnimation

RemoveKey

PrevKey

NextKey

FirstKey

LastKey

FCurve

Parameter.Source

 

 



Autodesk Softimage v7.5