NextKey

詳細

現在のフレームから、指定のアニメーション パラメータの次のキー フレームに移動します。 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)

指定可能な値:

説明:

>0 Frame + Toleranceで、キーを取得します
0 キーは正確にフレームの位置にある必要があります
-1 最も近い 0.5 フレーム
Layer Integer アニメーション レイヤ

デフォルト値:現在のアニメーションレイヤ(-1)

VBScript の例

'

' 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"

関連項目

AddFCurve RemoveAnimation RemoveAllAnimation SaveKey RemoveKey PrevKey FirstKey LastKey FCurve.Keys