Saturday, December 3, 2005

Анимацийг хувилж blend target бэлдэх

//-----------------------------------------------------------------------------------------------
/*
   Тайлбар:
   Анимаци хийгдсэн биетийг фрэйм бүрд хувилна.
   Хувилсан шинэ биетүүдийг груплэн багцалж
   шинээр нэр оноох бөгөөд цаашид дундын морф хийхэд хэрэглэгдэнэ.
 
  Аргумент:
  string $obj =  Процедурт хэрэглэгдэх объектын нэр
  string $char = Хувилсан биетийн өмнө залгагдах нэр
  string $name = Үүссэн биет ямар нэртэй байхыг зааж өгнө
 
  Жишээ:
  animToBlend ("bound_geo","cat","jawLeft");
 
*/
//-----------------------------------------------------------------------------------------------

global proc animToBlend (string $obj, string $char, string $name) {

    float $start  = `playbackOptions -q -min`;
    float $end  = `playbackOptions -q -max`;
    float $frame = `currentTime -q`;
    float $step = 1;
    string $dupe[];
    string $parent = `createNode transform -name  ($char + "_" + $name + "_blend")`;  

    progressWindow -t "animToBlend" -progress $start -status ("animToBlend on frame: "+$frame) -min $start -max $end -isInterruptable true;
  
    for($frame=$start;$frame<=$end;$frame+=$step)
        {
        currentTime $frame;
        if($frame == $end) $dupe = `duplicate -name ($char  + "_" + $name) $obj`;
        else $dupe = `duplicate -name ($char + "_" + $name + "_" + $frame) $obj`;
        parent $dupe[0] $parent;
        if(`progressWindow -q -isCancelled`) { progressWindow -endProgress; undoInfo -state on;return;}
        progressWindow -e -progress $frame -status ("running animToBlend on frame: "+$frame);
        }
    progressWindow -endProgress;
    print ("successfully created " + $name + " blendShape targets for " + $char + "\n");
    currentTime $start;
    }

No comments:

Post a Comment