モディファイキー(ShiftとかCtrlとか)が押されてるかどうかを知る

     たとえばpSphere1を選択するスクリプトを作成したとします。
    global proc selectSphere()
    {
        select -r pSphere1;
    }
    
    {
        polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -cuv 2 -ch 1;
    
        if( `window -ex sampleWindow` )
            deleteUI sampleWindow;
            string $win = `window -w 100 -h 80 sampleWindow`;
            columnLayout -adj true;
            button -l "Select Sphere" -c selectSphere;
            showWindow $win;
    }
    



     しかしこれだと選択はできますが、選択解除やトグル、選択追加などを行う場合別のボタンを作成する必要がでてしまいます。
    それはそれでいいのですが、Mayaの通常オペレーション同様




    Shift + クリック トグル選択
    Shift + Ctrl + クリック 追加選択
    Ctrl + クリック 選択解除td>

    の仕様にすればボタンひとつで様々なアクションを行えるようになり、画面の節約にもなります。
     そこで登場するのがgetModifiersコマンドになります。
     なんとこのコマンド、CtrlキーやShiftキー、Escキーなどのモディファイアボタンと呼ばれるボタンが押されているかどうかを判別する事ができます!
     Shiftが押されているならば1ビット(1)、Ctrlが押されているならば3ビット(4)、Altキーが押されていれば4ビット(8)といった具合です。因みにShit+Ctrlなら1+4で5が返ってきます。
    例えばAltキーを押さえながら
    getModifiers();
    とスクリプトエディタで実行すると結果は8になる・・・みたいな感じです。
    これを踏まえて上記スクリプトのselectSphere関数を次のように変更します。
    global proc selectSphere()
    {
        string $obj = "pSphere1";
        int $mod = getModifiers();
        switch( $mod ){
            case 1:    select -tgl $obj;    break;
            case 4:    select -d $obj;      break;
            case 5:    select -add $obj;   break;
            default:    select -r $obj;      break;
        }
    }
    


     これでMayaの選択操作と共通化できました\(^0^)/
    スポンサーサイト

    コメントの投稿

    非公開コメント

    プロフィール

    Eske

    Author:Eske
    萌えイラストレーターを目指す3DCGイラストレーター。
    現在ポケモンカードゲーム、ガンダムトライエイジ、ガンダムコンクエスト、妖怪ウォッチとりつきカードゲームなどで3DCGを使用したイラストレーターとして参加中。

    主にここでは日々気づいたメモなんかを残してます。
    イラストのお仕事も受け付けております。ココのメールアドレスからご連絡できますので、お気軽にご相談下さい。

    最新記事
    最新コメント
    カテゴリ
    最新トラックバック
    月別アーカイブ
    検索フォーム
    リンク
    QRコード
    QR