2012年11月24日土曜日

MAXScript フリーカメラのベイク

トラッキングデータのカメラを色々作業していると階層構造など複雑になってベイクしたいなーってなった時や他ソフトに渡す際に旨く行かない時とか以下のスクリプトでカメラをベイクできます。
----

cam1 = $camera01 -- ベイク元
cam2 = $camera02 -- ベイクされたカメラ

for i = animationrange.start to animationrange.end do
(
    animate on
    (
        at time i
        (
            cam2.transform = cam1.transform
            cam2.fov = cam1.fov
        )
    )
)
----
cam2はシーンのどこかに適当に作っておいて下さい。
もしくは
cam2 =  Freecamera()
とする事でスクリプトで新しく作成することも可能です。

場合によってはカメラにスケールが入っていると駄目な 場合があるようです。
今回のスクリプトではスケールは元のスケールのままになるので注意して下さい。

応用する事でカメラ以外の動きをベイクしたいときにも使えると思います。

フリーカメラ用ですのでフリーカメラに対して行ってください。
VrayCameraにもそのまま使えますが、その場合はレンダー設定の口径幅とVrayCmaeraの口径幅(filmgate)を同じ値にしておく必要があります。

ターゲットカメラですが、ロールというパラメーターがあるので、ローカルの回転軸からベクトル計算して任意の角度をロールに渡してあげる仕組みを書き足せばターゲットカメラにも対応できます。

0 件のコメント:

コメントを投稿