グラフエディタTRS表示フィルタサイクル~~~~ん。
Maya さまのスクリプト。書きたてホヤホヤ。ダッさいスクリプトでごめんなさい。こんなんしか書けないの。 下の方にダウンロードリンクがあります。
いや、もともとは、エイム付きカメラで作業しているときに、グラフエディタで、必要のない回転の値とかを無駄にたくさん表示しやがるので、ごちゃごちゃして見づらくてしょうがない。
やむなくグラフエディタ内で Show > Select Attributes... で表示させるものをフィルタしていたんですが、これも面倒じゃないですか。 せめて、ホットキー1つとかボタン一つで、フィルタを次々にサイクルさせられれば、ちょっとはいいかな~という程度の考えで、書いてみただけです。本当に便利かどうかは運用してみないと分からない。 全然便利じゃないかもしれない。 やってみるしかない。
起動すると、シーンのトップ階層に、graphEditorVisibleAttributes というトランスフォームノードを作ります。この中に TRS という名前のカスタムアトリビュートがあって、その値を見て、サイクルをしています。 実行するたびにこの値が加算されて、その値によって表示するアトリビュートを変えるということです。 このようにトランスフォームノードなんかを置いて現在の値を保持するって、なんかダサいでしょうか? もっとスマートなやり方ないでしょうかね?
ただの python スクリプトです。シェルフなりどこかに登録して使えばいいと思います。俺はホットキーにするかな。
便利にしたいんだよなあグラフエディタ
どなたかダウンロードして試してみてもらえませんか
ダウンロードはこちらから
# -*- coding: utf-8 -*-
#
# グラフエディタ TRS 表示フィルタサイクル~~~~ん ver1.0
#
# グラフエディタの TRS の表示オンオフを、フィルタなし、pos のみ、rotのみ、scl のみ の4つでサイクル
import pymel.core as pm
import maya.mel as mel
import sys
def toggleVisibleAttribute( TRSName, flag, ge ):
mel.eval( "filterUISelectAttributesCheckbox " + TRSName + "X " + str(flag) + " " + ge + ";" )
mel.eval( "filterUISelectAttributesCheckbox " + TRSName + "Y " + str(flag) + " " + ge + ";" )
mel.eval( "filterUISelectAttributesCheckbox " + TRSName + "Z " + str(flag) + " " + ge + ";" )
##############
groupNodeName = "graphEditorVisibleAttributes"
groupNode = pm.ls( groupNodeName )
if not groupNode :
#print( "creating." )
groupNode = mc.group( empty=True, name=groupNodeName )
pm.addAttr( groupNode, longName="GE_TRS_Visible", attributeType='long', min=0, max=3, defaultValue=0 )
pm.setAttr( groupNode + ".GE_TRS_Visible", e=1, keyable=1)
else : groupNode = groupNode[0]
TRS_Visible = pm.getAttr( groupNode + ".GE_TRS_Visible" )
#print( "TRS_Visible = " + str(TRS_Visible) )
TRS_Visible += 1
if TRS_Visible == 4 : TRS_Visible = 0
##############
fuckinGraphEditors = pm.getPanel(scriptType="graphEditor")
for item in fuckinGraphEditors:
ge = str(item) + "OutlineEd"
if TRS_Visible == 0 :
toggleVisibleAttribute( "translate", 0, ge )
toggleVisibleAttribute( "rotate", 0, ge )
toggleVisibleAttribute( "scale", 0, ge )
msg = u"TRS 全部表示 (/・ω・)/ グラフエディタ~"
elif TRS_Visible == 1 :
toggleVisibleAttribute( "translate", 1, ge )
toggleVisibleAttribute( "rotate", 0, ge )
toggleVisibleAttribute( "scale", 0, ge )
msg = u"pos のみ表示 (/・ω・)/ グラフエディタ~"
elif TRS_Visible == 2 :
toggleVisibleAttribute( "translate", 0, ge )
toggleVisibleAttribute( "rotate", 1, ge )
toggleVisibleAttribute( "scale", 0, ge )
msg = u"rot のみ表示 (/・ω・)/ グラフエディタ~"
elif TRS_Visible == 3 :
toggleVisibleAttribute( "translate", 0, ge )
toggleVisibleAttribute( "rotate", 0, ge )
toggleVisibleAttribute( "scale", 1, ge )
msg = u"scl のみ表示 (/・ω・)/ グラフエディタ~"
pm.setAttr( groupNode + ".GE_TRS_Visible", TRS_Visible )
sys.stdout.write( msg + "\n" )
pm.inViewMessage( amg= msg, pos='topCenter', fade=True, fadeStayTime=900, fadeInTime=50, fadeOutTime=200 )
.
最近のコメント