前回の「Vol.4:スクリプトの具体的な作り方(後編)」ではパーティクルフローを使用した、ちょっと特殊なスクリプトの使い方を紹介しました。今回からは MAXScript におけるアニメーションデータの扱い方を学習していきましょう。


今回は上の画像のように、1万個のCube オブジェクトのアニメーションを MAXScript で制御してみます
アニメーションデータの扱い方 01
Autodesk 3ds Max(以下、3ds Max)でのアニメーションデータの扱いは、グラフとして見えている部分以外にも様々な処理を行なっているため、とても分かりにくくなっています。
ですので、まずは 3ds Max 内部でアニメーションデータがどのように扱われているのか、実際に Cubeオブジェクト を作成し、適当なアニメーションを付けて、確認してみましょう。

Cubeを置いた時のコントローラ(上)とモーションのカーブ(下)
上の画像には、使われているコントローラと、モーションのカーブが表示されています。
コントローラの表示に馴染みがない場合は、スケマティックビューの "表示(D)/フロータを表示" で各種表示状態を切り替えるフロータを表示して、エンティティのコントローラを ON にしてください。こうすると、オブジェクトがどのようなコントローラで動かされているのか確認できます。
また、P,R,S それぞれのボタンにチェックを入れると位置、回転、スケールそれぞれのコントローラの内容を見ることが可能です。

スケマティックビューの表示切替で、コントローラの内容を確認できる
下の画像は、MAXScript のリスナーとエディタです。表示されている内容は、アニメーションデータをスクリプトから確認したものになります。

スクリプトリスナー(上)とエディタ(下)。アニメーションデータのスクリプトが表示されている
ここではコントローラの種類と、キーフレームが何フレーム目にあるのかが表示されています。
s = selection[1]
classOf s.pos.controller
s.pos.controller.keys
確認に使用しているスクリプトは上のような内容です。位置コントローラには、 <オブジェクト>.pos.controller でアクセス。classOf で、指定したノードのクラス名を確認するために使用します。