リタイム : コントローラ

> MAXWrapper > コントローラ > リタイム

 

   

アニメーション コントローラ - クイック ナビゲーション

   

リタイム コントローラは、手続き型の 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

関連事項