レンダリングするためにアニメーションカーブを書き出すのは良くある話。
コントローラーの全アトリビュートをベイクする仕様なら問題も無いんだけれど、使いまわしが出来るようにアニメーション作業で作ったデータをそのまま書き出さなきゃならない時もある。
単純にコントローラー全部にキーを打つと、既存のアニメーションカーブのタンジェントの向きが変わってしまう。
で、キーが打たれていないアトリビュートにのみキーを打つ MEL スクリプトが必要。
VerifyKeyframesOnKeyableAttributes.mel
選択しているオブジェクトの Keyable 属性で、キーフレームもコネクションも無いアトリビュートすべてにキーが打たれる。
{
string $objList[] = `ls -sl -objectsOnly`;
for($obj in $objList)
{
string $attrList[] = `listAttr -keyable $obj`;
for($attr in $attrList)
{
if(0 == size(`listConnections -s 1 -d 0 ($obj+"."+$attr)`) )
{
evalEcho setKeyframe -insertBlend false ($obj+"."+$attr);
}
}
}
}
※ 旧ブログから移転した投稿です。