CG系

mayaのリグコントローラーをmelで作る【ソース公開中】

今回は、mayaで使うリギングのサポートツールを作っていきます。

リグの形をワンクリックで作れるやつです。

実装した機能や感じたことを備忘録的にまとめました。

 

最後にはソースコードを全文載せてますので、何かしらの参考にして頂けると幸いです。

参考ツールの紹介

今回のツールは無料で公開されてる『rig101 Wire Controllers』を元に作ってます

 

たしか、こちらのリグの本にダウンロード先のURLが載ってました。

本の情報なので、URLを載せるのは止めときます。

リグコントローラーツールの特徴4選

  • 直感的にリグの形が分かる
  • よく使う形とそうでない形に分けた
  • 選択したノードにスナップ・その数だけリグを作る
  • グリッドレイアウトで簡単キレイ
  • 参考ツールにあった不要な形は除いた

    このツールの特徴は以上の5つです。

    順番に解説していきます。

    【ボタンを画像化】直感的にリグの形が分かる【選択コストの削減】

    参考ツールはテキストでリグの形が書いてあります。

    しかし、わざわざ文字を読んで、「あ~squareって書いてあるから四角ね~」、、、

    って、英語に疎い私はそんな風に変換してられません。

    リグを作るたびに、

    日本語に置き換えて→形を想像し→ボタンを押す・・・

    毎回この工程をやってたら、キャラのアニメーション作る前にプロジェクト終わりますよ。

    なるべく判断に時間を取られないように、ツールのUIは直感的に分かる作りにしました。

    これなら英語が苦手な私のような人にも、簡単に使いこなすことができます。

    よく使う形とそうじゃない形をタブで分けた

    リグの形も頻出なものと、そうでないものがあります。

    タブを分けることで、「あの形はどこだっけ~」といった判断の時間を減らしてます。

    極力、使い手が迷わないUI設計を心掛けました。

    選択したノードにスナップ・その数だけリグを作る

    参考ツールでは、原点にしかリグが作られない仕様でした。

    ジョイントを選択し、ツールのボタンを押しても、リグが原点に作られるのは使いにくいですね…

    マウスを移動させてる間にプロジェクトが終わります。

     

    そう考えたので、選択箇所にスナップするように作りました。

    加えて、選択したノードの数だけリグが作られるようにしてます。

     

    指のリグとか作ってるときに、コピペするのが面倒だったので実装しました。

    グリッドレイアウトで簡単でキレイ

    string $tabs = `tabLayout -innerMarginWidth 1 -innerMarginHeight 1`; 
    string $grid_01 = `gridLayout -numberOfColumns 6 -cellWidthHeight 50 50`;

    レイアウトにはgridLayoutを使うことで、簡単でキレイなUIを実現してます。

    たったの2つのフラグで見た目を調整できるので、保守管理も楽です。

     

    (正直、columnとrowって苦手なんですよね…)

    参考ツールにあった不要な形は除いた

    正直、使うタイミングが不明なものが多かったので、個人的に不要と感じた形は削りました。

    リグの形はシンプルなやつが好みですね。

    【苦労話】アイコン作成は地味に大変

    UIのアイコンは自作したのですが、これが意外に骨の折れる作業でした(笑)

    トータル3時間くらいアイコン作ってましたね…

    レイヤ名のリネームも、途中からやってません(笑)

    今回のツールで勉強になった点

    • 引数や戻り値の使い方
    • switchのcaseに文字列渡すときの書き方

      今回は以上の2点が勉強になりました。

      引数や戻り値の使い方【基本が大事】

      global proc main_KK_MakeController(string $mode){
          //選択したノードの位置情報をとってくる
          float $pos[];
          float $rot[];
          int $i;
          string $node[],$ctrName;
          
          $node = `ls -sl`;
          
          //選択してるノードがあるかを判定
          if(0 == size($node)){
              $ctrName = `KK_MakeController($mode)`;//コントローラーを作りつつ、コントローラーの名前を取得
          }
          else{
              for($i=0;$i<size($node);$i++){
                  $ctrName = `KK_MakeController($mode)`;
              
                  $pos = `xform  -q -t -ws $node[$i]`;
                  $rot = `xform -q -ro -ws $node[$i]`;
                  
                  xform -t $pos[0] $pos $pos $ctrName;//コントローラーの名前を参照して、選択したノードの場所へスナップ
                  rotate $rot[0] $rot $rot $ctrName;   
              } 
          }
      }

      KK_MakeController($mode)がカーブでリグを作る関数になっており、$modeの値によって作られるリグが変わるようになってます。

      例.

      KK_MakeController(KK_CUBE)なら、立方体のリグが作られます。

      KK_MakeController($mode)の戻り値は、作ったリグの名前を返し、その名前を元にスナップ処理をしてます。

       

      関数をまたぐ場合、今までならグローバル変数を使ってました。

      しかし、それだと記述が多くなるし、もっとスマートな方法はないかと考えたとき、プログラムの原点にたどり着きましたね。

      関数の答えを取得すればいいじゃなか!って…

      (まぁゴリゴリのプログラマーから言わせたら、当たり前じゃんって感じですが…)

      戻り値ってあんまり理解してなくて、うまく使えてなかったですが、今回のように使えばコードを簡略化できるっていうのを学べました。

      関数に戻り値がある場合は、型を指定する必要がある

      global proc string KK_MakeController(string $TYPE )

      melは戻り値を返す場合、変数の型を指定しないといけないってのも勉強になりました。

      Pythonならそんなことせずとも、戻り値は返せるので、その感覚でやってたら落とし穴にはまります…

      この辺も知れたのは良い経験でした。

      switchのcaseに文字列渡すときの書き方

      //-----リグを作る関数------//
      global proc string KK_MakeController(string $TYPE ){
          string $cv;
          switch($TYPE){
              
          case "KK_CUBE":
          $cv = `curve -d 1 -p 0.5 0.5 0.5 -p 0.5 0.5 -0.5 -p -0.5 0.5 -0.5 -p -0.5 -0.5 -0.5 -p 0.5 -0.5 -0.5 
                  -p 0.5 0.5 -0.5 -p -0.5 0.5 -0.5 -p -0.5 0.5 0.5 -p 0.5 0.5 0.5 -p 0.5 -0.5 0.5 -p 0.5 -0.5 -0.5 
                  -p -0.5 -0.5 -0.5 -p -0.5 -0.5 0.5 -p 0.5 -0.5 0.5 -p -0.5 -0.5 0.5 -p -0.5 0.5 0.5 
                  -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 
                  -n "controller1"` ;
          break;
      //-----省略-----//
      }
      
      //-----リグを作ってスナップ処理する関数-----//
      global proc main_KK_MakeController(string $mode){
          //選択したやつの位置情報をとってくる
          float $pos[];
          float $rot[];
          int $i;
          string $node[],$ctrName;
          
          $node = `ls -sl`;
          
          //選択してるノードがあるかを判定
          if(0 == size($node)){
              $ctrName = `KK_MakeController($mode)`;//コントローラーを作りつつ、コントローラーの名前を取得
          }
      //-----省略-----//
      }
      
      //-----UI------//
      global proc KK_ControllerUI()
      {
      if (`window -ex KK_Window`) deleteUI KK_Window ;
          window
          -wh 500 200
          -title "KK_Controller"
          -rtf 1 
          -s 1
        KK_Window;
      
      string $tabs = `tabLayout -innerMarginWidth 1 -innerMarginHeight 1`;
      string $grid_01 = `gridLayout -numberOfColumns 6 -cellWidthHeight 50 50`;
      
          iconTextButton 
          -style "iconOnly"
          -image1 "KKController_Square.png" 
          -c "main_KK_MakeController KK_CUBE";
      
      	setParent ..;
       showWindow KK_Window;
      }
      
      iconTextButtonのcommandフラグに、switch文の分岐条件をそのまま書いてます。

      iconTextButton -c "main_KK_MakeController KK_CUBE"と書けば、KK_CUBEを引数と認識してくれるので、そのままメインの関数に渡してます。

      こんな書き方ができるのは知らなったので、汎用性が高いテクニックだと感じました。

       

      言われてみたら納得なんですが、意外と思いつかなかったですね…

      【今後の改善】UIの見直しとPythonで書き直し

      ■今後の改善

      • main部分のUI調整
      • Pythonで書き直し

        作り終わって感じたことは以上の2点です。

        順番に解説していきます。

        main部分のUIが不細工なので、調整する方法を考える

        グリッドレイアウトで作ってる弊害なのか、ウィンドサイズがサブメニューの大きさに依存するようになってます。

        このままでも使えないことはないのですが、この隙間はどうも不格好ですね…

        今考えてるのは、プルダウンメニューの採用ですかね。

        タブで分けるのではなく、プルダウンで折りたためるようにした方が良いのかな~って考えてます。

        そもそもPythonで作り直す

        そもそもですが、melではなくPythonで作り直そうかと考えてます(今更…)

        理由はリグの追加に対応するためです。

         

        リグの形は、curvepointフラグを使い、CVを動かして整えてます。

        curve -d 1 -p 0.5 0.5 0.5 -p 0.5 0.5 -0.5 -p -0.5 0.5 -0.5;

        ご覧の通り、-pointってフラグをCVの数だけ書かないといけないんですよ…

        しかし、Pythonなら、

        cmds.curve(d=1,p=([0.5,0.5,0.5],[0.5,0.5,-0.5],[-0.5,0.5,-0.5]))

        このような感じで、pointをまとめて書く仕様になってます。

        この記述が肝です。

        作りたい形のCVを取得する方法

        例えば、画像のような球状の形をスクリプトで作ろうとする場合。

        getAttrでCVのポジションを取得できます。

         

        ■mel

        string $nodeList[];
        string $ctrName;
        $nodeList =`ls -sl`;
        $ctrName = $nodeList[0] + ".cv[*]";
        getAttr $ctrName;
        
        // 結果: 0 0 1 0 0.5 0.866025 0 0.866025 0.5 0 1 0 0 0.866025 -0.5 0 0.5 -0.866025 0 0 -1 0 -0.5 -0.866025 0 -0.866025 -0.5 0 -1 0 0 -0.866025 0.5 0 -0.5 0.866025 0 0 1 0.707107 0 0.707107 1 0 0 0.707107 0 -0.707107 0 0 -1 -0.707107 0 -0.707107 -1 0 0 -0.866025 0.5 0 -0.5 0.866025 0 0 1 0 0.5 0.866025 0 0.866025 0.5 0 1 0 0 0.866025 -0.5 0 0.5 -0.866025 0 0 -1 0 -0.5 -0.866025 0 -0.866025 -0.5 0 -1 0 0 -0.707107 0 0.707107 0 0 1 //

         

        ■Python

        cmds.getAttr((cmds.ls(sl=1)[0])+".cv[*]")
        
        #結果: [(0.0, 0.0, 1.0), (0.0, 0.5, 0.866025), (0.0, 0.866025, 0.5), (0.0, 1.0, 0.0), (0.0, 0.866025, -0.5), (0.0, 0.5, -0.866025), (0.0, 0.0, -1.0), (0.0, -0.5, -0.866025), (0.0, -0.866025, -0.5), (0.0, -1.0, 0.0), (0.0, -0.866025, 0.5), (0.0, -0.5, 0.866025), (0.0, 0.0, 1.0), (0.707107, 0.0, 0.707107), (1.0, 0.0, 0.0), (0.707107, 0.0, -0.707107), (0.0, 0.0, -1.0), (-0.707107, 0.0, -0.707107), (-1.0, 0.0, 0.0), (-0.866025, 0.5, 0.0), (-0.5, 0.866025, 0.0), (0.0, 1.0, 0.0), (0.5, 0.866025, 0.0), (0.866025, 0.5, 0.0), (1.0, 0.0, 0.0), (0.866025, -0.5, 0.0), (0.5, -0.866025, 0.0), (0.0, -1.0, 0.0), (-0.5, -0.866025, 0.0), (-0.866025, -0.5, 0.0), (-1.0, 0.0, 0.0), (-0.707107, 0.0, 0.707107), (0.0, 0.0, 1.0)] # 
        

        取得した結果、

        melは0 0 1…のようにただの配列で返ってきますが、

        Pythonなら、[(0.0,0.0,0.1),(0.0,0.5,0.886025)…]のようタプルで返ってきます。

        カープのスクリプトを書く場合、Pythonならこの結果をコピーするだけでOKです。

         

        melだったら、わざわざ間に-p書いて、、、

        ってとんでもない工数が発生しますからね…

        拡張性、保守性、そういう意味でもPythonで記述するべきかと、今更ながらに思います…

        コントローラーツールまとめ【シンプルisBEST】

        ■コントローラーツールまとめ

        • UIは直感的に分かるようにする
        • 戻り値や引数を活用しコードを簡略化する
        • 拡張性・保守性を考えるとPythonで書いた方が良い

        ツールにしろリグにしろ、ユーザーが使いやすいのが正解かと思います。

        視覚的に分かりやすい作りにして、迷ってる時間を1秒でもなくせたら、その分コスト削減になるのではないでしょうか。

         

        また、melは変数の宣言やセミコロンが必須とか…

        色々と面倒だなぁと、改めて感じました。

        ツール開発後の取り回しを考えると、Pythonで書いた方が良いと思います。

        ソースコードの紹介

        ソースコードを紹介します。

        改編・再配布は構いませんが、全て自己責任でお願いします。

        データが消えても責任は取れないので悪しからず…

         

        ※ボタンのアイコン画像は自分で用意してください。

        global proc string KK_MakeController(string $TYPE ){
            string $cv;
            switch($TYPE){
                
            case "KK_CUBE":
            $cv = `curve -d 1 -p 0.5 0.5 0.5 -p 0.5 0.5 -0.5 -p -0.5 0.5 -0.5 -p -0.5 -0.5 -0.5 -p 0.5 -0.5 -0.5 
                    -p 0.5 0.5 -0.5 -p -0.5 0.5 -0.5 -p -0.5 0.5 0.5 -p 0.5 0.5 0.5 -p 0.5 -0.5 0.5 -p 0.5 -0.5 -0.5 
                    -p -0.5 -0.5 -0.5 -p -0.5 -0.5 0.5 -p 0.5 -0.5 0.5 -p -0.5 -0.5 0.5 -p -0.5 0.5 0.5 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 
                    -n "controller1"` ;
            break;
            
            case "KK_CONE":
            $cv = `curve -d 1 -p 0.5 0 0.866025 -p -0.5 0 0.866025 -p 0 2 0 -p 0.5 0 0.866025 
                    -p 1 0 0 -p 0 2 0 -p 0.5 0 -0.866025 -p 1 0 0 -p 0 2 0 -p -0.5 0 -0.866026 
                    -p 0.5 0 -0.866025 -p 0 2 0 -p -1 0 -1.5885e-007 -p -0.5 0 -0.866026 -p 0 2 0 -p -0.5 0 0.866025 
                    -p -1 0 -1.5885e-007 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 
                    -n "controller1"`;
            break;
            
            case "KK_Ball" :
            $cv = `curve -d 1 -p 0 0 1 -p 0 0.5 0.866025 -p 0 0.866025 0.5 -p 0 1 0 
                    -p 0 0.866025 -0.5 -p 0 0.5 -0.866025 -p 0 0 -1 -p 0 -0.5 -0.866025 
                    -p 0 -0.866025 -0.5 -p 0 -1 0 -p 0 -0.866025 0.5 -p 0 -0.5 0.866025 
                    -p 0 0 1 -p 0.707107 0 0.707107 -p 1 0 0 -p 0.707107 0 -0.707107 -p 0 0 -1 
                    -p -0.707107 0 -0.707107 -p -1 0 0 -p -0.866025 0.5 0 -p -0.5 0.866025 0 
                    -p 0 1 0 -p 0.5 0.866025 0 -p 0.866025 0.5 0 -p 1 0 0 -p 0.866025 -0.5 0 
                    -p 0.5 -0.866025 0 -p 0 -1 0 -p -0.5 -0.866025 0 -p -0.866025 -0.5 0 
                    -p -1 0 0 -p -0.707107 0 0.707107 -p 0 0 1 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 
                    -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 -k 22 -k 23 
                    -k 24 -k 25 -k 26 -k 27 -k 28 -k 29 -k 30 -k 31 -k 32 
                    -n "controller1"`;
            break ;
            
            case "KK_FourArrow" :
            $cv = `curve -d 1 -p 0 0 -1.1025 -p -0.33 0 -0.6075 -p -0.165 0 -0.6075 -p -0.165 0 -0.165 
                    -p -0.6075 0 -0.165 -p -0.6075 0 -0.33 -p -1.1025 0 0 -p -0.6075 0 0.33 
                    -p -0.6075 0 0.165 -p -0.165 0 0.165 -p -0.165 0 0.6075 -p -0.33 0 0.6075 
                    -p 0 0 1.1025 -p 0.33 0 0.6075 -p 0.165 0 0.6075 -p 0.165 0 0.165 -p 0.6075 0 0.165 
                    -p 0.6075 0 0.33 -p 1.1025 0 0 -p 0.6075 0 -0.33 -p 0.6075 0 -0.165 -p 0.165 0 -0.165 
                    -p 0.165 0 -0.6075 -p 0.33 0 -0.6075 -p 0 0 -1.1025 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 
                    -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 -k 22 -k 23 -k 24 
                    -n "controller1"`;
            break ;
            
            case "KK_ArrowSingle" :
            $cv = `curve -d 1 -p 0 0 -1.32 -p -0.99 0 0 -p -0.33 0 0 -p -0.33 0 0.99 -p 0.33 0 0.99 
                    -p 0.33 0 0 -p 0.99 0 0 -p 0 0 -1.32 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 
                    -n "controller1"`;
            break ;
        
            
            case "KK_Square" :
            $cv = `curve -d 1 -p 1 0 -1 -p -1 0 -1 -p -1 0 1 -p 1 0 1 -p 1 0 -1 
                    -k 0 -k 1 -k 2 -k 3 -k 4 
                    -n "controller1"`;
            break ;
            //----------mainここまで------------------//
            
            case "KK_Circle":
            string $circle[] = `circle -ch on -o on -nr 0 1 0 -r 1 
                    -n "controller1"`;
            $cv = $circle[0];
             break ; 
                
            case "KK_Triangle":
            $cv = `curve -d 1 -p 1 0 -0.6 -p 0 0 1.132 -p -1 0 -0.6 -p 1 0 -0.6 
                    -k 0 -k 1 -k 2 -k 3 
                    -n "controller1"`;
        	break ;
            
            case "KK_Cross" :
            $cv = `curve -d 1 -p -0.5 0 0.5 -p -2 0 0.5 -p -2 0 -0.5 -p -0.5 0 -0.5 
                    -p -0.5 0 -2 -p 0.5 0 -2 -p 0.5 0 -0.5 -p 2 0 -0.5 -p 2 0 0.5 
                    -p 0.5 0 0.5 -p 0.5 0 2 -p -0.5 0 2 -p -0.5 0 0.5 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 
                    -k 11 -k 12  
                    -n "controller1"`;
            break ;
            
            
            case "KK_Pentagon" :      
            $cv = `curve-d 1 -p 0.00495679 0 -0.850034 -p 0.807952 0 -0.259136 
                    -p 0.499049 0 0.687543 -p -0.498432 0 0.687681 -p -0.807449 0 -0.263375 
                    -p 0.00495679 0 -0.850034 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 
                    -n "controller1"`;
            break ; 
        
            case "KK_Hexagon" :
            $cv = `curve -d 1 -p -1 0 0 -p -0.5 0 -0.866025 -p 0.5 0 -0.866025 -p 1 0 0 
                    -p 0.5 0 0.866025 -p -0.5 0 0.866025 -p -1 0 0 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 
                    -n "controller1"`;
            break ;
            
            case "KK_Triangular" :
            $cv = `curve -d 1 -p 0 1 0 -p 1 0 -1 -p -1 0 -1 -p 0 1 0 -p -1 0 1 -p 1 0 1 -p 0 1 0 
                    -p 1 0 -1 -p 1 0 1 -p -1 0 1 -p -1 0 -1 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 
                    -n "controller1"`;
            break ;
            
            case "KK_Spear" :
            $cv = `curve -d 1 -p 0 2 0 -p 0 0 2 -p 0 -2 0 -p 0 0 -2 -p 0 2 0 -p 0 -2 0 -p 0 0 0 
                    -p 0 0 2 -p 0 0 -2 -p 2 0 0 -p 0 0 2 -p -2 0 0 -p 0 0 -2 -p 0 0 2 -p 0 0 0 
                    -p -2 0 0 -p 2 0 0 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 
                    -k 14 -k 15 -k 16 
                    -n "controller1"`;
            break ;
            
            case "KK_Hexagon2" :
            $cv = `curve -d 1 -p -0.5 1 0.866025 -p 0.5 1 0.866025 -p 0.5 -1 0.866025 -p 1 -1 0 -p 1 1 0 
                    -p 0.5 1 -0.866025 -p 0.5 -1 -0.866025 -p -0.5 -1 -0.866026 -p -0.5 1 -0.866026 
                    -p -1 1 -1.5885e-007 -p -1 -1 -1.5885e-007 -p -0.5 -1 0.866025 -p -0.5 1 0.866025 
                    -p -1 1 -1.5885e-007 -p -0.5 1 -0.866026 -p 0.5 1 -0.866025 -p 1 1 0 -p 0.5 1 0.866025 
                    -p 0.5 -1 0.866025 -p -0.5 -1 0.866025 -p -1 -1 -1.5885e-007 -p -0.5 -1 -0.866026 
                    -p 0.5 -1 -0.866025 -p 1 -1 0 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 
                    -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 -k 22 -k 23 
                    -n "controller1"`;
            break ;
            
            case "KK_001Dia" :
            $cv = `curve -d 1 -p 0 1 0 -p 1 0 0 -p 0 0 1 -p -1 0 0 -p 0 0 -1 -p 0 1 0 -p 0 0 1 -p 0 -1 0 -p 0 0 -1 
                    -p 1 0 0 -p 0 1 0 -p -1 0 0 -p 0 -1 0 -p 1 0 0 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 
                    -n "controller1"`;
            break ;
            
            //-------矢印系----------//
            case "KK_DirSingleThin" :
            $cv = `curve -d 1 -p 0 0 1 -p 0 0 -1 -p -1 0 0 -p 0 0 -1 -p 1 0 0 
                    -k 0 -k 1 -k 2 -k 3 -k 4 
                    -n "controller1"`;
            break ;
            
            case "KK_DirDoubleThin" :
            $cv = `curve -d 1 -p 1 0 1 -p 0 0 2 -p -1 0 1 -p 0 0 2 -p 0 0 -2 -p -1 0 -1 -p 0 0 -2 -p 1 0 -1 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 
                    -n "controller1"`;
            break ;
            
            case "KK_DirDoubleFat" :
            $cv = `curve -d 1 -p 0 0 -1.35 -p -0.66 0 -0.36 -p -0.33 0 -0.36 -p -0.33 0 0.36 -p -0.66 0 0.36 -p 0 0 1.35 
                    -p 0.66 0 0.36 -p 0.33 0 0.36 -p 0.33 0 -0.36 -p 0.66 0 -0.36 -p 0 0 -1.35 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 
                    -n "controller1"`;
            break ;
            
            
            case "KK_DirFourThin" :
            $cv = `curve -d 1 -p 1.25 0 -0.5 -p 1.75 0 0 -p 1.25 0 0.5 -p 1.75 0 0 -p -1.75 0 0 -p -1.25 0 -0.5 -p -1.75 0 0 
                    -p -1.25 0 0.5 -p -1.75 0 0 -p 0 0 0 -p 0 0 1.75 -p -0.5 0 1.25 -p 0 0 1.75 -p 0.5 0 1.25 -p 0 0 1.75 
                    -p 0 0 -1.75 -p 0.5 0 -1.25 -p 0 0 -1.75 -p -0.5 0 -1.25 -p 0 0 -1.75 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 
                    -k 18 -k 19 
                    -n "controller1"`;
            break ;
            
            case "KK_DirFourFat" :
            $cv = `curve -d 1 -p 0 0 -1.1025 -p -0.33 0 -0.6075 -p -0.165 0 -0.6075 -p -0.165 0 -0.165 -p -0.6075 0 -0.165 -p -0.6075 0 -0.33 
                    -p -1.1025 0 0 -p -0.6075 0 0.33 -p -0.6075 0 0.165 -p -0.165 0 0.165 -p -0.165 0 0.6075 -p -0.33 0 0.6075 
                    -p 0 0 1.1025 -p 0.33 0 0.6075 -p 0.165 0 0.6075 -p 0.165 0 0.165 -p 0.6075 0 0.165 -p 0.6075 0 0.33 -p 1.1025 0 0 
                    -p 0.6075 0 -0.33 -p 0.6075 0 -0.165 -p 0.165 0 -0.165 -p 0.165 0 -0.6075 -p 0.33 0 -0.6075 -p 0 0 -1.1025 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 
                    -k 21 -k 22 -k 23 -k 24 
                    -n "controller1"`;
            break ;
            
            
            case "KK_DirEight" :
            $cv = `curve -d 1 -p -1.8975 0 0 -p -1.4025 0 0.37125 -p -1.4025 0 0.12375 -p -0.380966 0 0.157801 -p -1.079222 0 0.904213 
                    -p -1.254231 0 0.729204 -p -1.341735 0 1.341735 -p -0.729204 0 1.254231 -p -0.904213 0 1.079222 -p -0.157801 0 0.380966 
                    -p -0.12375 0 1.4025 -p -0.37125 0 1.4025 -p 0 0 1.8975 -p 0.37125 0 1.4025 -p 0.12375 0 1.4025 -p 0.157801 0 0.380966 
                    -p 0.904213 0 1.079222 -p 0.729204 0 1.254231 -p 1.341735 0 1.341735 -p 1.254231 0 0.729204 -p 1.079222 0 0.904213 
                    -p 0.380966 0 0.157801 -p 1.4025 0 0.12375 -p 1.4025 0 0.37125 -p 1.8975 0 0 -p 1.4025 0 -0.37125 -p 1.4025 0 -0.12375 
                    -p 0.380966 0 -0.157801 -p 1.079222 0 -0.904213 -p 1.254231 0 -0.729204 -p 1.341735 0 -1.341735 -p 0.729204 0 -1.254231 
                    -p 0.904213 0 -1.079222 -p 0.157801 0 -0.380966 -p 0.12375 0 -1.4025 -p 0.37125 0 -1.4025 -p 0 0 -1.8975 -p -0.37125 0 -1.4025 
                    -p -0.12375 0 -1.4025 -p -0.157801 0 -0.380966 -p -0.904213 0 -1.079222 -p -0.729204 0 -1.254231 -p -1.341735 0 -1.341735 
                    -p -1.254231 0 -0.729204 -p -1.079222 0 -0.904213 -p -0.380966 0 -0.157801 -p -1.4025 0 -0.12375 -p -1.4025 0 -0.37125 -p -1.8975 0 0 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 -k 22 -k 23 
                    -k 24 -k 25 -k 26 -k 27 -k 28 -k 29 -k 30 -k 31 -k 32 -k 33 -k 34 -k 35 -k 36 -k 37 -k 38 -k 39 -k 40 -k 41 -k 42 -k 43 -k 44 -k 45 
                    -k 46 -k 47 -k 48 
                    -n "controller1"`;
            break ;
            
            case "KK_Rot90Thin" :
            $cv = `curve -d 1 -p -1.026019 0 0 -p -0.947961 0 0.392646 -p -0.725413 0 0.725516 -p -0.393028 0 0.947932 -p -0.13006 0 1 
                    -p 0.0107043 0 1.001418 -p -0.339542 0 0.5442 -p 0.0107043 0 1.001418 -p -0.446514 0 1.351664 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 
                    -n "controller1"`;
            break ;
        
            case "KK_Rot90Fat" :
            $cv = `curve -d 1 -p -0.923366 0 0 -p -1.128672 0 0 -p -1.042702 0 0.431934 -p -0.798049 0 0.798033 -p -0.560906 0 0.946236 
                    -p -0.975917 0 1.036319 -p -0.124602 0 1.096506 -p -0.537718 0 0.349716 -p -0.440781 0 0.788659 -p -0.652776 0 0.652998 
                    -p -0.853221 0 0.353358 -p -0.923366 0 0 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 
                    -n "controller1"`;
            break ;
        
            case "KK_Rot180Thin" :
            $cv = `curve -d 1 -p -0.446514 0 -1.351664 -p 0.0107043 0 -1.001418 -p -0.339542 0 -0.5442 -p 0.0107043 0 -1.001418 -p -0.13006 0 -1 
                    -p -0.393028 0 -0.947932 -p -0.725413 0 -0.725516 -p -0.947961 0 -0.392646 -p -1.026019 0 0 -p -0.947961 0 0.392646 
                    -p -0.725413 0 0.725516 -p -0.393028 0 0.947932 -p -0.13006 0 1 -p 0 0 1 -p -0.339542 0 0.5442 -p 0 0 1 
                    -p -0.446514 0 1.351664 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 
                    -n "controller1"`;
            break ;
        
            case "KK_Rot180Fat" :
            $cv = `curve -d 1 -p -0.124602 0 -1.096506 -p -0.975917 0 -1.036319 -p -0.559059 0 -0.944259 -p -0.798049 0 -0.798033 -p -1.042702 0 -0.431934 
                    -p -1.128672 0 0 -p -1.042702 0 0.431934 -p -0.798049 0 0.798033 -p -0.560906 0 0.946236 -p -0.975917 0 1.036319 
                    -p -0.124602 0 1.096506 -p -0.537718 0 0.349716 -p -0.440781 0 0.788659 -p -0.652776 0 0.652998 -p -0.853221 0 0.353358 
                    -p -0.923366 0 0 -p -0.853221 0 -0.353358 -p -0.652776 0 -0.652998 -p -0.439199 0 -0.785581 -p -0.537718 0 -0.349716 
                    -p -0.124602 0 -1.096506 -k 0 
                    -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 
                    -n "controller1"`;
            break ;
            
            case "KK_ArrowsOnBall" :
            $cv = `curve -d 1 -p 0 0.35 -1.001567 -p -0.336638 0.677886 -0.751175 -p -0.0959835 0.677886 -0.751175 -p -0.0959835 0.850458 -0.500783 
                    -p -0.0959835 0.954001 -0.0987656 -p -0.500783 0.850458 -0.0987656 -p -0.751175 0.677886 -0.0987656 -p -0.751175 0.677886 -0.336638 
                    -p -1.001567 0.35 0 -p -0.751175 0.677886 0.336638 -p -0.751175 0.677886 0.0987656 -p -0.500783 0.850458 0.0987656 -p -0.0959835 0.954001 0.0987656 
                    -p -0.0959835 0.850458 0.500783 -p -0.0959835 0.677886 0.751175 -p -0.336638 0.677886 0.751175 -p 0 0.35 1.001567 -p 0.336638 0.677886 0.751175 
                    -p 0.0959835 0.677886 0.751175 -p 0.0959835 0.850458 0.500783 -p 0.0959835 0.954001 0.0987656 -p 0.500783 0.850458 0.0987656 -p 0.751175 0.677886 0.0987656 
                    -p 0.751175 0.677886 0.336638 -p 1.001567 0.35 0 -p 0.751175 0.677886 -0.336638 -p 0.751175 0.677886 -0.0987656 -p 0.500783 0.850458 -0.0987656 
                    -p 0.0959835 0.954001 -0.0987656 -p 0.0959835 0.850458 -0.500783 -p 0.0959835 0.677886 -0.751175 -p 0.336638 0.677886 -0.751175 -p 0 0.35 -1.001567 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 -k 22 -k 23 -k 24 -k 25 
                    -k 26 -k 27 -k 28 -k 29 -k 30 -k 31 -k 32 
                    -n "controller1"`;
            break ;
              
            case "KK_Cog":
            $cv=`curve -d 3 -p 7.06316e-009 0 -1 -p 0.104714 0 -0.990425 -p 0.314142 0 -0.971274 -p 0.597534 0 -0.821244 -p 0.822435 0 -0.597853 
                    -p 0.96683 0 -0.314057 -p 1.016585 0 -2.28604e-005 -p 0.96683 0 0.314148 -p 0.822435 0 0.597532 -p 0.597534 0 0.822435 -p 0.314142 0 0.96683 
                    -p 1.22886e-008 0 1.016585 -p -0.314142 0 0.96683 -p -0.597534 0 0.822435 -p -0.822435 0 0.597532 -p -0.96683 0 0.314148 -p -1.016585 0 -2.29279e-005 
                    -p -0.96683 0 -0.314057 -p -0.822435 0 -0.597853 -p -0.597534 0 -0.821244 -p -0.314142 0 -0.971274 -p -0.104714 0 -0.990425 -p 7.06316e-009 0 -1 
                    -k 0 -k 0 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 -k 20 -k 20 
                    -n controller1`; 
            string $Cog[] = `ls -sl`; 
            select -r $cv.ep $cv.ep $cv.ep[5] $cv.ep[7] $cv.ep[9] $cv.ep[11] $cv.ep[13] $cv.ep[15] $cv.ep[17] $cv.ep[19];
            scale -r -p 0cm 0cm 0cm 0.732056 0.732056 0.732056 ;
            select -r $Cog;       
            break ;
            
            case "KK_Pin" :
            $cv = `curve -d 1 -p 0 0 0 -p -2 0 0 -p -2.29289 0 0.70711 -p -3 0 1 -p -3.70711 0 0.70711 -p -4 0 0 -p -3.70711 0 -0.70711 
                    -p -3 0 -1 -p -2.29289 0 -0.70711 -p -2 0 0 -p -2.292893 0 0.707107 -p -3.707107 0 -0.707107 -p -4 0 0 
                    -p -3.707107 0 0.707107 -p -2.292893 0 -0.707107 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 
                    -n "controller1"`;
            break ;
            
            case "KK_doublePin" :
            $cv = `curve -d 1 -p 0 0 0 -p -2 0 0 -p -2.292893 0 -0.707107 -p -3 0 -1 -p -3.707107 0 -0.707107 -p -4 0 0 -p -3.707107 0 0.707107 
                    -p -3 0 1 -p -2.292893 0 0.707107 -p -2 0 0 -p -2.292893 0 0.707107 -p -3.707107 0 -0.707107 -p -3 0 -1 
                    -p -2.292893 0 -0.707107 -p -3.707107 0 0.707107 -p -3 0 1 -p -2.292893 0 0.707107 -p -2 0 0 -p 0 0 0 -p 2 0 0 
                    -p 2.292893 0 -0.707107 -p 3 0 -1 -p 3.707107 0 -0.707107 -p 4 0 0 -p 3.707107 0 0.707107 -p 3 0 1 -p 2.292893 0 0.707107 
                    -p 2 0 0 -p 2.292893 0 0.707107 -p 3.707107 0 -0.707107 -p 3 0 -1 -p 2.292893 0 -0.707107 -p 3.707107 0 0.707107 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 
                    -k 22 -k 23 -k 24 -k 25 -k 26 -k 27 -k 28 -k 29 -k 30 -k 31 -k 32 
                    -n "controller1"`;
            break ;
            
            case "KK_fourPin" :
            $cv = `curve -d 1 -p -2 0 0 -p -2.292893 0 -0.707107 -p -3 0 -1 -p -3.707107 0 -0.707107 -p -4 0 0 -p -3.707107 0 0.707107 -p -3 0 1 -p -2.292893 0 0.707107 
                    -p -2 0 0 -p -2.292893 0 0.707107 -p -3.707107 0 -0.707107 -p -4 0 0 -p -3.707107 0 0.707107 -p -2.292893 0 -0.707107 -p -2 0 0 -p 0 0 0 
                    -p 2 0 0 -p 2.292893 0 0.707107 -p 3 0 1 -p 3.707107 0 0.707107 -p 4 0 0 -p 3.707107 0 -0.707107 -p 3 0 -1 -p 2.292893 0 -0.707107 -p 2 0 0 
                    -p 2.292893 0 0.707107 -p 3.707107 0 -0.707107 -p 4 0 0 -p 3.707107 0 0.707107 -p 2.292893 0 -0.707107 -p 2 0 0 -p 0 0 0 -p 0 0 2 
                    -p -0.707107 0 2.292893 -p -1 0 3 -p -0.707107 0 3.707107 -p 0 0 4 -p 0.707107 0 3.707107 -p 1 0 3 -p 0.707107 0 2.292893 -p 0 0 2 
                    -p 0.707107 0 2.292893 -p -0.707107 0 3.707107 -p 0 0 4 -p 0.707107 0 3.707107 -p -0.707107 0 2.292893 -p 0 0 2 -p 0 0 -2 
                    -p -0.707107 0 -2.292893 -p -1 0 -3 -p -0.707107 0 -3.707107 -p 0 0 -4 -p 0.707107 0 -3.707107 -p 1 0 -3 -p 0.707107 0 -2.292893 
                    -p 0 0 -2 -p 0.707107 0 -2.292893 -p -0.707107 0 -3.707107 -p 0 0 -4 -p 0.707107 0 -3.707107 -p -0.707107 0 -2.292893 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 -k 18 -k 19 -k 20 -k 21 -k 22 -k 23 -k 24 
                    -k 25 -k 26 -k 27 -k 28 -k 29 -k 30 -k 31 -k 32 -k 33 -k 34 -k 35 -k 36 -k 37 -k 38 -k 39 -k 40 -k 41 -k 42 -k 43 -k 44 -k 45 -k 46 -k 47 
                    -k 48 -k 49 -k 50 -k 51 -k 52 -k 53 -k 54 -k 55 -k 56 -k 57 -k 58 -k 59 -k 60 
                    -n "controller1"`;
            break ;
            
            case "KK_Dumbell":
            $cv = `curve -d 1 -p -0.5 0 0 -p -0.58 -0.202763 0 -p -0.786335 -0.28675 0 -p -0.989098 -0.202763 0 -p -1.073085 0 0 -p -0.989098 0.202763 0 
                    -p -0.786335 0.28675 0 -p -0.5835722 0.202763 0 -p -0.5 0 0 -p 0.5 0 0 -p 0.580579 0.202763 0 -p 0.783342 0.28675 0 -p 0.986105 0.202763 0 
                    -p 1.070092 0 0 -p 0.986105 -0.202763 0 -p 0.783342 -0.28675 0 -p 0.580579 -0.202763 0 -p 0.5 0 0 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -k 16 -k 17 
                    -n "controller1"`;
            break;
            
            case "KK_Aim":
            $cv = `curve -d 1 -p 0 0 1 -p 0 0 -1 -p 0 2 0 -p 0 -2 0 -p 0 0 -1 -p 2 0 0 -p -2 0 0 -p 0 0 -1 
                    -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 
                    -n "controller1"`;
            break;
            }
            return $cv;//作ったコントローラーの名前を返す
        }
        
        global proc main_KK_MakeController(string $mode){
            //選択したノードの位置情報をとってくる
            float $pos[];
            float $rot[];
            int $i;
            string $node[],$ctrName;
            
            $node = `ls -sl`;
            
            //選択してるノードがあるかを判定
            if(0 == size($node)){
                $ctrName = `KK_MakeController($mode)`;//コントローラーを作りつつ、コントローラーの名前を取得
            }
            else{
                for($i=0;$i<size($node);$i++){
                    $ctrName = `KK_MakeController($mode)`;
                
                    $pos = `xform  -q -t -ws $node[$i]`;
                    $rot = `xform -q -ro -ws $node[$i]`;//トランスとロットは別で取得しないといけんのね
                    
                    xform -t $pos[0] $pos $pos $ctrName;//コントローラーの名前を参照して、選択したノードの場所へスナップ
                    rotate $rot[0] $rot $rot $ctrName;   
                } 
            }
        }
        
        global proc KK_ControllerUI()
        {
        if (`window -ex KK_Window`) deleteUI KK_Window ;
            window
            -wh 500 200
            -title "KK_Controller"
            -rtf 1 
            -s 1
          KK_Window;
        
        string $tabs = `tabLayout -innerMarginWidth 1 -innerMarginHeight 1`;
        string $grid_01 = `gridLayout -numberOfColumns 6 -cellWidthHeight 50 50`;
        
            iconTextButton 
            -style "iconOnly"
            -image1 "KKController_Square.png" 
            -c "main_KK_MakeController KK_CUBE";
            
             iconTextButton 
            -style "iconOnly"
            -image1 "KKController_Cone.png"
            -c "main_KK_MakeController KK_CONE";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KKController_ball.png"
            -c "main_KK_MakeController KK_Ball";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KKController_ForeArrow.png"
            -c "main_KK_MakeController KK_FourArrow";
        
            iconTextButton 
            -style "iconOnly"
            -image1 "KKController_SingleArrow.png"
            -c "main_KK_MakeController KK_ArrowSingle";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KKController_Square01.png"
            -c "main_KK_MakeController KK_Square";
        	setParent ..;
        	
        string $grid_02 = `gridLayout -numberOfColumns 6 -cellWidthHeight 50 50`;
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Circle.png" 
            -c "main_KK_MakeController KK_Circle";
            
             iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Cross.png"
            -c "main_KK_MakeController KK_Cross";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Pentagon.png"
            -c "main_KK_MakeController KK_Pentagon";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Hexagon.png"
            -c "main_KK_MakeController KK_Hexagon";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Triangular.png"
            -c "main_KK_MakeController KK_Triangular";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Spear.png"
            -c "main_KK_MakeController KK_Spear";//
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_KK_Hexagon2.png" 
            -c "main_KK_MakeController KK_Hexagon2";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Dia.png"
            -c "main_KK_MakeController KK_001Dia";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_DirSingleThin.png"
            -c "main_KK_MakeController KK_DirSingleThin";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_DirDoubleThin.png"
            -c "main_KK_MakeController KK_DirDoubleThin";
        
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_DirDoubleFat.png"
            -c "main_KK_MakeController KK_DirDoubleFat";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_DirFourThin.png"
            -c "main_KK_MakeController KK_DirFourThin";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_DirEight.png"
            -c "main_KK_MakeController KK_DirEight";//******--
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Rot90Thin"
            -c "main_KK_MakeController KK_Rot90Thin";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Rot90Fat.png"
            -c "main_KK_MakeController KK_Rot90Fat";
        
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Rot180Thin.png"
            -c "main_KK_MakeController KK_Rot180Thin";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Rot180Fat"
            -c "main_KK_MakeController KK_Rot180Fat";//**************
        	
        	 iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_ArrowsOnBall.png" 
            -c "main_KK_MakeController KK_ArrowsOnBall";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Cog.png"
            -c "main_KK_MakeController KK_Cog";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_pin.png"
            -c "main_KK_MakeController KK_Pin";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_doublePin.png"
            -c "main_KK_MakeController KK_doublePin";
        
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_fourPin.png"
            -c "main_KK_MakeController KK_fourPin";
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Dumbell.png"
            -c "main_KK_MakeController KK_Dumbell";//*-/-*
            
            iconTextButton 
            -style "iconOnly"
            -image1 "KK_Controller_Aim.png"
            -c "main_KK_MakeController KK_Aim";
            
        	setParent ..;
        	
        tabLayout -e -tabLabel $grid_01 "main" -tabLabel $grid_02 "sub01" $tabs;
          showWindow KK_Window;
        }
        ABOUT ME
        みっつ
        CGアニメーター/リガー テクニカルアーティスト(TA)目指して精進中です 都内でゲーム作ってます。