アニメーション
MaxScript チートシート の章一覧
アニメーションの操作です。キーを打つには animate on コンテキスト内でプロパティを変える のが基本。キーやコントローラへは .controller 経由でアクセスします。
キーを打つ(animate on)
animate on
(
at time 0 $.pos = [0,0,0]
at time 30 $.pos = [100,0,0]
at time 60 $.pos = [100,100,0]
)
animate onの 中だけ プロパティ変更がキーになります。外で変えても現在値が変わるだけです。- ⚠️
at timeの数値はフレーム。30fのようにfを付けても書けます。
時間(タイムスライダ)を操作する
sliderTime = 30 -- タイムスライダを30フレームへ
sliderTime -- 現在フレームを読む
animationRange = interval 0 100 -- アニメーション範囲を 0〜100 に
frameRate -- フレームレート(fps)
コントローラにアクセスする
$.pos.controller -- 位置コントローラ
$.rotation.controller -- 回転コントローラ
$.pos.x.controller -- X座標のコントローラ(リーフ)
$.pos.controller = Position_XYZ() -- コントローラを差し替える
$.rotation.controller = TCB_rotation()
- ⚠️ アニメ可能なプロパティには
.controllerでアクセスします。$.posだけでは現在値しか取れません。
キーを読む / 追加する / 消す
ctrl = $.pos.x.controller
ctrl.keys -- キー配列
ctrl.keys.count -- キー数
ctrl.keys[1].time -- キー1の時間
ctrl.keys[1].value -- キー1の値
addNewKey ctrl 45 -- 45フレームにキー追加
deleteKeys ctrl #allKeys -- 全キー削除
deleteKey ctrl 1 -- キー1を削除
- キーは リーフコントローラ(
pos.xなど末端)に並びます。posのような親には直接並ばないことがあります。
タンジェント(補間)を変える
ctrl = $.pos.x.controller
ctrl.keys[1].inTangentType = #linear -- #smooth #linear #step #fast #slow #auto
ctrl.keys[1].outTangentType = #linear
-- 全キーをリニアに
for k in ctrl.keys do (k.inTangentType = #linear; k.outTangentType = #linear)
よく使う形
-- 選択全体に同じ往復アニメをつける
animate on for o in selection do
(
at time 0 o.pos.z = 0
at time 25 o.pos.z = 50
at time 50 o.pos.z = 0
)
落とし穴まとめ
- キーは
animate onの中で値を変えたときだけ打たれる。 at timeの値はフレーム。fサフィックスでも書ける。- アニメ可能プロパティへは
.controller経由。$.posだけだと現在値のみ。 - キーは末端(リーフ)コントローラに並ぶ。
pos.x.controller.keysのように末端を指す。
関連
- コントローラのプロパティを調べる: 「デバッグ・調査」章
- 動かす対象を集める: 「選択・取得」章