FC2ブログ

myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

Maya | AutoKeyFrame Color

元々Mayaユーザーのデザイナーは今の案件の都合によってSoftimageを使っています。 Softimageユーザとして少しアドバイスしたりしていて、キャラクターのポーズを付ける時にオートキーフレームにした方が楽かもよーと教えたら、Softimageの画面のフチが赤くなったことに驚きました。 これは分かりやすいですね!
Mayaだとオートキーが付いているのを忘れて、色々失敗してしまいますね。

そっか、Mayaにはないですね。こういう目印。
Softimage 2011 か 2012 までもそうだったから、良く分かります。オートキーに気付かずにキーを打ちまくるからなるべくオートキーは使わないようにしていました。

で、Mayaでもなんとか出来ないかなと考え、このやり方を思い出した。

Maya | UIの色変更

これをイベントにすればなんとかなるじゃん!
と思ったけど、実行してみると、エラーが出ました。

そっか、Maya 2017 はPySide2だね・・・。そんな簡単には行かないか。

2、3ヶ月程前に社内ツールを2017に変換しようとして色々試していて、何日も掛けても失敗し続けていた絶望的な時に出会えた神モジュールがあります。

Qt.pyです。

なんとなくUIを作っているだけで、正直PySideとか良く理解していないですw

それでも、これを使えばなんとかなるんじゃない?と思いながら色々やってみて、ネットでサンプルを探してみたら、出来ました!
これで2015,16,17,18 は同じコードで動きます! (16と17でしか試していないけど)

Qt.py、すばらしい。

MayaColor2.gif

コードはこんな感じです。

#Python
from Qt import QtWidgets
from maya import cmds

class autoKeyFrameColor():
def __init__(self):
cmds.scriptJob(conditionTrue=['autoKeyframeState', self.changeMenuStyleSheetRed] )
cmds.scriptJob(conditionFalse=['autoKeyframeState', self.changeMenuStyleSheetDefault] )

def changeMenuStyleSheetRed(self):
QtWidgets.QApplication.instance().setStyleSheet("QMenuBar {background: rgb( 155, 10, 10 );}")

def changeMenuStyleSheetDefault(self):
QtWidgets.QApplication.instance().setStyleSheet("")


このモジュールを読み込んで、クラスを実行すれば良いだけです。

例:
autoKeyFrameColor.py というファイルに保存して、このファイルをMayaのScriptsフォルダに入れます。

Mayaの「userSetup.py」に

import autoKeyFrameColor
autoKeyFrameColor.autoKeyFrameColor()


を書いておけば、Mayaが立ち上がるたびにこのイベントが登録されます。
これだけで、オートキーがONと感知したら、メニューの色を赤にしてくれる。OFFにすると、元に戻してくれる。

もちろん Qt.py ファイルを Scripts フォルダに入れないと動かないですよ。


Qt.py の開発者の皆さん、ありがとうございます!
スポンサーサイト



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://myara.blog.fc2.com/tb.php/222-1ef4a931
この記事にトラックバックする(FC2ブログユーザー)