カテゴリー「Maya様 Animation」の13件の記事

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

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)

2018年5月16日 (水)

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

.


またもや発作的に書いたスクリプトを載せてみるんですけどね。


なんかヘンなところあったら突っ込み下さいね。 シロートがほんと、手探りで書いているようなものなので・・・・





ビューポートの再生速度を、通常の 0.5 倍とか2倍とか、スピードを切り替えることができますよね。  


でもいちいち Preference 開くのが面倒なので、n倍の速度で再生する、っていう n の数値を2つだけ登録しておいて、その2つの値でトグルするというスクリプトです。



Pyhon:

# -*- coding: utf-8 -*-
#
#    jjjPlaybackSpeedToggleooon.py
#    再生速度トグる~~~ん
#
#    再生速度を2つの値でトグルするスクリプト
#    1倍速再生と 0.5倍速再生を切り替えるとか。 スクリプトの冒頭の2つの値を適当に書き換えて運用
#    モーション作業でこれ欲しいときあるじゃないですか。いちいち pref 開くのめんどくせえし。


#再生速度切り替えの数値  テキトーに書き換え
speed1 = 0.5
speed2 = 1.0

import sys
import pymel.core as pm

#現在の再生速度取得  play every frame = 0.0
currentSpeed = pm.playbackOptions( playbackSpeed=1, q=1 )

#    Play Every Frame だった場合 = 最大再生速度を2つの値でトグル
if currentSpeed == 0.0 :
    currentMaxSpeed = pm.playbackOptions( maxPlaybackSpeed=1, q=1 )
    #print ( "play every frame : currentMaxSpeed = " + str( currentMaxSpeed ) )
    if currentMaxSpeed == speed1 : pm.playbackOptions( maxPlaybackSpeed=speed2 )
    else : pm.playbackOptions( maxPlaybackSpeed=speed1 )
    
    currentMaxSpeed = pm.playbackOptions( maxPlaybackSpeed=1, q=1 )
    msg = u"再生速度 = 全フレ再生 : 最大速度 =  " + str(currentMaxSpeed) + u"   (゚∀゚)"

#    Play Every Frame じゃなかった場合 = そのまんま再生速度を2つの値でトグル
else:
    #print ( "currentSpeed = " + str( currentSpeed ) )
    if currentSpeed == speed1 : pm.playbackOptions( playbackSpeed=speed2 )
    else : pm.playbackOptions( playbackSpeed=speed1 )

    currentSpeed = pm.playbackOptions( playbackSpeed=1, q=1 )
    msg = u"再生速度 =  " + str(currentSpeed) + u"   (゚∀゚)"

#    結果をお知らせしておしまい。    
sys.stdout.write( msg + "\n" )
pm.inViewMessage( amg= msg, pos='topCenter', fade=True, fadeStayTime=1500, fadeInTime=100, fadeOutTime=400 )

ダウンロード jjjPlaybackSpeedToggleooon.py (1.7K)


Playbackspeed

↑ここの設定のことです。

いちいち Preference 開くの面倒だから、ホットキーにしたくてね。 当然のことながら、ホットキーにするなり、すぐに手が届くシェルフとかに登録するなり、 Preference を開いてこの設定をいじるよりもラクな起動方法で使わないと意味ないですね。




モーションビルダーは、確か UI 上にこの設定が出ているんじゃなかったっけ? すぐに切り替えられて便利でしたよね。  Maya さまもそうだといいのになあ。 なぜ Preference の奥に隠してしまうのだ。 前から、楽にこれが切り替えられるといいなあと思ってたんですが、なんか書けそうな気がしてしまったので、今日書きました。 こんなんで合ってるかなあ?



再生速度が Play Realtime の時は、単に再生速度を2つの値でトグルします。  Play Every Frame の時は、最大再生速度の方を2つの値でトグルします。  2つの値は、スクリプトの冒頭の数値を好みで書き換えればいいんじゃないのかな。 デフォルトでは 1 と 0.5 です。 つまり、1倍速=ノーマル速度と、 0.5倍速=半分の速度(ゆっくり)のトグルになります。

アレですね、例えば 60fps のゲームモーションなんかをいじっている時に最も使いたくなりますね。 特に、クイックで激しいモーションとかは、カクりとか、軸のブレみたいなのを見つけるのに、ゆっくり再生してみたくなる。 そんな時にポンポンと気軽にスピードを切り替えたいという、アレです。






ちなみにですが、ずいぶん前にも書いた けど、heads up display の FPS 表記は、1ビュー再生の時以外は信用しちゃダメですからね。 

さっきも Maya 2018 で試してみたけど、まだ直ってねえや。 2倍速だろうが 0.5 倍速だろうが、2ビュー以上で再生すると不正確な数値が出てます。  嘔吐デスクさま、いつまで放置すんの。 やる気あるんでしょうか。 



まあ、ないですよね。 

知ってます嘔吐デスクさま





.

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

2016年2月26日 (金)

グラフエディタでキーフレームを削除すると全キー選択されて激怒。

毎日激怒しています。


Maya様のグラフエディタで、キーフレームを選んで、Delete キーを押して削除してみて下さいよ。


↓この画像だと、キーフレームが1個選ばれてますね。 ま、1個でなくともいいんだけど。

Fuckge1


この状態で Delete 押します。

すると、

Fuckge2

こうなります。

選んだキーはちゃんと削除されてます。それはいいです。

でも、残りのキーが全て選択状態にされてしまいます。

なんでやねん

キーを削除したら、残りのキーが選択されるって意味わかんないです Maya様。

選択されているもんだから、まちがって動かしちゃったりするわけですよ。ミスオペレーション多発です。 こうして、キーを削除した後はカーブ全体を動かしちゃって慌ててアンドゥ、というヘンな手グセがついていきます。 Maya様、どうかお市にになって下さい。


ちなみにこれ、Delete キーで消した時だけなんですよね。 Delete キーを使わずに、Edit メニューから Delete を選ぶと、この不思議な 「残りのキー全選択」 にはならずにキーを消すことができます。 でも、メニューから選ぶのは面倒ですよね。 やっぱり Delete キーで消したいですよね。





まいったなあ。

と思って空調屋のおじさまに質問する。

そうするとスルっと解決する。

アイラブ空調屋のおじさま。




ということで、こんなところにオプションがあるそうです。

Fuckge3

View メニューの Show Buffer Curves のオプション。

・・・・・・・・・。

え・・・? そこ?

バッファカーブの表示オンオフと、キーを削除したら残りが選択されるとかなんとか、どういう関係があるっての?

Fuckge4

これだそうです。
ほうほう、たしかに、そういうことが書かれている。

Select param curves following key deletion

直訳すると、「キーの削除に続いて、パラメータカーブを選択する」 ですね。 これがデフォルトでオンなのですね。 選択する、というチェックボックスがオンなので、その通りに選択してくれているのですね Maya さまは。


これをオフにした上で、Delete キーでキーフレームを削除すると、

Fuckge5


よしゃーーーー やっとキター

キーを削除しても、残りのキーが選択されない!


嬉しい!
というか、
それが当たり前だこのヴォゲ(゚Д゚)



ここで Maya さまに質問があります。

1.
キーを削除したあと、そのカーブ全体を自動選択すると、どういう便利なことがあるのでせうか? わざわざそのオプションをつけて、デフォルトでオンになっているくらいだから、それが便利な場合が多いと Mayaさまはお考えなのですよね? それは、どういう場合なのでしょうか?


2.
キーの削除後にカーブ選択するとかしないとかが、なぜバッファカーブ表示のオプションなのでしょうか?  バッファカーブは、カーブをいじる前の状態を記憶しておいて、前の状態を見ながらいじることができる、そしていつでも戻れるようにする、というためのものですよね? そのバッファカーブと、キー削除後に残りを全選択する/しないは、どういう関係なのでしょうか?  ちっとも関係が見えません Maya さま


ちなみに俺はバッファカーブの表示をいつもオンにして作業してます。バッファカーブはバリバリ使うから。これがデフォルトでオフである理由もわからんよ俺は。 


そして、上記のオプションは、バッファカーブ表示に属するオプションであるからして、そもそもバッファカーブをオフで作業していた場合は上記のチェックボックスがオンであったとしても無視され、結果、キーを削除しても残りのキーは選択されません。つまりバッファカーブが表示オンの時にしか問題にならないわけです。 

となるとやはり、バッファカーブの表示の有/無と、キーを削除した後に残りのキーを選択する/しないは、強い関係があると Maya さまは考えておられることになりますね。 どういう関係なのでしょうか。凡人の俺にも分かるように説明してください Maya さま




なんとなく、Maya の歴史と関係ありそうな悪寒・・・・昔、なぜかここがこうだったから、途中で変えるわけにもいかず、今もその名残でこう、とかそういう感じの・・・・・




んで、上記のスイッチがデフォルトでオンだったわけですが、にも関わらず、Delete キーを使わずに Edit メニューから削除したときは、残りのキーは選択されないのですよ。 オプションでオンにした状態に反しますね。これは不具合ですねMayaさま。けけけけけけ。



あと、これに関する日本語の記述ですが、

http://help.autodesk.com/view/MAYAUL/2015/JPN/?guid=GUID-ABB47176-9119-47F2-8466-6FA19C427F9F

ここですが、 「パラメータ カーブを選択して次のキーを削除(Select param curves following key deletion) 」 って書かれてますよ。マニュアルに。 

中学生レベルの誤訳ですねこれw  正しくは、 Select param curves(パラメータカーブを選択しますよ、), following key detetion (キーの削除のあとでね。)  という感じになりますね。直訳するとね。  following ~ってのは、~に続いて、~のあとで、という意味ですね。 この誤訳だと、「キーを削除しますよ、パラメータカーブを選択してね。」 ということになり、まるっきり意味を為しません。

ローカライズしてるのは誰ですか。嘔吐デスク様自身じゃないですよね? どっかの会社に下請けに出すんでしょう? これかなり恥ずかしい訳ですよ。というか意味を為してないから訳とは言わないねw CGのことだけじゃなくて英語も知らない人や会社がローカライズやってるんですね。 そして、あがってきた日本語マニュアルを、嘔吐デスク様がチェックしてOK出してるんですよね。 まさかチェックしてないなんてこと、ないですよね?


けけけけけけ。

ともかくバッファカーブのオプションでこのファックなスイッチをオフにすれば、キー削除後に残りのキーが選択されるとかいうファックな状態を解消できます。 いやあ、これで快適にキーを削除できますね。わーい。 こんなことで快適を感じるということは、普段、グラフエディタはどんだけ不快適かという話ですよ。 けけけけけ。



あの見やすくて超絶に軽いFカーブエディタに帰りたい・・・・

Fuckge6

本気で帰りたい・・・・・ (ノω・、)



.

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

2016年2月12日 (金)

キーフレームのペーストはマーヂモードで。

Maya様の調教メモです。 

プリファレンス/設定関係って、一度設定したらしばらく変えなかったりするんで、すぐ忘れるんですよね。 

特に、仕事の関係で新しい場所で Maya を起動した時とかね。 もろもろの設定は当然、俺様設定になってないわけで、そうなると ここどうやるんだっけー って毎回大騒ぎします。

そんなとき、そっと自分のブログを検索します。さすが俺様のブログ、俺様が知りたいことが書かれているじゃないか。ありがとう俺様。 インターネット便利ですね。どこからでも見れるからね。メモはインターネット上に残すのがベストですね。俺スマホとか持ってないから電車の中とかでは見れないけど。



ええと、繰り返しのアニメーションカーブを作りたくて、グラフエディタ上でキーフレームをコピーしてペーストしたら、Ripple 状態とでもいうか、ペーストしたキーの分だけ後ろのキーが時間軸後方に押されてしまうんです。 つまりこれ、ペーストしたキーは、現存するキーの間に 「挿入」 していることになる。 俺がやりたいのはこれではなく、コピー元のキーフレームの範囲を、コピー先に 「上書き」 したいんですね。

その設定どこだっけーってさっき大騒ぎしたので、俺様ブログに俺様メモしているだけです。

Pastemerge

そうそう、これだった・・・・・

 グラフエディタの Edit メニュー > Paste のオプション

もしくは

 アプリケーション最上位のメインメニューの Edit > Keys > Paste  Keys のオプション

このどちらでも同じウインドウが現れますね。 同じなのになぜメニューの名前がグラフエディタとメインメニューで違うんだよこのヴォゲ。 と必ず突っ込みを入れてから、このウインドウの中の Paste methodMerge にすればいいんですね。 ここが Insert になっていたから、「挿入」 されて、それ以降のキーは時間軸後方に押されていたのですね。 Merge にすると、後方に押さずに 「上書き」 になりますね。



はい。すいません。そういうメモでした。以上。



いや、XSI だと、Maya様のこの Merge の挙動がデフォルトだったと思うんですよね。違ったっけ。少なくとも俺は長年、その挙動でやってきた。Maya 様でも、たぶん2~3年前に今日と同じようにこの問題で大騒ぎして、Merge にすればいいんだよとオグリの旦那あたりに教えてもらってその時設定したまま一度も変更せず、意識せずに使ってきたんだと思う。 今日ちょっと新しい環境で Maya をいじる必要があって、ペーストしたら挙動が違ったので、大騒ぎしてしまったんですよ。 だから騒がずに調べられるよう、メモしたのでした。



1~2行で済みそうなこんなちょっとしたメモでも、ついつい長々と文章を書きたくなってしまうのは、Maya様とたわむれる時間を少しでも短くしたいと願うからなのでしょう。 Maya様との作業に比べて、俺様ブログを書く作業の、なんと楽しいことか! Maya様、もうちょっとここでリフレッシュしてから戻るよ。 もしかして戻らないかもよ。 いやそういうわけにはいかないのよ。



仕事に戻ります orz

.

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

2015年6月 2日 (火)

俺のキー 淫サートキーフレーム

挿入したいんです。 淫サートです。



アニメーション作業中はグラフエディタ上で多くの時間を過ごすわけですが、その中でも、既存のアニメーションカーブにキーフレームを挿入するってのは実に頻繁にやる操作でして、Maya の標準のやり方だとちょっとだけ気に食わなかった。ちょっとだけね。

だからスクリプトを書いてみたんですが、別にどうというアレでもありません。ただの小スクリプト。



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

//    俺のキー 淫サートキーフレーム
//    選択中のアニメーションカーブの現在フレームに
//    キーフレームを挿入し、そのキーフレームを選択状態にする
//    そんだけ。

OrenoKeyFrame_Insert();
global proc OrenoKeyFrame_Insert()
{
    string $selectedAnimCurves[] = `keyframe -q -selected -name`;
    if ( size($selectedAnimCurves) ) 
    {
        setKeyframe -insert $selectedAnimCurves;
         
        float $currentTime;
        $currentTime = `currentTime -q`;
        selectKey -clear;
        selectKey -time $currentTime $selectedAnimCurves;
    }
}

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

OrenoKey_InsertKeyframe.mel


アニメーションカーブを選択して実行すると、そのカーブの現在フレームにキーフレームを挿入します。 そしてそのキーフレームを選択します。 そんだけ。 ほんとそんだけです。

Insertkey1

この 挿入したキーを選択 という状態になっていた方が俺には都合が良くてね。大抵の場合すぐにいじるのでね。 大量にアニメーションするので、こういう小さいことが意外と影響大きいわけですよ。 ホットキーに即登録しました。  選択状態にしたいというのもあるけど、実はこの 「ホットキー化したい」 というのが今回の一番の目的かもしれないw  以下の方法だとホットキーにできないんですよね。




Maya に元からある標準の方法だと、アニメーションカーブを選択した状態で、右クリック > Insert Key がありますよね。

Insertkey2

これでも全然いいんだけど、挿入したキーを選択してくれないんだよなあ。 それと、やはり右クリックはちょっとつらい。 マウスならいいけど、俺は大抵ペンタブ使うから。 それと、この右クリックからの操作は、ホットキーが割り当てられないと思うんだよな。 違います?



あと、Insert Key Tool というのもありますね。 グラフエディタの Keys メニューからアクティブにしてもいいけど、i キーを押しっぱなしにして中ボタンでドラッグしても同じですね。 i キーを押している間だけ Insert Key Tool がアクティブになる感じでしょうかね。 挿入するフレームを表す黄色い線が出て来ますね。 

Insertkey3

そしてこのやり方だと、作成したキーを選択してくれる! なかなか良いのですが、中ボタンなんですよねー ペンタブだと、中ボタンドラッグとかほんとにつらいのよ。 そこが惜しいんだよなあ。 それに、ドラッグ操作が必要で、ホットキー1発でキー挿入というオペレーションにはならないからなあ。



あと、Add Key Tool ってのもありますね。

Insertkey4

このツールも中ボタンか・・・・・

しかもこのツールは、XSI の Edit Key Tool だっけ、 shift + E のやつね、あれと違って既存のキーを動かすことは出来ないんですね。 XSI のやつは、左クリックなら既存のキーを移動できるじゃないですか。そして中ボタンではキーの挿入。 Maya のこのツールは、挿入以外の操作はできません。 うーむ、いかんな・・・・・ XSI のアレを移植してくれませんか嘔吐デスク様。 XSI を抹殺したんだからそれくらいやって下さいよ嘔吐デスク様。 

ついでに左ボタンでも挿入できるようにオプションを付けてくれないかなあ。 まあ、XSI のように左クリックが既存のキーの移動になるなら、挿入は中ボタンのままでいいけどね。




これ以外に、グラフエディタ上でのキーフレームの挿入って、方法ありますでしょうかね?





ともかく、上記の方法でちょっとしっくり来てなかったので、四苦八苦して mel 書きますた(いつものように、空調屋さんに助けて頂いてます。空調屋さんのサポート無しには生きて行けません)。 こんだけの mel で四苦八苦どころか十六苦三十二苦くらいですよ俺は。 慣れないなあこの mel の書き方というか考え方が・・・・。 

だって、 setKeyframe コマンドの戻り値は、セットされたキーフレームの だそうですよ。 数かよ。 セットされたキーフレームをオブジェクトとして、そのコレクションとして返してくれよなあ。 オブジェクトとしてキーが取得できていれば、最後に選択するのも簡単だし、他にも色んなことができると思うわけですよ。 

それと比べてこのスクリプトでは、新規キーを選択するために、キーの生成に使った setKeyFrame コマンドとは全く関係なく、「このアニメーションカーブの現在フレームのキーフレームを選択しろ」 というコマンドを書いています。 生成されたキーかどうかは関係ないんですね。 こんな風に、「続く何かをやろうと思ったら、前の結果や戻り値とは無関連の方向からまた取得し直す」 みたいな、この一方通行感がね、なんだかね。 

Maya人には、結果が同じだからそれでいいジャマイカと言われます。 オブジェクトモデルでスクリプトを書いた経験の無い方には、オブジェクトとしてブツが取得できて、そのメソッドやプロパティでいじっていく感じを伝えても、「それのどこが便利なの? mel の方式で何でもできるんだから、何も不自由ないじゃない?」 と言われてしまいます。 そうですか。そうですよね。 でもなあ、ひとつ端緒をつかめばそこから芋づるでオブジェクトを次々に取得できて、前の結果を活かして次の操作をするって、とてもロジカルだし便利だと思うんだけどなあ。コードの再利用性も高くなってると思うんだな。


って、プログラマでも何でもない俺が知った風なことを言うと、本職の人からすんげえツッコミが来そうなのでやめておこうw



ま、ホットキーも登録したし、これで思う存分挿入できるね
すっこんぱっこん入れるぞー






.

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

2015年5月26日 (火)

FPS信用してはいけない。

Maya 様のことですよ。 FPS 表示ね。



ビューポート上で操作したり、シーンを再生したりすると、ビューポートのはじっこに現在のインタラクションフレームレートが表示されますよね。 Heads up display っていうんですか。 下の画像の赤い線の部分です。

Fuckfps_2


現在どれくらいのレートが出ているのか? 重要ですよね。 リグの軽さ/重さを計る材料になるし、アニメーション作業中はリアルタイムが出ているかどうかでそのまま作業するかプレイブラスト取るか、判断したりしますよね。 まあ Maya 様が再生でリアルタイム出してくれることなんて、キューブ1個の時くらいしかないですケドね。



この数字、Preference Update viewActive の時は、どうやら正しい数値を表示してくれてるように見えます。 Active ってのはつまり、1画面表示の時は当然その画面、複数画面表示の時は現在アクティブになっているビューのみ、表示が更新されるというものですね。

でもここを、Active ではなく All にするとどうなるか。 画像の黄色い線のところです。 All ということは、複数のビューポートを全部更新するので、トップビューだろうがカメラビューだろうが全部同時にアニメーションを見ることができますが、その分、当然遅くなる傾向にありますね。

でも、All にすると、遅くなるどころか、でかい FPS の数字が出ているんですよ。 40オーバーとか。 



そんなはずねえだろ
体感的にも、そんなレートは出てないよ




そもそも、同じく Preference の中で、 Max Playback SpeedReal-time にしているので、たとえ軽かったとしてもシーンに設定してあるフレームレートを超えることはないはずなんですよね。画像の青い線の部分のことです。





おかしいなあ、と思ってサポートに聞いてみたら、不具合のようだということですた。 あっそ。


-------------------------------------------------
BSPR-9507
Headup Display: displays strange frame rate when select "All" option for updating the workspace views.
-------------------------------------------------


という風に不具合登録されたそうです。 だいぶ前の話だけど。  2013 と 2014 でこの不具合を確認しています。 2015 以降で直ったかな? どうですか?



1ビューならば正しい数値が出るので、再生レートをちゃんと確認したい時はポンとスペースバーを叩いて1画面表示にすればいいし、本気でアニメーションしている間はだいたい All じゃなくて Active にしている気がするので、実害は最小限ですかね。

でも、All を選んでいるために不正確な数値が出るはずのところで、たまたまリアルタイムに近い数値とか、それっぽい数値が出てたりすると、うっかり信用してしまいそうですよね。 ダメダメ。 信用してはいけない。 All の時の fps 表示は信用してはいけないのです。





ってことを忘れていて、今日ちょっと幻惑されてしまったので、メモですよ。 ブログに書かないと忘れてしまう。書いても忘れるんだけどね。そんな時はグーグル先生に聞くのですが、自分で書いた古い記事に案内されることも多々あります。 まあどうでもいいや。 All の FPS は信用するな。 はいメモ終了





そもそも、fps どころか、嘔吐デスクそのものが信用ならないですケドね。

この、今俺が使ってる Maya とかいうソフトウェアも、ほんとなの?

これほんとに Maya なの?

信用ならねえなあ。

フラッグシップソフトウェアである Maya 様が、
こんなソフトウェアであるはずがない。
これ、ほんとは、Maya じゃないんじゃないの?
どっかの絶滅したソフトウェアとかを、
パッケージだけ替えて売ってるんじゃないの?


信用ならねえなあ


.

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

2014年6月11日 (水)

SAC for Maya様。

SAC 必要なんです。俺には。 アニメーションを他のオブジェクトに複製するツールです。

XSI 版は、やはり古いな・・・・ 2007年らしい。
http://junkithejunkie.cocolog-nifty.com/blog/2007/11/sac_b2b3.html



(mel)
-------------------------------------------------

//    SAC
//    最初に選んでいるオブジェクトのアニメーションを、2個目以降に選んでいるオブジェクトにコピーする
string $sels[] = `ls -sl`;
copyKey -time ":" -hierarchy none -controlPoints 0 -shape 1 $sels[0];
pasteKey -option replaceCompletely;
-------------------------------------------------

SACforMaya.mel




アニメーションのあるオブジェクトをひとつ選びます。 次にアニメーションをコピーしたい行き先のオブジェクトをいくつでも選びます。 その状態でスクリプトを実行すると、最初のオブジェクトのアニメーションが、2つ目以降のオブジェクトにコピーされます。 そんだけです。


いやほんと、だからどうだというアレではありません。 XSI でずっと使ってきた SAC と同じ感覚でアニメーションをコピーしたかったというだけです。 標準のアニメーションコピペが面倒だなーとか、ペーストのオプションで replace とか merge とか気にするのかったるいなーとか感じたので、SAC っぽい感じにしようとしただけなんです。 全然大したものではありません。





コピー元のオブジェクトでアニメーションされていないチャネルは、コピー先では何もいじらないようですね。 

例えば、位置のキーはあるけれど回転のキーが無いオブジェクトAをコピー元にしたとします。 一方、コピー先であるBには位置のキーも回転のキーもあります。 

この状態で実行すると、Aの持つ位置のアニメーションは、Bの位置のアニメーションを上書きします。 Bがもともと持っていた位置アニメーションは跡形も無く消え、Aと同じアニメーションになるということです。 一方、Aは回転アニメーションを持っていないため、Bがもともと持っている回転アニメーションをいじりません。 Aに合わせて回転アニメーションを消し去ったりはしないということです。 結果Bは、自分がもともと持っていた回転アニメーションはそのまま残り、位置アニメーションのみAに合わせて上書きされます。







スクリプティング的には、よく分からないまま人に聞きながら書いちゃったんですが、一応ちゃんと動いているように見えるなあ。 落とし穴あるかなあ。 何か気づくことあれば、どうかご指摘下さい。


copyKey コマンドでは、 -controlPoints 0 -shape 1 あたりがよく意味分からんのだよな。  それ以外は、 タイムレンジの指定が数値ではしていなくて ":" (コロン)のみなのでこれは全部のキーを表し、階層の下位のオブジェクトは無視して今選ばれているオブジェクトのみを対象にする。 そしてコピーするアニメーションは選択しているブツのうちゼロ番目(つまり最初の1個)から取ってくると書かれていますよね。 そういうつもりで書きました。

pasteKey コマンドでは、-option replaceCompletely ってのが、元のアニメーションをまるっきり置き換えてしまうというオプションですね。 ただし前述のごとく、コピー元のオブジェクトでキーが無いチャネルは、無視するようですね。  そしてこの書き方だと、コピー元のオブジェクト自身にもペーストしちゃってますね。 まあ問題ないですよね。




とかなんとか。




まだまだ恥ずかしいくらいの初心者ですよ、ええ。 必死で自分のブログにメモですよ。


でも mel は初心者レベルでスルーしてしまいたい気分だなあ・・・。python に走った方が良さそうに見えるんだよなあ。




XSI村で話しでいだ JScript なまりは、ここでは通用しねのがな・・・・ mel はなんだが変だすけやりっとねんだげどな・・・










.

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

2014年3月26日 (水)

ロールはツイスト。

なんでツイスト言うねん。 ロール言うたらええやん。



まあいいや、すいません、カメラのロールをしたかっただけなんですよ。ロールのアニメーションね。 カメラから見て地平線が傾くアレね。


俺はほとんどの場合エイム付きのカメラで作業するんですが、XSI で言うとカメラがカメラインタレストに Direction コンストレインされていて、そのコンストレインのプロパティの中にロールというパラメータがあって、キーが打てますね。それを Maya でやりたかったんです。



で、Maya のカメラナビゲーションのツールに Roll Tool ってのがあって、ロール自体はできるんだけど、アニメーションさせるためにどこにキーを打てばいいのか分からなかったんですよ。

Roll というアトリビュートを探しても探しても見つからず。マニュアルでも見つけられず。




で、いつものように教えて頂きました。

Fuckinrollisdamntwist

camera_group 以下にある Twist でした。 解決。


いつものように巧妙な罠ですね。

まず、カメラそのものが持っているアトリビュートではなく、カメラグループが持っているアトリビュートなんですね。 ほう。 そこにあるとは思ってなかったよ。

そして、Roll Tool なんていうツールでいじれるくせに、そのツールでいじられるアトリビュートの名前は Roll ではなく Twist なんですね。 なんでやねん Maya 様。 わざとやってんちゃうか。


まあね、XSI村にもこの手のトラップはたくさんありましたよ。パラメータのオーバーライドなんかやろうとすると、UI 上の名前と実際のパラメータの名前が全然違っていてちっとも探せねえ、とか。




Special Thanks to 運送屋様、クスリ屋さま。

いつもお世話になります。






あ、この Roll Tool って、ホットキーないんですか? なさそうに見えますね。 どうでしょうか。




.

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