ジャンプ先: 概要. 戻り値. 関連. フラグ. Python 例.

概要

keyframe( [objects] , [absolute=boolean], [adjustBreakdown=boolean], [animation=string], [attribute=string], [breakdown=boolean], [clipTime=[time, time, float]], [controlPoints=boolean], [eval=boolean], [float=floatrange], [floatChange=float], [hierarchy=string], [includeUpperBound=boolean], [index=uint], [indexValue=boolean], [keyframeCount=boolean], [lastSelected=boolean], [name=boolean], [option=string], [relative=boolean], [selected=boolean], [shape=boolean], [tickDrawSpecial=boolean], [time=timerange], [timeChange=time], [valueChange=float])

注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。

keyframe は、取り消し可能、照会可能、および編集可能です。

このコマンドは、キーセット上に作用します。キーセットは、1 つまたは複数のアニメーション カーブ上の指定したタイム レンジ内のキー グループとして定義されます。

キーセットを構成するアニメーション カーブは、「-animation」フラグの値に依存します。

-animation フラグを使用して、「translateX」など attributeName という形式の引数を取る、多目的な -attribute フラグによって固有に識別されるカーブをオーバーライドすることができます。

アニメーション カーブ上の各キーは、カーブの時間値またはインデックスによって識別されます。時間とインデックスは、単独にあるいはリストの一部または範囲として指定することができます(例を参照)。

このコマンドは、指定されたオブジェクトまたはパラメータ カーブにおけるキーの時間または値を編集します。

別途、「-query」フラグで指定されていない限り、このコマンドは既定でキーフレームを編集します。

戻り値

int(下記に記述があるもの以外)キーが修正されたカーブの数。照会モードでは、このコマンドは、下記の照会可能なフラグで記述されたとおり、さまざまなオブジェクトを返すことがあります。

照会モードでは、戻り値のタイプは照会されたフラグに基づきます。

関連

copyKey, cutKey, findKeyframe, keyTangent, keyframeOutliner, keyframeStats, pasteKey, scaleKey, setInfinity, snapKey

フラグ

absolute, adjustBreakdown, animation, attribute, breakdown, clipTime, controlPoints, eval, float, floatChange, hierarchy, includeUpperBound, index, indexValue, keyframeCount, lastSelected, name, option, relative, selected, shape, tickDrawSpecial, time, timeChange, valueChange
ロング ネーム(ショート ネーム) 引数タイプ プロパティ
absolute(a) boolean create
移動量は絶対値です。
adjustBreakdown(abd) boolean create
false のときは、キーを移動してもブレークダウン タイミングは保持されません。true (既定)のときは、ブレークダウン タイミング リレーションが保持されるように調整されます。
animation(an) string create
このコマンドが、自身が影響を与えるアニメーションを取得する場所です。有効な値は「objects」、「keys」、「keysOrObjects」で、既定は「keysOrObjects」です(詳細については、説明を参照してください)。
attribute(at) string createmultiuse
選択するアトリビュートのリストです。

照会モードでは、このフラグに値が必要になります。

breakdown(bd) boolean createqueryedit
キーのブレークダウン状態を設定します。整数を返します。既定は false です。キーのブレークダウン状態は、-tc や -fc フラグを使ったキーの移動コマンドでは設定できません。
clipTime(ct) [time, time, float] create
オフセット、ピボット、およびスケールを使用してキーを挿入する最終的な時間を変更します。
controlPoints(cp) boolean create
このフラグは、アトリビュートのリストにシェイプのコントロール ポイントを含めるかどうかを明示的に指定します(「-s」フラグを参照)。既定: false(「pasteKey」コマンドでは無効)。

照会モードでは、このフラグに値が必要になります。

eval(ev) boolean createquery
入力接続と無関係に、-t/time または -f/float フラグで指定される時間で評価されるときのアニメーション カーブの値を返します。他の照会フラグと一緒に使ったり、タイム レンジ(-t "5:10")と共に使うことはできません。コマンド ラインに -t または -f フラグが使われていないとき、eval は現在のタイムに照会されます。照会すると float[] を返します。
float(f) floatrange createmultiuse
時間ベースの animCurve 上の時間ベースでないキー(またはキー レンジ)を固有に表す値です。有効な floatRange は、単一の値(-f 10)、または上下限をコロンで区切った文字列(-f "10:20")です。

照会モードでは、このフラグに値が必要になります。

floatChange(fc) float createqueryedit
x (float)軸に沿ったキーの(非時間入力アニメーション カーブ上での)移動量(-relative で)または移動場所(-absolute で)を指定します。照会すると float[] を返します。
hierarchy(hi) string create
階層展開オプションです。有効な値は、「above」、「below」、「both」、「none」です。(「pasteKey」コマンドでは無効)。

照会モードでは、このフラグに値が必要になります。

includeUpperBound(iub) boolean create
-t/time または -f/float フラグがキーの範囲を表す場合に、範囲の上限のキーをキーセットに含めるかどうかを定義します。既定値: true。このフラグは、-t/time フラグの引数が上下限が指定したタイム レンジである場合に限り有効です(「pasteKey」コマンドでこのフラグを使用するときに「replace」、「fitReplace」、「scaleReplace」などのオプションを指定すると、このフラグは、置き換えられるターゲット カーブの時間範囲のみを参照します。このフラグは、クリップボードからペーストされたカーブには影響しません)。
index(index) uint createmultiuse
アニメーション カーブ上のキーのインデックス

照会モードでは、このフラグに値が必要になります。

indexValue(iv) boolean createquery
キーのインデックスに対して整数を返す照会専用のフラグです。
keyframeCount(kc) boolean createquery
ターゲット用に見つかったキーの数に対して整数を返します。
lastSelected(lsl) boolean createquery
このフラグが照会で使われた場合、最後に選択したキーに対して要求された値を返します。
name(n) boolean createquery
指定したノード、アトリビュート、キーのアニメーション カーブの名前を返します。
option(o) string createedit
有効な値は、「move」、「insert」、「over」、「segmentOver」です。キーに「move」を設定しても、そのキーは前後でほかのキーを越えては移動しません。キーを「insert」すると、(-timeChange の値に応じて)その前後にあるキーがすべて、同等の量、移動します。キーを「over」すると、このキーは(他のキーがその場所に既に存在しない限り)いつでも移動することができます。複数のキーのセットを「segmentOver」すると(このオプションは、複数のキーを移動する場合のみ、明らかなエフェクトを生み出します)、タイム レンジを指定しない限り、(時間的に)最初のキーと、最後のキーにより、セグメントが定義されます。その後、このセグメントは他のキーの上に移動できるようになり、このセグメントのための余地を作るために、キーは移動します。
relative(r) boolean create
移動量は、キーの現行位置を基準にした相対値です。
selected(sl) boolean createquery
このフラグが照会で使われた場合、どんなアクティブなキーに対しても要求された値を返します。
shape(s) boolean create
トランスフォームの下にあるシェイプのアトリビュート(「controlPoints」以外)も考慮します。既定: true(「pasteKey」コマンドでは無効)。

照会モードでは、このフラグに値が必要になります。

tickDrawSpecial(tds) boolean createedit
タイム スライダの表示がキー マークに変わると、このキーに特殊な描画状態が設定されます。
time(t) timerange createmultiuse
時間ベースのアニメーション カーブ上のキー(またはキー レンジ)を固有に表す時間です。単一のフレームまたはフレーム範囲の設定方法については、以下のコード例を参照してください。

照会モードでは、このフラグに値が必要になります。

timeChange(tc) time createqueryedit
x (時間)軸に沿ったキーの(時間入力アニメーション カーブ上での)移動量(-relative で)または移動場所(-absolute で)を指定します。照会すると float[] を返します。
valueChange(vc) float createqueryedit
y (値)軸に沿ったキーの移動量(-relative で)または移動場所(-absolute で)を指定します。照会すると float[] を返します。

フラグはコマンドの作成モードで表示できます フラグはコマンドの編集モードで表示できます
フラグはコマンドの照会モードで表示できます フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。

Python 例

import maya.cmds as cmds

# Keys on animation curves are identified by either
# their time values or their indices.  Times and indices can
# be given as a range or list of ranges.

# time=('10pal','10pal') means the key at frame 10 (PAL format).
# time=[(1.0,1.0),('15ntsc','15ntsc'),(20,20)] means the keys at time 1.0 second, frame 15 (in NTSC format), and time 20 (in the currently defined global time unit).
# time=(10,20) means all keys in the range from 10 to 20, inclusive, in the current time unit.
# Omitting one end of a range means "go to infinity", as in the following examples:
# time=(10,) means all keys from time 10 (in the current time unit) onwards.
# time=(0,10) means all keys up to (and including) time 10 (in the current time unit).
# time=() is a short form to specify all keys.
# index=(0,0) means the first key of each animation curve. (Indices are 0-based.)
# index=[(2,2),(5,5),(7,7)] means the 3rd, 6th, and 8th keys.
# index=(1,5) means the 2nd, 3rd, 4th, 5th, and 6th keys of each animation curve.

import maya.cmds as cmds

# Keys on animation curves are identified by either time values or indices.
# Times and indices can be given as a ranges or list of ranges.

# When specifying times/indices by range,
#
#  time=()         means all keys.
#  time=(10,)      means all keys at time 10 (in the current time unit).
#  time=(10,20)    means all keys in the range from 10 to 20, inclusive, in the current time unit.
#  time=('10:',)   means all keys at and after time 10
#  time=(':20',)   means all keys before or at time 20
#  time=('10pal',) means the key at frame 10 (PAL format).
#
#  index=(0,0)     means the first key of each animation curve (i.e., indices are 0-based.)
#  index=(1,5)     means the 2nd, 3rd, 4th, 5th, and 6th keys of each animation curve.
#  index=('2:',)   means all keys at and after the 3rd key
#  index=(':5',)   means all keys before or at the 6th key
#  index=('1:5',)  means the 2nd - 6th keys (inclusive).
#
# When specifying times/indices by list
#
#  time=[(1.0,1.0),('15ntsc','15ntsc'),(20,20)] means the keys at time 1.0 second, frame 15 (in NTSC format), and time 20 (in the currently defined global time unit).
#  index=[(2,2),(5,5),(7,7)] means the 3rd, 6th, and 8th keys.
#

# Two ways to find out how many keys there are on the
# paramCurve connected to surface1.translateX;
#
cmds.keyframe( 'surface1', attribute='translateX', query=True, keyframeCount=True )
cmds.keyframe( 'surface1.translateX', query=True, keyframeCount=True )

# Two ways to query all keyframes of object "surface1" within the time range 0 to 20.
#
cmds.keyframe( 'surface1', time=(0,20), query=True, valueChange=True, timeChange=True);
cmds.keyframe( 'surface1', time=('0:20',), query=True, valueChange=True, timeChange=True);

# Three ways to query the time of the second key in the translate X
# parameter curve. Note that since indices are 0-based, the second key is at index 1.
#
cmds.keyframe('surface1.translateX',index=('1:1',),query=True);
cmds.keyframe('surface1.translateX',index=(1,1),query=True);
cmds.keyframe('surface1.translateX',index=(1,),query=True);

# Shift all the active object's keys in the range 10-20
# by one (current) time unit (frame, second, etc.)
#
cmds.keyframe(edit=True,relative=True,timeChange=1,time=(10,20))

# Two ways to move all keys at time 10 of the active object
# to time 12.  Note that "-absolute" is the default.
#
cmds.keyframe(time=(10,),timeChange=12)
cmds.keyframe(time=(10,10),absolute=True,timeChange=12)

# Set the 2nd keyframe of cube1's Translate X parameter
# curve to be 10.25 at time 1.5 seconds.
#
cmds.keyframe('surface1.translateX',edit=True,index=(1,1),timeChange='1.5sec',valueChange=10.25)

# Evaluate the animCurve feeding into nurbsCone1's translateX attribute at time 3
#
cmds.keyframe('nurbsCone1',at='tx',t=(3,3),q=True,eval=True)

# Query the times of the active keys on attribute translateX of nurbsCone1
#
cmds.keyframe( 'nurbsCone1', at='tx', sl=True, q=True, tc=True )

# How many keys are selected on nurbsCone1?
#
cmds.keyframe( 'nurbsCone1', sl=True, q=True, kc=True )

# Here's a script to print out all a cone's animCurves that have
# keys selected.  Each animCurve is followed by a list of times
# for the selected keys. The result of this script is:
#   nurbsCone1_translateX: [5.0]
#   nurbsCone1_translateY: [12.0]
#   nurbsCone1_translateZ: [4.0, 14.0]
#
myCone = cmds.cone()
cmds.setKeyframe( myCone[0], t=[0,5,10], at='tx', v=5 )
cmds.setKeyframe( myCone[0], t=[2,7,12], at='ty', v=10 )
cmds.setKeyframe( myCone[0], t=[4,9,14], at='tz', v=15 )
cmds.selectKey( t=[(5,5),(12,12),(4,4)] )
cmds.selectKey( animation='objects', add=True, t=(14,14) )

nodes = cmds.keyframe(myCone,query=True,name=True)
for node in nodes:
   keyTimes = cmds.keyframe(node,sl=True,query=True,tc=True)
   print "  {}: {}".format(node, keyTimes)

# For the above sample script, the last selected key is
# nurbsCone1_translateZ: 14.  The following may be used to query
# the values for that key
#
cmds.keyframe( query=True, lastSelected=True, name=True )
cmds.keyframe( query=True, lastSelected=True, timeChange=True )
cmds.keyframe( query=True, lastSelected=True, valueChange=True )