タイムレンジがプリファレンスのまま変化しない。
そもそも、アニメーションを中間ファイルで管理しようとするのが問題なんですけど・・・。
地味に面倒です。
そこで、アニメーションカーブを調べて、タイムレンジを復元するスクリプトを作成してみました。
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);
}
アニメカーブノードをリストアップしてキーフレームの先頭と末尾の最小、最大を取るだけ。
もう少し賢くしたい感じはする。
0 件のコメント:
コメントを投稿