This command is used to create, edit and query character clips.
Long name (short name) | Argument Types | Properties | |
---|---|---|---|
absolute (abs) | bool | ||
This flag is now deprecated. Use aa/allAbsolute, ar/allRelative, ra/rotationsAbsolute, or da/defaultAbsolute instead. This flag controls whether the clip follows its keyframe values or whether they are offset by a value to maintain a smooth path. Default is true. |
|||
absoluteRotations (abr) | bool | ||
This flag is now deprecated. Use aa/allAbsolute, ar/allRelative, ra/rotationsAbsolute, or da/defaultAbsolute instead. If true, this overrides the -absolute flag so that rotation channels are always calculated with absolute offsets. This allows you to have absolute offsets on rotations and relative offsets on all other channels. |
|||
active (a) | unicode | ||
Query or edit the active clip. This flag is not valid in create mode. Making a clip active causes its animCurves to be hooked directly to the character attributes in addition to being attached to the clip library node. This makes it easier to access the animCurves if you want to edit, delete or add additional animCruves to the clip. |
|||
addTrack (at) | bool | ||
|
|||
allAbsolute (aa) | bool | ||
Set all channels to be calculated with absolute offsets. This flag cannot be used in conjunction with the ar/allRelative, ra/rotationsAbsolute or da/defaultAbsolute flags. |
|||
allClips (ac) | bool | ||
|
|||
allRelative (ar) | bool | ||
Set all channels to be calculated with relative offsets. This flag cannot be used in conjunction with the aa/allAbsolute, ra/rotationsAbsolute or da/defaultAbsolute flags. |
|||
allSourceClips (asc) | bool | ||
|
|||
animCurveRange (acr) | bool | ||
This flag can be used at the time you create the clip instead of the startTime and endTime flags. It specifies that you want the range of the clip to span the range of keys in the clips associated animCurves. |
|||
character (ch) | bool | ||
|
|||
constraint (cn) | bool | ||
This creates a clip out of any constraints on the character. The constraint will be moved off of the character and into the clip, so that it is only active for the duration of the clip, and its value can be scaled/offset/cycled according to the clip attributes. |
|||
copy (c) | bool | ||
This flag is used to copy a clip or clips to the clipboard. It should be used in conjunction with the name flag to copy the named clips on the specified character and its subcharacters. In query mode, this flag allows you to query what, if anything, has been copied into the clip clipboard. |
|||
defaultAbsolute (da) | bool | ||
Sets all top-level channels except rotations in the clip to relative, and the remaining channels to absolute. This is the default during clip creation if no offset flag is specified. This flag cannot be used in conjunction with the aa/allAbsolute, ar/allRelative, or ra/rotationsAbsolute flags. |
|||
duplicate (d) | bool | ||
|
|||
endTime (end) | time | ||
|
|||
expression (ex) | bool | ||
This creates a clip out of any expressions on the character. The expression will be moved off of the character and into the clip, so that it is only active for the duration of the clip, and its value can be scaled/offset/cycled according to the clip attributes. |
|||
ignoreSubcharacters (ignoreSubcharacters) | bool | ||
During clip creation, duplication and isolation, subcharacters are included by default. If you want to create a clip on the top level character only, or you want to duplicate the clip on the top level character without including subCharacters, use the ignoreSubcharacters flag. |
|||
isolate (i) | bool | ||
This flag should be used in conjunction with the name flag to specify that a clip or clips should be copied to a new clip library. The most common use of this flag is for export, when you want to only export certain clips from the character, without exporting all of the clips. |
|||
leaveOriginal (lo) | bool | ||
|
|||
mapMethod (mm) | unicode | ||
This is is valid with the paste and pasteInstance flags only. It specifies how the mapping should be done. Valid options are: “byNodeName”, “byAttrName”, “byCharacterMap”, “byAttrOrder”, “byMapOrAttrName” and “byMapOrNodeName”. “byAttrName” is the default. The flags mean the following: “byAttrOrder” maps using the order that the character stores the attributes internally, “byAttrName” uses the attribute name to find a correspondence, “byNodeName” uses the node name *and* the attribute name to find a correspondence, “byCharacterMap” uses the existing characterMap node to do the mapping. “byMapOrAttrName” uses a character map if one exists, otherwise uses the attribute name. “byMapOrNodeName” uses a character map if one exists, otherwise uses the attribute name. |
|||
name (n) | unicode | ||
In create mode, specify the clip name. In query mode, return a list of all the clips. In duplicate mode, specify the clip to be duplicated. In copy mode, specify the clip to be copied. This flag is multi-use, but multiple use is only supported with the copy flag. For use during create and with all other flags, only the first instance of the name flag will be utilized. In query mode, this flag can accept a value. |
|||
newName (nn) | unicode | ||
|
|||
paste (p) | bool | ||
|
|||
pasteInstance (pi) | bool | ||
This flag is used to paste an instance of a clip or clips from the clipboard to a character. Unlike the p/paste flag, which duplicates the animCurves from the original source clip, the pi/pasteInstance flag shares the animCurves from the source clip. |
|||
remove (rm) | bool | ||
|
|||
removeTrack (rt) | bool | ||
|
|||
rotationOffset (rof) | float, float, float | ||
Return the channel offsets used to modify the clip’s rotation.Flag can appear in Create mode of commandFlag can have multiple arguments, passed either as a tuple or a list. |
|||
rotationsAbsolute (ra) | bool | ||
Set all channels except rotations to be calculated with relative offsets. Rotation channels will be calculated with absolute offsets. This flag cannot be used in conjunction with the aa/allAbsolute, ar/allRelative or da/defaultAbsolute flags. |
|||
scheduleClip (sc) | bool | ||
This flag is used when creating a clip to specify whether or not the clip should immediately be scheduled at the current time. If the clip is not scheduled, the clip will be placed in the library for future use, but will not be placed on the timeline. This flag is for use only when creating a new clip or duplicating an existing. The default is true. |
|||
sourceClipName (scn) | bool | ||
|
|||
split (sp) | time | ||
|
|||
startTime (s) | time | ||
|
|||
translationOffset (tof) | float, float, float | ||
|
|||
useChannel (uc) | unicode | ||
Specify which channels should be acted on. This flag is valid only in conjunction with clip creation, and the isolate flag. The specified channels must be members of the character. |
Derived from mel command maya.cmds.clip
Example:
import pymel.core as pm
# First, create a character to hold the clips. The character will be
# a 3-bone skeleton named "arm".
#
pm.select( d=True )
pm.joint( p=(0, 0, 0) )
# Result: nt.Joint(u'joint1') #
pm.joint( p=(0, 4, 0) )
# Result: nt.Joint(u'joint2') #
pm.joint( 'joint1', e=True, zso=True, oj='xyz' )
# Result: nt.Joint(u'joint2') #
pm.joint( p=(0, 8, -1) )
# Result: nt.Joint(u'joint3') #
pm.joint( 'joint2', e=True, zso=True, oj='xyz' )
# Result: nt.Joint(u'joint3') #
pm.joint( p=(0, 9, -2) )
# Result: nt.Joint(u'joint4') #
pm.joint( 'joint3', e=True, zso=True, oj='xyz' )
# Result: nt.Joint(u'joint4') #
pm.select( 'joint1', 'joint2', 'joint3', r=True )
pm.character( name='arm' )
# Result: nt.Character(u'arm') #
# Create some animation for the character. For this example the animation will
# be quite trivial.
#
pm.select( 'joint3', r=True )
pm.currentTime( 0 )
# Result: 0.0 #
pm.setKeyframe( 'joint3.rx' )
# Result: 1 #
pm.currentTime( 10 )
# Result: 10.0 #
pm.setKeyframe( 'joint3.rx', v=90 )
# Result: 1 #
pm.currentTime( 20 )
# Result: 20.0 #
pm.setKeyframe( 'joint3.rx', v=0 )
# Result: 1 #
# Create a clip for the current animation named "handWave"
#
pm.clip( 'arm', startTime=0, endTime=20, name='handWave' )
# Result: [u'handWave'] #
# Create a 2nd animation for the character.
#
pm.select( 'joint2', r=True )
pm.currentTime( 0 )
# Result: 0.0 #
pm.setKeyframe( 'joint2.rx' )
# Result: 1 #
pm.setKeyframe( 'joint2.ry', v=20 )
# Result: 1 #
pm.currentTime( 10 )
# Result: 10.0 #
pm.setKeyframe( 'joint2.rx', v=45 )
# Result: 1 #
pm.setKeyframe( 'joint2.ry', v=-20 )
# Result: 1 #
pm.currentTime( 20 )
# Result: 20.0 #
pm.setKeyframe( 'joint2.rx', v=0 )
# Result: 1 #
pm.setKeyframe( 'joint2.ry', v=20 )
# Result: 1 #
# Create a clip for the current animation named "elbowWave"
#
pm.clip( 'arm', startTime=0, endTime=20, name='elbowWave' )
# Result: [u'elbowWave'] #
# Query the existing source clips
#
pm.clip( 'arm', query=True, n=True )
# Result: [u'handWaveSource', u'elbowWaveSource'] #
# Query the active clip. Note that the default clip is always active unless
# another clip has been specified as active. This means that new keyframes
# always go into the default clip unless you make another clip active.
#
pm.clip( 'arm', query=True, active=True )
# Result: u'default' #
# Duplicate the clip named "elbowWaveSource" on the character named "arm" and
# place the duplicate in the schedule at a start time of 50
#
pm.clip( 'arm', duplicate=True, name='elbowWaveSource', s=50 )
# Result: u'elbowWave1' #
# Duplicate the clip named "wiggle" on the character named "arm" and
# do not place the duplicate in the schedule
#
pm.clip( 'arm', duplicate=True, sc=False, name='wiggle' )
# Remove the clip from the character altogether. All instances of the clip will be
# removed from the schedule and deleted from the library.
#
pm.clip( 'arm', rm=True, name='elbowWaveSource')
# Make the handWave clip active. This means that any new keyframes get
# placed in the handWave clip, and modifications to existing handWave
# keyframes can be made.
#
pm.clip( 'arm', edit=True, active='handWave' )
# Split the clip named "handWave" into two clips at time 10
#
pm.clip( 'arm', split=10, name='handWave' )
# Query the startTime of a clip. This is the start frame of the animation
# curve range of the clip, and may differ from the scheduled time of the clip,
# which is accessed using the clipSchedule command.
#
pm.clip( 'arm', name='handWave', query=True, s=True )