MayaScript Python – melで作られたUIの値をPythonで変更する方法

melで作成されたエクスポートウィンドウなんかの値を変えたい時はありませんか?
ゲームCGの仕事をしていると、良くあります。多分。
毎回決まったことを入力するだけですが、シーン名やノード名を取ってくることがあります。
直接そのコマンドにアクセスできれば良いのですが、そうも行かない時はエクスポートのウィンドウに入れるべきテキストをスクリプトで入れてしまいます。
で、そのスクリプトがmelで書かれている場合、どうすればPythonで取得できるかという方法です。
オブジェクトに名前が設定されている場合は簡単です。
エクスポートウィンドウを開き、

import pymel.core as pm

textF = pm.textField("test",e=1)
textF.setText("TEST")

とやってしまうと、簡単に変更可能です。
問題なのは、オブジェクト名が設定されておらず、変数に入っている場合です。
調べてみるとMayaのマニュアルにありました。

import pymel.core as pm

temp = pm.mel.eval("$temp = $test")
textF = pm.textField(temp,e=1)
textF.setText("TEST")

この場合melの変数「$test」に変更したいUIオブジェクトが入っています。
それをmel上で「$temp」などの適当な名前の変数に入れてしまいます。
更にそれを「temp」(名前は適当)というPythonの変数に入れて使うそうです。
なるほどこれは便利だ。

 

最近は今更ながらにPySideをやっております。
日本語はおろか、英語のドキュメントも少ない、、
しかしその威力は絶大だ。

 

どうすればよりプログラムの理解が深まるのだろうか。と考えておりましたが、
ある程度まで来たらUIの勉強をするのが良い。そんな事を発見しました。
PyQtやPySideに比べるとMayaコマンドのUIはおもちゃのように見えてくる。
でも手軽で良い。

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です