« 再生速度トグる~~~ん。 | トップページ | シーンにあるコンストさん全部一気に選択。 »

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か所にまとめてメモしておけば、あとはコピペすりゃいいやみたいなやつ。  いつかそういうのまとめたい。 です。 しんどい。






.

|

« 再生速度トグる~~~ん。 | トップページ | シーンにあるコンストさん全部一気に選択。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: こいつのキー全部選択してください。:

« 再生速度トグる~~~ん。 | トップページ | シーンにあるコンストさん全部一気に選択。 »