2014年10月3日金曜日

ジョイントを再配置

ジョイントにスケールを入れる事になったりしてリセットしたい時に
どうしてもトランスフォームノードが勝手に入る事があった。
結局、作り直したほうが早いと思ったので、ジョイントを新規作成して再配置。

string $root[] =`ls -sl`;
string $AllNodeList[] = `listRelatives -ad -type "joint" $root[0]`;
select -cl  ;
int $n,$t;
string $oldjoint[],$Newjoint[];
for($n=0;$n<`size$AllNodeList`;$n++)
{
   rename $AllNodeList[$n] ($AllNodeList[$n] + "_old");
   $oldjoint[$n] = $AllNodeList[$n] + "_old";
string $newName = $AllNodeList[$n] ;
float $jointPos[] = `xform -q -a -ws -sp $oldjoint[$n]`;
float $jointRot[] = `xform -q -a -ws -ro $oldjoint[$n]`;
$Newjoint[$n] = `joint -n $newName -p $jointPos[0] $jointPos[1] $jointPos[2]  -o $jointRot[0] $jointRot[1] $jointRot[2] -rad 2.0`;
select -cl  ;
//parent $newName ($AllNodeList[$n] + "_old");

}
for($n=0;$n<`size$Newjoint`;$n++)
{
   string $pjointn[] = `listRelatives -p $oldjoint[$n]`;
   if($root[0] != $pjointn[0])
   {
       int $index = stringArrayFind( $pjointn[0], 0, $oldjoint );
       parent $Newjoint[$n]  $Newjoint[$index];
   }
   else
   {
       parent -w $pjointn[0];
   }
}

0 件のコメント:

コメントを投稿