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