【Maya/Python】modelPanelの上部にあるボタンをスクリプトから切り替えてみよう

これは Maya Advent Calendar 2020 の23日目の記事です。

 

明日は ti_ni_ta さんです。

 

 

今回は少し前に modelPanel の上部にあるボタンの1つをスクリプトから切り替えたいと思った時に、

1つ調べたら他のボタンもまとめて方法が分かったので備忘録的に書いておきます。

 

 (処理している mel が分かれば、mel バージョンはそこに全部書いてあるレベルの記事です)

 

 

このメニューの処理は

C:/Program Files/Autodesk/Mayaバージョン/scripts/others/updateModelPanelBar.mel

に書かれています。

これは スクリプトエディターのヒストリ > すべてのコマンドのエコー をONにした状態で、

例えば上記画像でいう24番のMSAAボタンを切り替えると、

 

modelPanelBarShadingOptionsCallback("MSAABtn", "MainPane|viewPanes|modelPanel4|modelPanel4|modelEditorTabLayout|modelPanel4", "MainPane|viewPanes|modelPanel4|modelPanel4|modelEditorIconBar"); restoreLastPanelWithFocus();
updateModelPanelBarV2Settings;

 

こんな感じで表示され、ここで使われている modelPanelBarShadingOptionsCallback() プロシージャを

 

whatIs modelPanelBarShadingOptionsCallback

 

mel の whatIs で調べてみると、updateModelPanelBar.mel の中のプロシージャだということが分かります。

 

では、上記の画像の各ボタンの順に、

スクリプトから処理を実行 or ONOFFを切り替える 方法を書いていきます。

 

※下記のスクリプト内では mc.getPanel(type="modelPanel") で全 modelPanel を取得して、

全部に適用する処理をしているので、アクティブな modelPanel だけに適用したい場合は、例えば

 

activePanel   = mc.getPanel(withFocus=True)
modelPanels = mc.getPanel(type="modelPanel")

# もし activePanel が modelPanels に入っていれば( = modelPanel ならば)

if activePanel in modelPanels:

    cam = mc.modelEditor(activePanel, q=True, camera=True)

 

のような感じで行えばいいかと思います。

(typeフラグとwithFocusフラグが同時に指定できたら、一発なんですが…)