Saturday, December 3, 2005

FK удирдлага оноох

//-----------------------------------------------------------------------------------------------
/* 
  author: Joe Harkins                                
  name: createCtl
 
  description:
  creates a nurbs circle controller for each selected object based on a few user input args
  parents the shape of the circle to each object and sets display override based on naming tokens
  nurbs цагираган удирдлагыг үүсгэнэ. хэрэглэгчийн идэвхжүүлсэн холбоос бүрийн дор shape зангилаа үүсгэж үүссэн цагирагыг онооно.
    Тухайн холбоосын нэрийг  харж байгаад ямар өнгөөр дүрслэхийг мөн тодорхойлно. холбоос нь голынх бол cn,c_ харин баруун бол
    rt эсвэл r_ гэх зэргээр нэрлэгдсэн байх зайлшгүй шаардлагатай.Жишээ нь l_hand, rtShoulder гэх мэт
 
  Аргументууд:
  string $sel[] = list of selected objects
  float $x = цагираг X тэнхлэг рүү харсан байдалтай үүснэ. 
  float $y = цагираг Y тэнхлэг рүү харсан байдалтай үүснэ.
  float $z = цагираг Z тэнхлэг рүү харсан байдалтай үүснэ.
  float $r = цагирагын радиус
 
  Жишээ:
  Холбоосуудыг идэвхжүүлж байгаад доорхи маягаар бичнэ.
  createCtl `ls -sl` 1 0 0 .25;
 
*/
//-----------------------------------------------------------------------------------------------

global proc createCtl(string $sel[], float $x, float $y, float $z, float $r){
    string $joint;
    for ($joint in $sel){
        float $loc[] = `xform -q -ws -t $joint`;
        circle -fp $loc[0] $loc[1] $loc[2] -sw 360 -nr $x $y $z  -r $r -n ($joint + "_control");
        parent -r -shape ($joint + "_controlShape") $joint;
        setAttr ($joint + "_controlShape.overrideEnabled") 1;
        setAttr ($joint + ".overrideEnabled") 1;
       
        if((`gmatch $joint "*cn*"`)||(`gmatch $joint "*c_*"`)){
                    // Хэрэв гол хэсгийн холбоос бол шар өнгөтэй болгоно
                    setAttr ($joint + "_controlShape.overrideColor") 17;
                    setAttr ($joint + ".overrideColor") 17;
                    }
        else if((`gmatch $joint "*lf*"`)||(`gmatch $joint "*l_*"`))
                             {
                    // Хэрэв зүүн талд харьяалагдах бол ногоон
                    setAttr ($joint + "_controlShape.overrideColor") 14;
                    setAttr ($joint + ".overrideColor") 14;
                    }
        else if((`gmatch $joint "*rt*"`)||(`gmatch $joint "*r_*"`))
                                                           {
                    // Хэрэв баруун талд харьяалагдах бол улаан
                    setAttr ($joint + "_controlShape.overrideColor") 13;
                    setAttr ($joint + ".overrideColor") 13;
                    }
        else if(`gmatch $joint "*"`){
                    // Аль ч талд харьяалагдахгүй бол цэнхэр
                    setAttr ($joint + "_controlShape.overrideColor") 6;
                    setAttr ($joint + ".overrideColor") 6;
                    }   
                   
                    delete ($joint + "_control");               
            }
           
}

No comments:

Post a Comment