2019年8月24日 (土)

HUD にアニメーションレイヤ。

突然スクリプト。

 

HUDに現在アクティブなアニメーションレイヤを表示させるテスト

 

 

-------------------------


import pymel.core as pm

def getSelectedAnimLayer():
    return ( pm.treeView ("AnimLayerTabanimLayerEditor", q=True, selectItem=True) )

if pm.headsUpDisplay( "SelectedAnimLayer",q=1, ex=1 ) == True:
    pm.headsUpDisplay( "SelectedAnimLayer",e=1, remove=1 )

else : pm.headsUpDisplay( "SelectedAnimLayer", section=1, block=0, label='anim Layer:', command=getSelectedAnimLayer,event='SelectionChanged', nodeChanges='attributeChange' )

-------------------------

Animl

スクリプトを走らせるごとに、HUD に現在アクティブなアニメーションレイヤの表示をオンオフします。

表示は、オブジェクト選択に変化があったとき(=他のオブジェクトを選んだり、何も選んでいない状態に変わったりしたとき)にアップデートされます。

 

逆に言うと、アクティブなアニメーションレイヤが変わっても、選択しているオブジェクトが変わらない限り、表示に変更はありません。

 

ううむ、これでは不便ではないか。 むしろ、アクティブなアニメーションレイヤが変わった時にアップデートして欲しい。 

 

event というフラグが、現在は SelectionChanged になっているのですが、ここを何かに変えればいいのかな。でも何に変えればいいのか、まだ調べ切れていません。どなたか教えて下さい。

 

 

 

 

.

| | コメント (0)

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月14日 (木)

ホイールスクロールでズームすんな。

.




前にオフにしたような気になっていたんだけど、新しいバージョンの Maya さまでまたオンになっていたようで、設定の場所を忘れていたのでメモ。



アレですよ、マウスホイールでカメラがズームとかドリーとか。

間違って動かしちゃうんで、俺は嫌いなんですよね~



で、オフにする設定は、Preferences > Interface の中でした。

Fuckmousescroll

ここをオフにすれば、めでたく、ホイールは反応しなくなる。

これでいいのだ。



ちなみに、ここでオフにしても、ビュー上でのカメラズーム/ドリーが反応しなくなるというだけで、アウトライナではちゃんとホイールでスクロールできますね。 これは良いですね。 珍しく気が利くじゃないですか Maya さま。


グラフエディタでは、上記設定の影響アリです。 つまりオンならズームできるし、オフならズームできない。 個人的にはアウトライナもホイールでズームして欲しくないので、これでいいかな。


ハイパーグラフでも影響アリですね。 オンならズームできる。オフならできない。 うーん、これはどっちがいいかな。 どっちでもいいや。 まあ、ホイールでのズームはほとんどしないな。



ノードエディタは・・・・・・

あっ・・・・・

ノードエディタでは、上記設定オンオフに関係なく、ホイールズームはできないようですwwww   

どのみちできねえのかよw  なんでだよww   ノードエディタにもホイールズーム機能付けてやれよ Maya さまwww




あーー、ハイパーシェードでもダメですねw  設定に関係なくホイールズームできないw   このタイプのノード系のウィンドウはダメなんですかね~




いや~ ほんと、各ウインドウ、全然違う人が開発してるんですかねw ソフトウェアのベースになる部分とか、共有してないのでしょうかねw   何度も言いますが、この徹底的に統一された不統一さ。 さすが Maya さまですね~  もう近日中に消滅して下さい Maya さま。






.





| | コメント (2) | トラックバック (0)

2019年2月 1日 (金)

リファレンスでロックされてていぢれないアトリビュートでもいぢっちゃう。


質問したら速攻解決したので忘れぬうちに速メモ。
安定のこのパターン。

絶対来月くらいには忘れているんだから。
毎回毎回、未来の俺へ向けたマニュアルですよほんと。




で、 Maya さまで、リファレンスで読み込んだデータのアトリビュートがロックされている時に、無理やりロックを解除していぢっちゃう方法。


Preference にそれを可能にする設定がありますた。

Refattr_lockunlock

↑ これをオンにすれば桶よ。
いぢれちゃいますね。

ロック解除も、ロックも、どっちもできる。

アニメーションもいぢれる。

いぢくるぞ~




Huge thanks to もののけさん






.

| | コメント (0) | トラックバック (0)

2019年1月30日 (水)

連番は DJV。

.


Maya さまの、 FCheck っていうんですか?
プレイブラストとかした時に起動される、連番再生ツールね。
アレがなんか嫌いで。
起動が遅いんだよなー
時代遅れ感というか、アップデートする気なさそうな雰囲気が半端ないし


だから俺はいつも DJV_view を使ってます。
これの方が起動が速かったり、もろもろ扱いやすい気がしています。

http://djv.sourceforge.net/


Maya のプレイブラストで起動されるツールに指定するには、Preference で指定してやるだけですね。

Djv


djv_view.exe
を指定して、フラグ %f をつけてやるだけ。

連番に関してはこれで問題なく運用できています。
FCcheck よりずっと好きであります。




このツール、Maya と無関係のただの連番再生ツールとしても使いやすいと思ってます。連番の1枚をドロップするとかダブルクリックするだけで再生が始まります。 ダブルクリックで起動するには拡張子で関連付けが必要ですけどね。

再生速度も簡単に変えられるので、自分でアニメーションをチェックするとき、このアクション遅いかな? と思ったら早回してみるとかね。 もうちょっと遅い方がいいかな、とか思ったら再生速度下げてね。 ちょうどいい感じを見つけたところで現在の再生レートを見ると、元は 30fps のところ 40fps だったから、 30 / 40 = 0.75倍、 つまり 75% の尺になるようにキー間を詰めてあげるとかね。 そういうのよくやってます。



有償の再生ツールとかで良いやついっぱいありそうだけど、まあ、調べるのも面倒で、今のところ無料の djv を何年も使ってます。

あとは XSI の Flipbook も好きですけどね~  Flipbook は大きさのズーム機能がもうちょっと良ければな~



.

| | コメント (0) | トラックバック (0)

2019年1月27日 (日)

ダブルクリックでポリゴンアイランド選択。

知らなかったデス。


XSI で言う 「ポリゴンアイランド」 つまりポリゴンの「島」、 つまり 「地続きに接続されたポリゴン群丸ごと」 のことですが、 Maya でのアイランド選択の方法を知らなかったんデス。  XSI ではそういう選択フィルタがありました。

今までは、とりあえず、ポリゴン1個とか選んで、Select > Grow (ホットキーは ">" つまり shift + . をアイランド丸ごとに達するまで繰り返していました。



これがめんどくさくて、とうとうやってらんなくなって、やっと調べてみたら、フェイスをダブルクリックすれば良かったんですね。 そんだけ。

Polyisland

Shift を押して新たなアイランドをダブルクリックすれば、選択に追加されますね。



近い将来どうせまたこれを忘れてジタバタするはずなので、未来の俺に向けて、メモを残しておく次第でありマス。


この 「ポリゴンアイランド」 って、 Maya では何か呼び方ありますか?  Maya帝國の皆様とお話しするときに通じるよう、 「ポリゴンアイランド」 の Maya 語訳を教えて下さい。





. 


| | コメント (0) | トラックバック (0)

2019年1月25日 (金)

IK ハンドル作成のクリックで激怒。

.


Maya さま。

久しぶりにホネ入れる作業をして、また迷ってしまった。 以前にツイッタで教えてもらったはずだったんだけど、忘れていて、戸惑ってしまった。

Maya さまで、ヂョイントに IK ハンドルを入れる時のクリックの操作についてです。

結論から言うと、ビューポート、ハイパーグラフ、アウトライナ、この3つで同じ IK ハンドル作成のクリック操作が統一されていない。アフォですか Maya さま。 という罵倒記事です。




下の画像のような状態。ヂョイントが3つ。人間の腕とかのヂョイントですね。 ここに IK ハンドルを入れます。

Ikh1

Create IK Handle ツールを起動した後、ビューポート上で、 joint1, joint3 の順にクリックすると、IK ハンドルが現れますよね。 手首をつかんでヒジが曲がるような IK の設定ができました。 はい。 何も問題ないです Maya さま。




ですが、諸般の事情で、ビューポート上ではなく、ハイパーグラフ上でヂョイントをクリックしたい場合もあるんですね。 ヂョイントが混み合っていて、ビューポート上では狙った1つをクリックしづらい時とかですね。



でもね、ハイパーグラフ上で同じ操作をしても、ダメなんですよ。  ツール起動後、 joint1 と joint3 を順にクリックしても、何も起こらないの。




で、教えてもらったのが、ハイパーグラフ上では、2つ目のヂョイントのクリックは、Shift を押しながら行う必要があるということでした。 

Ikh2


1の時は、Shift 押してても、押してなくても、OKです。 2のクリックの時は、Shift 押してないとダメですよ。  なんだかねえ。



ビューポート上では Shift なんて要らないのに、納得いきませんが、まあ仕方ない。 こういうもんだとあきらめましょう。 忘れないようにしないと、また慌ててしまう。







で、ハイパーグラフではなく、アウトライナでこの操作をやりたいことも、当然あるわけですよ。


ってことで、アウトライナ上で同じ操作をやってみます。 ビューポートの時のように普通にクリックじゃダメです。 じゃあハイパーグラフの場合を真似て、Shift を押してクリックしましょう。

Ikh3

あれ?  ツールを起動後、1 をクリックして、次に Shift 押しながら 2 をクリックしたら、普通に複数選択になっちゃったよ?


そうか、アウトライナだから、Shift クリックは、最初のクリックとの間にあるものを全部、複数選択にするのか。 まあ、当たり前と言えば当たり前か。

でもハイパーグラフと操作を統一しようとか思わないの Maya さま? Shift じゃないの? 馬鹿なの?






で、結論を言うと、アウトライナ上では ctrl です。 2のクリック時に、ハイパーグラフとは違って、 ctrl 押しながらクリックしてください。 orz

Ikh4





ビューポート上では、ただのクリック。

ハイパーグラフ上では、Shift + クリック。

アウトライナ上では、ctrl + クリック。



いつも通り、アプリケーション全体で徹底的に統一されたこの不統一さ。

Maya さま。今日死滅して下さい。







覚えておきましょう。
忘れていて今日慌てたので、メモでした。



死滅して下さい。






.

| | コメント (0) | トラックバック (0)

2018年7月17日 (火)

子供を複製すんな。

.





Mayaさまで、子供を持つオブジェクトを複製すると、子供ごと(階層ごと)複製されちゃいますよね?



XSI の場合は、ノード単体で選んでいればそのノードだけが複製され、ブランチ選択されている場合は階層ごと複製されるという、非常に合理的かつ分かり易いものでした。  Maya さまは有無を言わせず階層丸ごと複製してしまうように見える。



子供複製すんなやゴルァ
このオブジェクトだけ複製したいの。
子供は要らないの。
オプションつけろやゴルァ




と思っていたんですが、ツイッタで教えてもらいました。


duplicate コマンドpo オプション(parentOnly)を付けるだけで良かったんですって。 



MEL

duplicate -po
ドキュメント



マジで!

こんな小さいことが、大革命ですよ俺には!

わあ、これもっと早く知りたかったw

ありがとうございます K.Yさん。





さっそくランタイムコマンドにして、ホットキー割り当てました。



でもこれ、なんで標準機能として無いのだろう。 こんな短いスクリプトで済むからまあいいけど、でもスクリプトなんか書かなくても普通にできて欲しいことだと思うんだけどなあ。 Maya な皆さんは、不便じゃないんですか?   Mayaさまを馬鹿にしているとか、ユーザさんに嫌味言っているとかじゃなくて、ほんと正直、単純に、不思議です。 俺の方がおかしいのか。 子供ごと複製する場合の方が圧倒的に多いのか。 いや~ 子供ごと複製したい時と、子供は要らない時と、どっちも同じくらいあるでしょう~  



そんなことないですか。

そうですか。





.

| | コメント (10) | トラックバック (0)

2018年6月28日 (木)

シーンにあるコンストさん全部一気に選択。

.





すいません、そういう機能、標準では存在しないですよね・・・・?

シーンの中にある、コンストレインを全部選択するって。




無いように見えたので、書いてしまったんですが。

↓ ほら、ここにありそうなもんですが、

Selectallcns

無いですよね?




だから書いちゃったんだけど、まあ、どうでもいい短いスクリプトですが。

Python:

# select all constraint nodes in the scene
import pymel.core as pm
pm.select(pm.ls(type="constraint"), r=1); 

こんなんで大丈夫そうですかね。

アレか、アウトライナとかで何かのモードにすると、コンストレインノードだけどわーーーと表示されて、それを一気に Shift 選択するとか、そういうのなら標準機能だけで可能かな? いや、そんなの無いかな? まあいいや。


リグ作業をしてたりすると、コンストレインだけ一気に選択して Set を作りたいとかね、そういう場面があったので、書いたのでした。 どうでもいいスクリプトですね。 

Maya の皆さんは、こういうの、みんな自前でサッと書いちゃうんですよね? 主に MEL で。  各社、各人、それぞれがあまりにもサッと自前で書き過ぎていて、それゆえにおそらくは不満も無く、こういう機能が必要だとかは思わないんですよねえ多分。 俺のようなその方面の能力に長けていない人間は、こんな小さいことで、いちいち苦労してますw





.

| | コメント (5) | トラックバック (0)

2018年5月18日 (金)

こいつのキー全部選択してください。

.





選択中のキーを元に、そのアニメーションカーブにあるキーフレーム全部を選択するというスクリプトであります。



なんてことはない。  コメント除けば実質3行w

でも意外と便利に使ってますよ。



Python:

# -*- coding: utf-8 -*-
#
#    jjjPleaseSelectAllKeysOnThis.py
#    こいつのキー全部選択してください。
#
#    選択中のキーフレーム(複数Fカーブ可)からFカーブ全体を選択するスクリプト

import pymel.core as pm

#    選択中のキーからFカーブ取得
selectedAnimCurves = pm.keyframe( q=True, selected=True, name=True )

#    選択中のFカーブを対象に selectKey コマンドでキーを一網打尽
if len(selectedAnimCurves) != 0 : pm.selectKey( selectedAnimCurves, r=1 )

ダウンロード jjjPleaseSelectAllKeysOnThis.py (0.5K)





Maya さまのグラフエディタは、2017 以降すんげえ良くなったけど、やっぱり使いにくいことには変わりなくてね。

↓ こういう場合めんどくさいといつも感じます

Keysel1

この、Rotate Y のキーだけを、全部イッキに選択したい。 カーブ丸ごとドラッグして値やタイミングを変えたいとか、そういう時ね。

でも、目的のキー全体を囲うようにマウスドラッグすると、 その範囲に入った他のキーまで選択されやがりますよね。

何を当たり前のことを、と思うかも知れませんが、XSI 村ではですね、まずはキーなりFカーブなりを選択すると、次のドラッグではそのFカーブの中からしか選択できなくなってくれるんですよ。

つまり、Y のキーだけ選びたい、とかそういうことがすんげえ楽にできるんです。 いちいちFカーブの表示をオンオフしたり、左側のアウトライナなどにマウスポインタを持っていくことなく、サッと目的のキーのみ選択できるということです。   これがどれだけラクなことなのか想像できないあなたは、生粋のMaya インペリアル人です。




↓ で、やむなく、左側のアウトライナからアニメーションカーブを選択する。

Keysel2

こうすると、そのカーブが単独表示になりますよね。

この状態で、ガッとマウスドラッグして全部のキーを選択してしまう。

そのままいじってもいいけど、やはり、他のアニメーションカーブを見ながら、相対的な値を考慮しながら、いじりたいじゃないですか。 このままだと選択中のアニメーションカーブしか見えてないわけですから。



↓だからやむなく、左側のアウトライナでオブジェクト名をクリックして、全アニメーションカーブを表示復活させます。 

Keysel3

幸いにもこの時にキーの選択状態が変わったりはしないので、めでたく、「全カーブを見ながら、イッキに選択したキー全部をまるごとドラッグできる」 状態になりました。 ふう・・・・。



でもこれ、すんげえめんどくせえじゃないですか。

たったこれだけのことで、いったい何回クリックしたり、マウスをあちこちに動かさなければいけないんですか Maya さま。  支んで下さい Maya さま。





なので、ちょっとでも楽にならないかな、と思って書いてみたのがこのスクリプトです。

まずはキーを選びます。1個でも、いくつでも。 その状態でこのスクリプトを走らせると、そのキーが所属するアニメーションカーブ全体が選択されるというものです。

俺はホットキーに登録して使っています。 左側のアウトライナに手を伸ばさずに済むだけ、楽に感じます。 ホットキー押す手間はあるけど、マウス位置をあんまり動かさなくていいので、ラクだと思いました。





↓ ちなみに、選択を 「キー」 ではなく 「カーブ」 にすれば、カーブあるいはキーに触れた瞬間、アニメーションカーブ丸ごと選択されてくれますね。

Keysel4

これ、Curve の項目にたしかデフォルトで M のホットキーが付いてたんだよな。 でも 2017 だと、なぜかそのホットキーバインドが2重で登録されていて、片方を消さないとホットキーが効かないみたいなアフォな不具合があった気がする・・・。

いちいちこのメニューを出すのはもちろん面倒なので論外ですが、ホットキーさえちゃんと効く状態にしておけば、今回のこのスクリプトなんて使わずとも、ホットキーポンでカーブ選択モードになって、カーブ全体を選択後にまたホットキーでポンと戻せばいいかな、とも思いました。

でも全フレキーだったりすると、カーブとして選ぶのが困難なんだよな。 キーとキーの間の線の部分を狙ってクリックしないといけないからな。 これは論外か。  だから、ホットキーポンで、 Curve がオンかつ Key がオフという状態になればいいのかな。 これはこれでスクリプト書く必要がありますね・・・・・



グラフエディタ、もっと進化しないとですね~
だいぶ良くなったけど、まだまだですね~


俺は人生の大半の時間をグラフエディタの中で過ごしてしまっているので、ここ重要なんです。


やむなくたくさんスクリプト書きますが、Maya さまのキーフレーム系、アニメーションカーブ系のスクリプトって、ほんと書きにくい orz  

Fカーブオブジェクト、Fカーブオブジェクトのコレクション、そこから取得できるFカーブキーオブジェクトおよびコレクション。 こんな風にXSI 村では関連するオブジェクトを芋づる式に取得できたのでそんなに苦でもなかったのですが・・・・・ 


Maya さまの場合、選択中のキーからアトリビュートの名前を文字で取って、それを元に、フレームいくつからフレームいくつまでこれやって下さい、みたいな、そんな書き方なのかな? 全然しっくり来ないんだよなあ。
コマンドも keyFrame とか keyTangent とか selectKey とかに分かれていて分かりにくいし、ゲットもセットも同じコマンドのフラグ違いとか。  取得できるのはキーオブジェクトじゃなくてキー時間のリストだったり。
 
取得したものからメソッドやプロパティを使って連鎖的に何かをする感じがなく、 ぜ~~んぶ文字列とかで情報ゲットして、最後にコマンドに情報全部羅列して食わせてやっと何かできるみたいな?  違うことやろうと思ったら取得のプロセスをルートパスからやり直しているような、なんかそんなイメージがあるんです。 これまた頭から取得すんの?  みたいな。 


・・・・・うーむ、上手く説明できないし、なんかこう、不正確なこと言ってたらすいません。 でもほんと、キーフレーム系、グラフエディタ系はほんと、何度書いてもピンと来ない感じです。 しんどい。


カンニング集みたいなのまとめるしかないな。 考えるのは最初の1回だけで、1か所にまとめてメモしておけば、あとはコピペすりゃいいやみたいなやつ。  いつかそういうのまとめたい。 です。 しんどい。






.

| | コメント (0) | トラックバック (0)

«再生速度トグる~~~ん。