【Mayaあるある】ウィンドウが出てこない画面外で触れない


アイコンやメニューやMELを実行しても出てくるはずのウィンドウが出てこない時の解決方法です。
作業環境が変わった場合など、大体の原因は画面外にはみ出ていて戻せないものだと思いますが、知っている解決方法をまとめておきます。
まず Maya本体ウィンドウ、
次に Maya内のウィンドウの話をしています。
・Windowsキー
・設定の初期化
・ウィンドウ移動スクリプト
お好きな方法をお試しください。
Maya本体
まずは、Maya本体が画面外の話です。
Windows + ←キー
windowsのみ
Mayaを起動してもMaya本体が出てこない場合、
画面外にあることが原因なことがほとんど太と思います。
そのときは、Windows11の機能を利用して、キーボードの
Windowsキー + ← or → を連打
でディスプレイ間を移動することができます。

これで画面内に持ってこれる場合もありますが、来ない場合は、
Windows画面にあるMaya以外のウィンドウを適当に選択します。

Windowsキー + ← を押します。

選択したウィンドウが左半分に配置され、
右半分にはどれを配置しるか一覧が表示されるので、

Mayaを選択すると…

右半分にMaya本体が表示されます。

ウィンドウが触れるようになります。

Windows + ←キー がうまくいかない場合
Windowsキー+矢印で、Maya本体をもってくることが出来ない場合、
必ずMayaを終了させてから
日本語ver
ドキュメント > maya > 2020(等mayaバージョン) > prefs
英語ver
ドキュメント > maya > 2020(等mayaバージョン) > ja_jp > prefs
フォルダ内の
windowPrefs.mel を削除することで、ウィンドウの位置をリセットできます。

※Mayaを終了するときに生成されるファイルなので、Mayaが立ち上がってない状態で消してください。
Maya内のウィンドウ
ここからは、Maya内に表示されるウィンドウのお話です。
Windowsキー + ← or →
windowsのみ
Maya本体同じように、キーボードの
Windowsキー + ← or → を連打
で持ってこれる可能性があります。

アクティブウィンドウに対して有効なので、
機能をクリックした後、他を触らずすぐに連打してみてください。
ワークスペースリセット
Maya2017~
右上のワークスペース(Workspace)メニュー > 現在のワークスペースをリセット(Reset Current Workspace)

今までまデュアル(マルチ)ディスプレイ環境だったのが、シングル環境になってしまったとき等、
座標情報自体は残っており、存在しないディスプレイの座標に表示されてしまっている可能性が高いので、この方法で座標をリセットできるかもです。
ツールを使って呼び戻す
Maya内のウィンドウを引き寄せるスクリプトを書きました。
画面外にあるウィンドウも持ってこれるはずです。

こちらの中身をコピペしてください。
global proc AriWindowPositionReset_Reset(){
string $windowList[] = `lsUI -typ "window"`;
string $dockControlList[] =`lsUI -typ "dockControl"`;
print("\ndock--------------------\n\n");
for($dock in $dockControlList){
if(!`dockControl -ex $dock`){
continue;
}
dockControl -e -fl false $dock;
}
int $xy[2];
for($win in $windowList){
if($win == "MayaWindow"){
$xy = `window -q -tlc $win`;
break;
}
}
for($win in $windowList){
if(!`window -ex $win`){
continue;
}
if($win != "MayaWindow" && $win != "learningMoviesLaunchWnd" && $win != "ColorEditor"
&& $win != "CommandWindow" && $win != "gozwin" && $win != "nexFloatWindow" && $win != "AriCompactToolSettingsWindow" ){
window -e -tlc $xy[0] $xy[1] $win;
}
else{
}
}
}
global proc AriWindowPositionReset_ResetGO(string $ui){
print ($ui+"\n");
int $winPos[] = `window -q -tlc AriWindowPositionReset`;
int $winWidth = `window -q -w AriWindowPositionReset`;
int $movePos[];
$movePos[0] = ($winPos[0]);
$movePos[1] = ($winPos[1] + $winWidth + 10);
if(`exists("workspaceControl")`){
if(`workspaceControlState -ex $ui`){
if(`workspaceControl -ex $ui`){
workspaceControlState -e -tlc ($movePos[0]+30) $movePos[1] $ui;
workspaceControl -e -fl true $ui;
return;
}
}
}
if(`window -ex $ui`){
window -e -tlc $movePos[0] $movePos[1] $ui;
}
}
proc AriWindowPositionReset_row(string $ui){
string $label = $ui;
if(`window -ex $ui`){
$label = `window -q -title $ui`;
}
if(`dockControl -ex $ui`){
$label = `dockControl -q -l $ui`;
}
if(`exists("workspaceControl")`){
if(`workspaceControl -ex $ui`){
$label = `workspaceControl -q -label $ui`;
}
}
string $row = `rowLayout -nc 2 -adj 1`;
textField -text $label -ed false;
button -l "Reset" -c ("AriWindowPositionReset_ResetGO(\""+ $ui +"\")");
setParent..;
}
global proc AriWindowPositionReset_Reload(){
global string $AriWindowPositionResetW_SL;
global string $AriWindowPositionResetW_CL;
string $processedUI[];
int $processCount = 0;
string $windowList[] =`lsUI -typ "window"`;
string $dockControlList[] =`lsUI -typ "dockControl"`;
string $dumpWidgetsList[] =`lsUI -dw`;
deleteUI $AriWindowPositionResetW_CL;
$AriWindowPositionResetW_CL = `columnLayout -adj true -p $AriWindowPositionResetW_SL`;
if(`exists("workspaceControl")`){
for($dumpWidgets in $dumpWidgetsList){
if(`workspaceControl -ex $dumpWidgets`){
if(`workspaceControl -q -fl $dumpWidgets`){
AriWindowPositionReset_row($dumpWidgets);
$processedUI[$processCount] = $dumpWidgets;
$processCount++;
}
}
}
}
separator;
for($window in $windowList){
if(stringArrayContains($window,$processedUI))continue;
if(`window -ex $window`){
if($window != "MayaWindow" && $window != "AriWindowPositionReset"){
AriWindowPositionReset_row($window);
$processedUI[$processCount] = $window;
$processCount++;
}
}
}
separator;
for($dockControl in $dockControlList){
if(`dockControl -ex $dockControl`){
if(`dockControl -q -fl $dockControl`){
AriWindowPositionReset_row($dockControl);
}
}
}
setParent..;
}
global proc AriWindowPositionReset(){
global string $AriWindowPositionResetW_SL;
global string $AriWindowPositionResetW_CL;
int $xy[2] = {0, 0};
if(`window -ex "MayaWindow"`){
int $getXY[] = `window -q -tlc MayaWindow`;
$xy[0] = $getXY[0]+10;
$xy[1] = $getXY[1]+10;
}
print ("MayaWindow "+$xy[0]+","+$xy[1]+ "\n\n");
if((`window -ex AriWindowPositionReset`)==true)deleteUI AriWindowPositionReset;
window -tlb true -title "AriWindowPositionReset" -w 300 -h 400 AriWindowPositionReset;
string $form = `formLayout`;
$AriWindowPositionResetW_SL = `scrollLayout -cr true`;
$AriWindowPositionResetW_CL = `columnLayout`;
setParent..;
setParent..;
string $button = `button -l "Reload" -c "AriWindowPositionReset_Reload()"`;
formLayout -e
-af $button "left" 0
-af $button "right" 0
-af $button "bottom" 0
-ac $AriWindowPositionResetW_SL "bottom" 0 $button
-af $AriWindowPositionResetW_SL "top" 0
-af $AriWindowPositionResetW_SL "left" 0
-af $AriWindowPositionResetW_SL "right" 0
$form;
showWindow;
window -e -tlc $xy[0] $xy[1] AriWindowPositionReset;
AriWindowPositionReset_Reload();
}
AriWindowPositionReset
ここにペーストしたらEnterキーです。

何度も使いそうだなと思ったら、こちらからスクリプトファイルをダウンロード下さい。
【MEL更新】ウィンドウの位置をリセット 新Mayaに対応
Maya自体の設定をリセット
上記で戻せない場合、何らかのエラーの可能性もありますので、Mayaをリセットするしかないかもしれません。
こちらを参照ください。
【Mayaあるある】Mayaを初期設定に戻したい
全てリセットは嫌だと思うので、最低限のリセット方法なども書いてあります。
スクリプトの実行方法を確かめる
特定のスクリプトのウィンドウが出ない場合は、こちらを確認ください。
【Mayaあるある】MELスクリプトが実行できない
そもそもウィンドウが出ないスクリプトもあるので、そちらはスクリプト自体のマニュアルを確認ください。
つぶやき
リモートワークのせいか最近聞かれること多かったのでまとめました。
スポンサーリンク