値 > MAXWrapper > コントローラ > リタイム |
リタイム コントローラは、手続き型の EaseCurve コントローラに代わるコントローラとして 3ds Max 2013 で導入されました。
任意のコントローラの EaseCurve トラックで使用するか、シーン全体に作用するグローバル リタイマ コントローラとして使用できます。このコントローラには、インタフェース: RetimerMan からアクセスできます。
プロパティ:
<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 |