こんにちはRhinoです。
思い切ってブログを始めてみました!
最初に何を書こうかと迷ったのですが、 Wireframe on Shaded というメニューをよく使われないですか?
使われる場合は皆さん、どうされていらっしゃいますか?メニューから選択されてますか?
逐一メニューを選択して表示を切り替えるのは面倒ではありませんか?
今回はこの作業をPythonを使って簡略化してみたいと思います。
とりあえずこんな感じに書いてみました。
数行の短いコードですが、訳わからない感じでしょうか?大丈夫!解説しますね。
# -*- coding: utf-8 -*-
import maya.cmds as cmds
currentPanel = cmds.getPanel( wf =True )
panelType = cmds.getPanel( to=currentPanel )
if( panelType == "modelPanel" ):
state = cmds.modelEditor( currentPanel, q=True, wos=True )
if( state == True ):
cmds.modelEditor( currentPanel, e=True, wos=False )
else:
cmds.modelEditor( currentPanel, e=True, wos=True )
解説
最初の1行目は文字コードでutf-8を使いますよって指定しています。
ぶっちゃけなくても今はなくてもいいかも。
# -*- coding: utf-8 -*-
次の行はmayaでpythonを使うときに重要です。
scriptと言っても全部が全部自分で書くわけではなく、予めある程度の機能が既に用意されているんですね。それをインポートしてcmdsって名前で使いますんで宜しくってことです。
- importでmaya.cmds(予め用意されているmayaの機能)を読み込むます
- asで読み込んだmaya.cmdsをcmdsという名前で以降は使用しますしています
import maya.cmds as cmds
いよいよ本題です。
ワイヤーフレームをモデルの上に表示させるにしても、どのパネルで表示したらいいのかはっきりさせないといけません。パネルというのはパースビューやフロントビューといったものからスクリプトエディタといったものまで色々ありますので、今回は以下のような流れでパネルを取得してます。
- 現在アクティブのパネルを取得
- 取得したパネルは果たしてWireframeOnShadedを使用して良いパネルなのか判別
そこでgetPanelというMayaで用意されている関数を使って今アクティブのパネルと
パネルのタイプが何なのかを調べてみます。
getPanelの次に書かれているものに注目して下さい。
Mayaのヘルプによればそれぞれ次のように書かれていますね。使えそうです。
- wf
現在、フォーカスのあるパネル名を返します - to
指定したパネルのタイプを返します。
currentPanel = cmds.getPanel( wf =True )
panelType = cmds.getPanel( to=currentPanel )
次に取得したパネルのタイプがmodelPanelというものでなければ、ワイヤーフレーム表示ができませんので、if文で分岐させます。
スクリプトエディターのパネルにはワイヤーフレーム表示なんて機能ありませんものね。
if( panelType == "modelPanel" ):
もうちょっとですね。
今度は今既にワイヤーフレーム表示されているかどうかの状態を取得します。
今ワイヤーフレームが表示されていればオフにし、表示されいなければオンという切り替えを
したい為です。
modelEditorという関数を使って今表示されいるのかどうかの状態を取得できます。
state = cmds.modelEditor( currentPanel, q=True, wos=True )
さあ、いよいよ最後です。
あとはワイヤーフレームが表示されいればオフに、表示されていなければオンにという
if文を使った分岐をしてあげれば完成です。
if( state == True ):
cmds.modelEditor( currentPanel, e=True, wos=False )
else:
cmds.modelEditor( currentPanel, e=True, wos=True )
いかがでしたでしょうか?
シェルフやホットキーに登録して頂ければ、ワンボタンで切り替えができて便利ですよ。
ちょっとこれだけでは説明不足の部分が多々あったかと思いますが、最後までお付き合い頂きありがとうございました。
今後はこんな感じで自分が普段使っているTipsやスクリプトなどを簡単な解説なども踏まえて公開していけたらなあと思いますので、では次回!!
コメント