株式会社デジタル・フロンティア-Digital Frontier

Header

Main

  • TOP
  • DF TALK
  • 徒然なるままに #1 [Maya: AttributeEditorをドッキングさせたくない]

徒然なるままに #1 [Maya: AttributeEditorをドッキングさせたくない]

2013/3/25

Tag: ,,,

こんにちはー。開発室のひらく[@horonig]です。

今回ちょっと力を抜いて、簡単なtipsを紹介します。
手抜き記事ではないですよ!ちょっと時間が取れないだけで!(あれ、デジャブ。。?)

 

■MayaでAttributeEditorをドッキングさせない方法

皆さんはAttributeEditorがメインUIに勝手にドッキングされそうになるのをウザい!!と思った事はありませんか?僕はこれが嫌でたまりませんでした。心の底から。井戸の底から貞子を召喚したいくらいに。
要は、AttributeEditorをメインUIの方へ動かすと以下の図のようにグイッとしゃしゃり出てくるのを防止したいわけです。

[mayaがAttributeEditorを一生懸命ドッキングしようとしている図]

点線とか出して受け入れ可能な感じを演出しちゃってます

maya2011からUIにQtを採用したことでこのウザいドッキングの仕組みが始まったわけですが、AttributeEditorまでドッキングせんでもええやん。。と夜な夜な思ったものです。「俺のMultiListerを返せ…!」と枕を濡らした夜もありましたが、それはまた別のお話。

実は以前、AttributeEditorをドッキングさせないで済む方法が無いかautodesk様に確認した事があります(正確に言うと、確認したの僕じゃないんですけどw)。したら意外とすんなり方法論が出てきたので、その内容をお伝えしてしまいます。
こういう情報はシェアしてみんなで幸せにならないとね^^^

今回説明する方法は、PyQt もしくは PySide が使える環境である事を前提としております。
その環境が無い方は地団太を踏んで下さい。
否、どこかに落ちてる PySidePyQt を使えるように配置&設定を行ってから実践して下さい。

 
方法は簡単です。以下のダウンロードファイルに含まれる userSetup.py を、PYTHONPATH が通ってるパスに置いてmayaを起動するだけです。
ダウンロード

PYTHONPATH が良く分からない方は、
C:\Users\USERNAME\Documents\maya\scripts で大丈夫です。
※PyQt版とPySide版では内容が違いますので、ご自身の環境に合わてご使用下さい

コードはこんな感じになってます。

[PyQt版]

def attrEdit():
    import maya.mel as mel
    import maya.OpenMayaUI as OpenMayaUI
    import sip
    import PyQt4.QtGui, PyQt4.QtCore
    ae = mel.eval('getUIComponentDockControl("Attribute Editor", false);')
    aeWidgetPtr = OpenMayaUI.MQtUtil.findControl(ae)
    aeWidget = sip.wrapinstance(long(aeWidgetPtr), PyQt4.QtCore.QObject)
    aeWidget.setAllowedAreas(PyQt4.QtCore.Qt.NoDockWidgetArea)

import maya.cmds as cmds
cmds.evalDeferred( attrEdit )

 
[PySide版]

def attrEdit():
    import maya.mel as mel
    import maya.OpenMayaUI as OpenMayaUI
    import PySide.shiboken as shiboken
    import PySide.QtGui, PySide.QtCore
    ae = mel.eval('getUIComponentDockControl("Attribute Editor", false);')
    aeWidgetPtr = OpenMayaUI.MQtUtil.findControl(ae)
    aeWidget = shiboken.wrapInstance(long(aeWidgetPtr), PySide.QtGui.QDockWidget)
    aeWidget.setAllowedAreas(PySide.QtCore.Qt.NoDockWidgetArea)

import maya.cmds as cmds
cmds.evalDeferred( attrEdit )

 
attrEdit(関数)の部分は読むとなんとなく分かるかと思います。
要は、AttributeEditorをドッキングさせないよう再設定しちゃってるわけです(そのまんま…)。

それよりこのコードのキモは、evalDeferred でしょうか。
userSetup.py はmaya起動時に走るわけですが、mayaの設定(スタートアップ)がまだ終わってないタイミングでこのスクリプトが走ってしまうと、「必要なprocedureが足りない」というエラーが出ます。ところがこの evalDeferred を用いる事でこの問題は解決します。evalDeferred は「mayaが暇になったら実行する」という意味合いの関数なので、mayaの設定(スタートアップ)が諸々終わったタイミングで実行してくれる、という事になるわけです。便利ですね~。

結果、AttributeEditorのドッキングが出来なくなれば成功です。

一度これをやってしまうとAttributeEditorのドッキングは常に不可能となるので、再びドッキング可能にしたい場合は userSetup.py の中身を書き換えるか、削除しちゃって下さい。
 

■甘味紹介 #1 [スフレパンケーキ at 星乃珈琲]

DF_talkのネタとして(何故か)甘味情報も載せて欲しいという要望が寄せられたので、今後は「お勧めの甘味」や「これは!と思った甘味」なんかも載せていこうかなと思います。

というわけで、今回はその第一弾!

渋谷で食べた甘味で何がパンチ力あったかなーと思って思い出したのがパンケーキ。
渋谷にもあるわけですよ。でっかいパンケーキを食べさせるお店が。

それがこちら↓

『星乃珈琲 109 MEN’S店』 の スフレパンケーキダブル!!

アップしたまんまだとデカイなwwww まいっかwwwww

総評としては何というかこう。。とにかくパンチ力があって美味かったです!w
珈琲も旨くてパンケーキに良く合います。

『星乃珈琲 109 MEN’S店』
http://tabelog.com/tokyo/A1303/A130301/13130132/

脳の疲れには甘味が一番なので、CGに疲れた人は是非行ってみて下さい!
てかこんな雑な記事で良いのだろうか。。

…ではまた!!

Pocket

コメント

コメントはありません

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*