« 2019年2月 | トップページ | 2019年8月 »

2019年4月

2019年4月 6日 (土)

グラフエディタTRS表示フィルタサイクル~~~~ん。



Maya さまのスクリプト。書きたてホヤホヤ。ダッさいスクリプトでごめんなさい。こんなんしか書けないの。 下の方にダウンロードリンクがあります。


いや、もともとは、エイム付きカメラで作業しているときに、グラフエディタで、必要のない回転の値とかを無駄にたくさん表示しやがるので、ごちゃごちゃして見づらくてしょうがない。



やむなくグラフエディタ内で Show > Select Attributes... で表示させるものをフィルタしていたんですが、これも面倒じゃないですか。 せめて、ホットキー1つとかボタン一つで、フィルタを次々にサイクルさせられれば、ちょっとはいいかな~という程度の考えで、書いてみただけです。本当に便利かどうかは運用してみないと分からない。 全然便利じゃないかもしれない。 やってみるしかない。


 Getrsfiltercycloooon_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 )

 

 

.





| | コメント (0)

« 2019年2月 | トップページ | 2019年8月 »