MayaScripts_SelectFromAnimCurve:アニメーションカーブの接続先を取得
アニメーション作業中にたくさんのノードを選択して、グラフエディタ上にアニメーションカーブを表示させることってありませんか?
例えば、シーン上の全てのリグを選択し、領域ツールやリタイムツールでアニメーションのテンポ調整を行ったり・・・。
そんなとき「あれ・・・なんだこのキー?」みたいなことありません?
該当のキーを選択し、一抹の思いをのせてフォーカス(Fキー)を押すのですが、残念ながらグラフエディタのアトリビュートリストはフォーカスに対応していません。 カーブエディタ側でアニメーションカーブの名前を表示させれば、その名前から何に接続されたカーブなのか予測できるでしょうが、めんどくさい。
なので、解決する為の小スクリプトを制作しました。
SelectFromAnimCurve
単純に選択されたキーからアニメーションカーブを取得、そのDistination側の接続を辿り・・・出力されたノードをセレクションリストに置き換えるので、何に接続されたアニメーションカーブのキーなのか直ぐに分かるよってだけの内容です。
以下、ソースコード
# encoding=utf8 # -*- coding:uft-8 -*- import pymel.core as pm NAME = "SelectFromAnimCurve" VERSION = "1.0" print "\n-*- import : " + NAME + VERSION + "-*-" def __getSelectAnimCurves (): """グラフエディタで選択されているAnimCurveを取得""" result = list() selection = pm.keyframe(q = True, sl = True, n = True) for name in selection: animCurve = pm.nodetypes.AnimCurve(name) result.append(animCurve) return result def __getAnimCurveConnections (animCurves): """AnimCurveの接続先を取得""" result = list() for curve in animCurves: nodes = curve.connections(s = False) result.extend(nodes) return result def main (): """グラフエディタで選択されているカーブの対象ノードを選択""" animCurve = __getSelectAnimCurves() pm.select(__getAnimCurveConnections(animCurve))
上記を「SelectFromAnimCurve」とか適当な名前のPythonファイルに保存して、以下の場所に配置してください。
C:\Users\"ユーザー名"\Documents\maya\scripts
■ 使い方
以下のコードをシェルフなり、ホットキーなりに登録してください。
import SelectFromAnimCurve
SelectFromAnimCurve.main()
登録したら、接続先を知りたいアニメーションカーブ上のキーを選択して、実行。
次の瞬間には接続先のノードがセレクションリストに加わっているはずです。
こんなもん、いちいち作らんでもMaya側に既存の機能があるぞって時は是非声(コメント)を出して教えてください。