リファレンス / 3ds Max / MaxScript チートシート

アニメーション

  • 3ds Max
  • MaxScript
  • チートシート
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 のように末端を指す。

関連

← MaxScript チートシート へ