俺のキー 淫サートキーフレーム
挿入したいんです。 淫サートです。
アニメーション作業中はグラフエディタ上で多くの時間を過ごすわけですが、その中でも、既存のアニメーションカーブにキーフレームを挿入するってのは実に頻繁にやる操作でして、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
アニメーションカーブを選択して実行すると、そのカーブの現在フレームにキーフレームを挿入します。 そしてそのキーフレームを選択します。 そんだけ。 ほんとそんだけです。![]()
この 挿入したキーを選択 という状態になっていた方が俺には都合が良くてね。大抵の場合すぐにいじるのでね。 大量にアニメーションするので、こういう小さいことが意外と影響大きいわけですよ。 ホットキーに即登録しました。 選択状態にしたいというのもあるけど、実はこの 「ホットキー化したい」 というのが今回の一番の目的かもしれないw 以下の方法だとホットキーにできないんですよね。
Maya に元からある標準の方法だと、アニメーションカーブを選択した状態で、右クリック > Insert Key がありますよね。![]()
これでも全然いいんだけど、挿入したキーを選択してくれないんだよなあ。 それと、やはり右クリックはちょっとつらい。 マウスならいいけど、俺は大抵ペンタブ使うから。 それと、この右クリックからの操作は、ホットキーが割り当てられないと思うんだよな。 違います?
あと、Insert Key Tool というのもありますね。 グラフエディタの Keys メニューからアクティブにしてもいいけど、i キーを押しっぱなしにして中ボタンでドラッグしても同じですね。 i キーを押している間だけ Insert Key Tool がアクティブになる感じでしょうかね。 挿入するフレームを表す黄色い線が出て来ますね。![]()
そしてこのやり方だと、作成したキーを選択してくれる! なかなか良いのですが、中ボタンなんですよねー ペンタブだと、中ボタンドラッグとかほんとにつらいのよ。 そこが惜しいんだよなあ。 それに、ドラッグ操作が必要で、ホットキー1発でキー挿入というオペレーションにはならないからなあ。
あと、Add Key Tool ってのもありますね。![]()
このツールも中ボタンか・・・・・
しかもこのツールは、XSI の Edit Key Tool だっけ、 shift + E のやつね、あれと違って既存のキーを動かすことは出来ないんですね。 XSI のやつは、左クリックなら既存のキーを移動できるじゃないですか。そして中ボタンではキーの挿入。 Maya のこのツールは、挿入以外の操作はできません。 うーむ、いかんな・・・・・ XSI のアレを移植してくれませんか嘔吐デスク様。 XSI を抹殺したんだからそれくらいやって下さいよ嘔吐デスク様。
ついでに左ボタンでも挿入できるようにオプションを付けてくれないかなあ。 まあ、XSI のように左クリックが既存のキーの移動になるなら、挿入は中ボタンのままでいいけどね。
これ以外に、グラフエディタ上でのキーフレームの挿入って、方法ありますでしょうかね?
ともかく、上記の方法でちょっとしっくり来てなかったので、四苦八苦して mel 書きますた(いつものように、空調屋さんに助けて頂いてます。空調屋さんのサポート無しには生きて行けません)。 こんだけの mel で四苦八苦どころか十六苦三十二苦くらいですよ俺は。 慣れないなあこの mel の書き方というか考え方が・・・・。
だって、 setKeyframe コマンドの戻り値は、セットされたキーフレームの数 だそうですよ。 数かよ。 セットされたキーフレームをオブジェクトとして、そのコレクションとして返してくれよなあ。 オブジェクトとしてキーが取得できていれば、最後に選択するのも簡単だし、他にも色んなことができると思うわけですよ。
それと比べてこのスクリプトでは、新規キーを選択するために、キーの生成に使った setKeyFrame コマンドとは全く関係なく、「このアニメーションカーブの現在フレームのキーフレームを選択しろ」 というコマンドを書いています。 生成されたキーかどうかは関係ないんですね。 こんな風に、「続く何かをやろうと思ったら、前の結果や戻り値とは無関連の方向からまた取得し直す」 みたいな、この一方通行感がね、なんだかね。
Maya人には、結果が同じだからそれでいいジャマイカと言われます。 オブジェクトモデルでスクリプトを書いた経験の無い方には、オブジェクトとしてブツが取得できて、そのメソッドやプロパティでいじっていく感じを伝えても、「それのどこが便利なの? mel の方式で何でもできるんだから、何も不自由ないじゃない?」 と言われてしまいます。 そうですか。そうですよね。 でもなあ、ひとつ端緒をつかめばそこから芋づるでオブジェクトを次々に取得できて、前の結果を活かして次の操作をするって、とてもロジカルだし便利だと思うんだけどなあ。コードの再利用性も高くなってると思うんだな。
って、プログラマでも何でもない俺が知った風なことを言うと、本職の人からすんげえツッコミが来そうなのでやめておこうw
ま、ホットキーも登録したし、これで思う存分挿入できるね
すっこんぱっこん入れるぞー
.
| 固定リンク
コメント