リタイム : コントローラ
リタイム コントローラは、手続き型の EaseCurve コントローラに代わるコントローラとして 3ds Max 2013 で導入されました。
任意のコントローラの EaseCurve トラックで使用するか、シーン全体に作用するグローバル リタイマ コントローラとして使用できます。このコントローラには、インタフェース: RetimerMan からアクセスできます。
インタフェース: retimer
プロパティ:
<RetimerController>.numMarkers : integer : Read
リタイム コントローラのマーカーの数を格納します。
読み込み専用。
<RetimerController>.numSpans : integer : Read
リタイム コントローラのスパンの数を格納します。
スパンはマーカーの間の範囲です。つまり、2 つのマーカーで 1 つのスパンが定義されます。
読み込み専用。
<RetimerController>.active : bool : Read|Write
リタイム コントローラのアクティブ状態を取得/設定します。
メソッド:
<void><RetimerController>.SetNewMarker <time>time
指定された時間に新しいマーカーを作成します。
<void><RetimerController>.ExpandMarker <time>time <time>newTime
最初の引数で指定された時間から 2 番目の引数で指定された新しい時間までマーカーを拡張します。
最初の引数で指定された時間にマーカーがなければなりません。
拡張はマーカーを元の時間から新しい時間まで移動する過程です。これにより、リタイミングカーブが生成されます。
<void><RetimerController>.MoveMarker <time>time <time>newTime
最初の引数で指定された時間から 2 番目の引数で指定された新しい時間にマーカーを移動します。
マーカーの移動は、アニメーションの拡張(リタイミング)を行う前のマーカーの元の位置を変更する処理です。
つまり、リタイミングのためにマーカーを移動するのではなく、マーカーの最初の位置を調整します。
<void><RetimerController>.RemoveMarker <time>time
指定された時間からマーカーを削除します。
<time by value array><RetimerController>.GetMarkerTimes()
すべてのマーカー時間の配列を返します。
この一覧には、マーカーを拡張してアニメーションのリタイミングを生成する前のマーカーの元の位置が格納されます。
<time by value array><RetimerController>.GetExpandedMarkerTimes()
拡張されたすべてのマーカー時間の配列を返します。
この一覧には、アニメーションのリタイミングを行うマーカーの新しい位置が格納されます。
<enum><RetimerController>.GetSpanType <index>index
GetSpanType enums: {#linear|#easeIn|#easeOut}
インデックスで指定されたスパンのタイプを返します。
<void><RetimerController>.SetSpanType <index>index <enum>type
type enums: {#linear|#easeIn|#easeOut}
インデックスで指定されたスパンのタイプを 2 番目の引数で指定された名前の値に設定します。
<bool><RetimerController>.GetSpanLocked <index>index
インデックスで指定されたスパンのロックの状態をブール値で返します。
<void><RetimerController>.SetSpanLocked <index>index <bool>type
インデックスで指定されたスパンのロックの状態を 2 番目の引数で指定されたブール値に設定します。
例
|
t = teapot() --create a teapot
--> $Teapot:Teapot001 @ [0.000000,0.000000,0.000000]
with animate on at time 100 t.pos = [200,0,0] --animate it 200 units along X over 100 frames
--> [200,0,0]
rtc =RetimerMan.GetGlobalRetimer() --get the retimer controller
--> Controller:Retimer
addEaseCurve t.pos.controller[1].controller rtc --add the retimer as Ease Curve
--> OK
rtc.numMarkers --check the number of markers
--> 0
rtc.SetNewMarker 30f --add a new marker on frame 30
--> OK
rtc.SetNewMarker 50f --and another one on frame 50
--> OK
rtc.MoveMarker 30f 20f --changed my mind, I want it on 20, not 30
--> OK
rtc.ExpandMarker 50f 80f --now let's retime by stretching the range 20 to 50 by 30 frames
--> OK
rtc.GetMarkerTimes() --here are the original marker times
--> #(20f, 50f)
rtc.GetExpandedMarkerTimes() --and the new retimed marker times
--> #(20f, 80f)
rtc.numMarkers --now we have two markers
--> 2
rtc.numSpans --and we have one span between them
--> 1
rtc.GetSpanType 1 --let's check its type
--> #linear
rtc.SetSpanType 1 #easeOut --we can change it to slow down over time
--> OK
rtc.SetNewMarker 90f --but this gives us a jump on frame 80, so let's add another marker on 90
--> OK
rtc.SetSpanType 2 #easeIn --and set it to ease in to smooth it out
--> OK
rtc.GetSpanLocked 1 --let's check if the first span is locked
--> false
rtc.SetSpanLocked 1 true --and lock it
--> OK
rtc.RemoveMarker 20f --we could remove the first marker just to show we can
--> OK
|