現在のフレームから、指定のアニメーション パラメータの次のキー フレームに移動します。 InputObjs 引数を省略すると、現在選択され、かつマーキングされているパラメータが使用されます。
このコマンドは、アニメーション ポップアップ メニューから Next Key を選択する操作、またはデフォルト キーボード レイアウトで Ctrl + 右矢印キーを押す操作に相当するスクリプトです。
oDouble = NextKey( [InputObjs], [Time], [Tolerance], [Layer] ); |
次のキーフレームのフレーム番号を、Doubleとして戻します。 キーがない場合、以下が戻ります。
C++ では、1.#INF、VBScript では、1.#INF
JScript では Number.POSITIVE_INFINITY を戻します。
パラメータ | タイプ | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
InputObjs | 文字列 |
アニメート可能なパラメータのリスト (例: cone*/kine.local.pos)。 デフォルト値:現在選択され、マーキングされているパラメータ |
||||||||
Time | Number |
このフレームの後の、次のキーに移動します。 デフォルト値: 現在のフレーム |
||||||||
Tolerance | Double |
フレームの許容範囲 デフォルト値:最も近い 0.5 フレーム(-1)
|
||||||||
Layer | Integer |
アニメーション レイヤ デフォルト値:現在のアニメーションレイヤ(-1) |
' ' This example sets up some animation on the X position of a sphere, moves to the next key frame, ' prints out the key information for this parameter, removes the next key and prints out the ' key information again. ' ' Set up an object to animate set oGlobe = CreatePrim( "Sphere", "NurbsSurface", "MySphere" ) ' Set the maximum frame number to 40 SetValue "PlayControl.Out", 40 ' Set some keys on XPos at various frames SaveKey oGlobe & ".kine.local.posx", 1, -9.0 SaveKey oGlobe & ".kine.local.posx", 10, 3.0 SaveKey oGlobe & ".kine.local.posx", 30,-3.0 SaveKey oGlobe & ".kine.local.posx", 40, 9.0 ' Return to frame 1 SetValue "PlayControl.Current", 1 ' Goto key at frame 10 NextKey oGlobe & "/kine.local.pos" ' Print out key info for the globe's position in X before ' removing the next key WhereAmI oGlobe ' Remove key at frame 30 (next key) if RemoveNextKey( oGlobe & "/kine.local.pos" ) then LogMessage "Successfully removed the key." else LogMessage "This is the last key." end if ' Print out key info for the globe's position in X after ' removing the next key WhereAmI oGlobe ' Goto NextKey (at frame 40 now) NextKey ( oGlobe & "/kine.local.pos" ) ' This function removes the next key (provided that there is a next key to remove) ' and returns a Boolean value indicating whether it could remove the key or not. function RemoveNextKey ( in_parameter ) ' Check if there is another key (if there is no next key, NextKey returns "1.#INF") if ( NextKey( in_parameter ) <> "1.#INF" ) then RemoveKey in_parameter RemoveNextKey = true exit function end if RemoveNextKey = false end function ' This subroutine prints out the total number of keys on the object, and then prints ' the frame number and value for each key in the collection. sub WhereAmI( in_object ) if TypeName( in_object ) <> "Nothing" then ' Get the fcurve object that is attached to the XPos parameter set oAnimationFC = in_object.posx.Source ' From the fcurve object you can get the list of keys set oFCKeys = oAnimationFC.Keys ' Make sure there are some keys on the parameter if oFCKeys.Count > 0 then ' Print the total number of keys now present on this parameter LogMessage "Number of keys on the " & in_object & " object: " & oFCKeys.Count ' Loop through the collection of keys, printing out the key index & its frame number for each k in oFCKeys LogMessage "Key [" & k.Index & "] is set on Frame[" & k.Time & "] with a value of " & k.Value next end if end if end sub ' Output of above script: '...before key was removed 'INFO : "Number of keys on the MySphere object: 4" 'INFO : "Key [0] is set on Frame[1] with a value of -9" 'INFO : "Key [1] is set on Frame[10] with a value of 3" 'INFO : "Key [2] is set on Frame[30] with a value of -3" 'INFO : "Key [3] is set on Frame[40] with a value of 9" ' 'INFO : "Successfully removed the key." ' '...after key was removed 'INFO : "Number of keys on the MySphere object: 3" 'INFO : "Key [0] is set on Frame[1] with a value of -9" 'INFO : "Key [1] is set on Frame[10] with a value of 3" 'INFO : "Key [2] is set on Frame[40] with a value of 9" |