mel
maya
maya2017

Maya2017日本語版で矢印キーが効かない問題 + 空のウインドウが出て消すと落ちる問題

 はじめまして、テクニカルアーティスト見習いのLeaf7です。
 お仕事ではリグ作成、Mayaとゲームエンジンとのパイプラインツール作成・保守なんかを主にこなしています。
 Maya遍歴としては2015→2014→2016→2017と来ていて、ここ最近ずっと触っているMaya2017は結構分かりづらい部分があるな、と思っています。
 それぞれ個別記事に起こすほどの分量ではないのですが、結構みんな困ってたりするんじゃないかという思いもあり、少しずつですが気になる点と対処法を書いていこうと思います。
 拙い記事ではございますが、当記事で皆様の非クリエイティブな悩みの時間が少しでも減ったならば幸いです。

 当記事内に記載のスクリプトを使用したことによって生じたすべての障害・損害・不具合等に関しては、私と私の関係者および私の所属するいかなる団体・組織とも、一切の責任を負いません。各自の責任においてご使用下さい。

Maya2017 日本語版環境で矢印キーでの階層移動ができない(≒矢印キーにホットキーを設定できない)

概要

 表題の通り、Maya2017を日本語版で起動すると、矢印キーを用いたDAGでの親子・兄弟ノードへの移動ができなくなります。

参考:
Pick Walk(hotkey:up, down, left, right) is not working in multi-byte language mode
Maya2017の日本語版で方向キーを使って親子階層やコンポーネントの選択移動が使えない

 Autodesk公式の提案する解決策は、Maya2016以前または2018以降を使うか、英語版Maya2017を使ってくださいとのことです。素晴らしいですね。
 この方法でも解決しますが、Maya2017日本語版のまま解決する方法を説明します。

詳細

 そもそもの原因は、こちら推測ですが、矢印キーを押したときに呼び出されるホットキーが英語版では"Up", "Down", "Left", "Right" なのに対し、
 マルチバイト環境では"↑", "↓", "←", "→" となってしまっているようです。
にもかかわらず、デフォルトのホットキーは"Up", ...の形式で保存されるため、矢印キーでそのホットキーが呼び出されず、使用することができない…ということになります。
 Hotkey Editorで"↑", "↓", "←", "→" の場所に各機能を割り当てても、保存されるときに"Up", ...の形式で保存されてしまうようです(%MAYA_APP_DIR%\2017\prefs\hotkeys\の中身を見ると分かります)。

対処法

 ホットキーをmelコマンドで直接書き換えることで、"Up", ...の形式に変換されることなく設定できるようです。
 
 以下に矢印キーでの階層移動を設定するmelスクリプトを示します。スクリプトエディタ等で実行してください。
 日本語版環境以外では実行しないでください。
 

pickWalkFix.mel
//ホットキー設定ファイルを切り替え
//Maya_Defaultはロックされいていて編集できないため
if (`hotkeySet -q -cu` == "Maya_Default"){
    if (`hotkeySet -ex "Maya_Default_Duplicate"`){
        hotkeySet -e -current "Maya_Default_Duplicate";
    }
    else if(`hotkeySet -ex "Maya Default Duplicate"`){
        hotkeySet -e -current "Maya Default Duplicate";
    }
    else{
        hotkeySet -src "Maya_Default" "Maya_Default_Duplicate";
        hotkeySet -e -current "Maya_Default_Duplicate";
    }
}

//ランタイムコマンド登録
runTimeCommand
    -annotation ""
    -category "Custom Scripts"
    -hotkeyCtx ""
    -commandLanguage "mel"
    -command ("pickWalk -d up;\n")
    pickWalk_moveUp;

runTimeCommand
    -annotation ""
    -category "Custom Scripts"
    -hotkeyCtx ""
    -commandLanguage "mel"
    -command ("pickWalk -d left;\n")
    pickWalk_moveLeft;

runTimeCommand
    -annotation ""
    -category "Custom Scripts"
    -hotkeyCtx ""
    -commandLanguage "mel"
    -command ("pickWalk -d down;\n")
    pickWalk_moveDown;

runTimeCommand
    -annotation ""
    -category "Custom Scripts"
    -hotkeyCtx ""
    -commandLanguage "mel"
    -command ("pickWalk -d right;\n")
    pickWalk_moveRight;

//ホットキー登録できるネームコマンド登録
nameCommand
    -annotation "pickWalk_moveUpNameCommand"
    -sourceType "mel"
    -command ("pickWalk_moveUp")
    pickWalk_moveUpNameCommand;

nameCommand
    -annotation "pickWalk_moveLeftNameCommand"
    -sourceType "mel"
    -command ("pickWalk_moveLeft")
    pickWalk_moveLeftNameCommand;

nameCommand
    -annotation "pickWalk_moveDownNameCommand"
    -sourceType "mel"
    -command ("pickWalk_moveDown")
    pickWalk_moveDownNameCommand;

nameCommand
    -annotation "pickWalk_moveRightNameCommand"
    -sourceType "mel"
    -command ("pickWalk_moveRight")
    pickWalk_moveRightNameCommand;

//いざ矢印キーにホットキー設定
hotkey -keyShortcut "←" -name ("pickWalk_moveLeftNameCommand");
hotkey -keyShortcut "→" -name ("pickWalk_moveRightNameCommand");
hotkey -keyShortcut "↑" -name ("pickWalk_moveUpNameCommand");
hotkey -keyShortcut "↓" -name ("pickWalk_moveDownNameCommand");

 正常に実行できたら動作を確かめ、問題の無いことを確認してください。
 そのままMayaを正常終了させればホットキーは保存され、次回以降は何もせずとも矢印キーでの階層移動ができるようになります。

Maya2017起動時に空のウインドウが表示され、そのウインドウを消そうとするとフリーズする

概要

 image.png
 この画像のように何も中身のないウインドウが表示され、消そうとするとフリーズし、再起動してもまた出現するという豆腐バグのようなウインドウが出ることがあります。
 泣く泣く設定ファイルを全消ししたり、このウインドウを最小化したまま使った方もいるのではないでしょうか。

詳細

 発生条件はまだ絞り込めていませんが、ワークスペースファイルが破損しているのが原因のようです。
 これは体感ですが、UV Editorを開いたままMayaを終了すると出やすい気がします。

対処法

 image.png
 ワークスペースファイルを初期化すれば直ります。
 上記画像のように、Windows -> Workspaces -> Reset ~~~ を行うことでワークスペースファイルを初期化してください。

さいごに

 当記事はすべて僕個人の経験によるものです。
 直った・直らなかった等の報告や、こんな事に困ってるんだけど…といったものがあれば、
この記事のコメントや僕のTwitter(@leafchina)までご連絡頂ければと思います。