レンダリングするためにアニメーションカーブを書き出すのは良くある話。

コントローラーの全アトリビュートをベイクする仕様なら問題も無いんだけれど、使いまわしが出来るようにアニメーション作業で作ったデータをそのまま書き出さなきゃならない時もある。

単純にコントローラー全部にキーを打つと、既存のアニメーションカーブのタンジェントの向きが変わってしまう。
で、キーが打たれていないアトリビュートにのみキーを打つ 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);
      }
    }
  }
}

良く読まれている技術ブログ記事

すべて Qiita一覧