タイムレンジがプリファレンスのまま変化しない。
そもそも、アニメーションを中間ファイルで管理しようとするのが問題なんですけど・・・。
地味に面倒です。
そこで、アニメーションカーブを調べて、タイムレンジを復元するスクリプトを作成してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | global proc string tryRestoreTimeRange() { float $min ; float $max ; string $aniCrvs []=`ls -typ "animCurve" `; if (!`size $aniCrvs `) return "" ; int $isFirst =1; for ( $aniCrv in $aniCrvs ) { int $kc =`keyframe -q -kc $aniCrv `; float $tmpMin []=`keyframe -in 0 -q $aniCrv `; float $tmpMax []=`keyframe -in ( $kc -1) -q $aniCrv `; if ( $isFirst ) { $isFirst =0; $min = $tmpMin [0]; $max = $tmpMax [0]; } if ( $tmpMin [0]< $min ) $min = $tmpMin [0]; if ( $max < $tmpMax [0] ) $max = $tmpMax [0]; } eval ( "playbackOptions -min " + $min + " -max " + $max + " -ast " + $min + " -aet " + $max ); return ( $min + ":" + $max ); } |
アニメカーブノードをリストアップしてキーフレームの先頭と末尾の最小、最大を取るだけ。
もう少し賢くしたい感じはする。