2019年9月18日 (水)

子供ハイライトすんな。


ツイッタで、Mayaさまの Child Highlighting をオフにすると便利、という話を見つけたので。 


ええその通りです。

っていうか 「オフにすると便利~♪」 などという呑気なレベルではありません。
オフにしないと死にます。 すぐ死にます。 今日死にます。 いいですか。 警告しましたよ。 死にます。

っていうか俺じゃなくてあなたが審で下さい Maya さま。



Maya さまのデフォルトだと、親を選択すると、子供・孫・曾孫~と、子孫全員、末代まで全部、選択ハイライト表示にしやがるじゃないですか。 もう、自分がどれを選んでいるんだか、分からなくなるんですよね。



以下の画像のような状態です。

Ch1

アウトライナを見ると分かるように、実際には joint3 と joint7 の2つを選択しているのですが、選択しているもの以下の階層全体がハイライトされるため、実際に何が選択されているのかはビューポート上の見た目では判別できません。 信で下さい Maya さま。





だからこの階層ファッキンハイライト機能を、プリファレンスでオフにしましょう。 という話です。

Ch3

ここで Never highlight に設定すればいいのですね。 もう、ネバーですからね。Don't とかじゃなくて Never ですよ。 ハイライトしちゃダメよ、くらいの軽い設定ではありません。 なにがなんでも絶対にどうやっても永遠にハイライト表示すんな(゚Д゚)ゴルァ ってことですからね。





これでめでたく、選択されているものだけがハイライトされるようになりました。

Ch2

これでいいんですよ Maya さま。 これをデフォルトの状態にした方がいいんじゃないでしょうかね Maya さま。 今では仕組みを理解したし慣れたけしオフにできるからいいけど、Maya さまを使い始めた初期の頃は、ほんとにもう、これがたまらなく使いにくくてね。どれ選んでいるのか分からないんだもん。 これだけのために、CG業界からの引退を真剣に検討しましたよ。





で、さっき気づいたのですが、Use object highlight setting なんて設定もあるんですね。

Ch4

あれえ? こんなの、前からあったっけ? 最近のバージョンで搭載された機能かな。

階層ハイライト機能を、丸ごとオンオフするのではなく、オブジェクトごとの設定に従うというオプションですね。 プリファレンスでこの設定を選んでいる状態で、オブジェクトを Attribute Editor で開き、Display > Selection の所に設定がありました。 これをオフにしておくと、そのオブジェクトのみ、階層ハイライトをオフにするということのようですね。 いじってみたところ、オフにしたオブジェクト以下の階層は、たとえ個別の設定がオンでも、階層ハイライトはされないですね。 つまりこいつをオフにしたら、そいつの子供以降は問答無用で階層ハイライトオフになるってことなのでしょうね。






でもね、階層ハイライトがオンの方が便利な時もあるわけですよ。リグやってる時とか、親子関係を確認したい時とかね。 こいつ、ちゃんとこの階層に入ってるかな、とか確認する時に親を選ぶと、目的のブツがハイライトされるかされないかでその親の階層内にあるかどうか判別できるとかね。 俺、けっこうしょっちゅうオンオフ切り替えます。 だからホットキーにしてます。



でもこれ、デフォルトだとホットキー割り当てられないですよね・・・? ホットキーエディタで探したんだが、見つけられなかった気がする。だからスクリプト書いたんですね。 それをランタイムコマンドにして、ホットキー割り当ててます。 これ、もう何年も前に書いた気がするな。大したものじゃないけど、一応載せておきます。

ダウンロード - kodomoHighlightSunna.py

 

import maya.cmds as mc
import sys
CurrentValue = mc.selectPref( selectionChildHighlightMode=1, q=1 )
NewValue = not( CurrentValue );
mc.selectPref( selectionChildHighlightMode = NewValue )
sys.stdout.write( "Child Highlighting : " + str(not(NewValue)) + "\n" )
mc.inViewMessage( amg= u"Child Highlighting (゚∀゚) : " + str(not(NewValue)), pos='topCenter', fade=True, fadeStayTime=300, fadeInTime=50, fadeOutTime=200 )


スクリプトを走らせるごとに、階層ハイライトをオン/オフでトグルします。

これをラインタイムコマンドにして、ホットキー化するのが良いと思うんですが、まあ、シェルフとかでもいいんじゃないでしょうか。 俺はホットキー化して、かなり頻繁にオンオフ切り替えてます。









こうやって Maya さまを、日々、小さく小さく調教しながら仕事しています。
俺ごとき大した改造もできないし、大げさなツールは書けません。
小さく小さく調教するのです。


っていうか調教されているのが真実だろうな。
歯を食いしばって Maya さまを使うのも、だいぶ慣れたもんな。
俺が調教されたんだな。



でも芯でください Maya さま



.

| | コメント (0)

2019年9月11日 (水)

ディスプレイタイプサイクル~~~ん。

とっさに書いてアップしてみる脊髄反射スクリプト


ディスプレイタイプサイクル~~~ん

ダウンロード - displayTypeCycloooon.py

 



選択中のオブジェクト(複数可)に対して、Drawing Overrides の中の Enable Overrides をオンにし、かつ、DisplayTypeNormal → Template → Reference でサイクルします。

Displaytype_20190911183301

 


#ディスプレイタイプサイクル~~~ん
#オブジェクト(複数可)選択して実行 → Enable Overrides をオンにしつつ、DisplayType を Normal,Template,Reference でサイクル


import pymel.core as pm
import sys

sels = pm.selected()
dispTypeStr = [ "Normal", "Template", "Reference" ]

for obj in sels:
    pm.setAttr( obj + ".overrideEnabled", 1 )
    displayType = pm.getAttr( obj + ".overrideDisplayType" )
    displayType += 1
    if displayType == 3 : displayType = 0
    pm.setAttr( obj + ".overrideDisplayType", displayType )
    
    msg =  u"[ディスプレイタイプサイクル~~ん] " + obj + " : " + dispTypeStr[ displayType ]
    sys.stdout.write( msg  + "\n" )
    pm.inViewMessage( amg = msg, pos='topCenter', fade=True, fadeStayTime=500, fadeInTime=50, fadeOutTime=500 )


 


おれ、Maya さまのディスプレイレイヤ嫌いなんですよね。使いにくいことこの上ないと思ってます。Drawing Overrides 全般を支配しちゃうんだもんな~   

なのでディスプレイレイヤを使わずに、普通にノード個別単位で Drawing Overrides をいじりたいことも多いんですけどね、でも Attribute Editor でいじるの、超絶ダルいじゃないですか。 Attribute Editor も嫌いなんですよ。 なんだこのクソUIは。 だからスクリプト書いた。 

やりたいのは、とりあえずは 「選択可・不可を切り替えたい」 だけなので、Normal(選択可)、Template(常にワイヤ表示?かつ選択不可)、Reference(選択不可)の3つのモードを、次々にサイクルしていくというものにしました。 そしたら俺的にはなかなか便利で具合が良い。 どうですかね。




| | コメント (0)

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)

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