« 2015年6月 | トップページ | 2015年12月 »

2015年7月

2015年7月 2日 (木)

カメラ移行のアニメーションやめれ。

またこんなんでさんざん探しちまったよ・・・・一度設定するともう変えないから、どこにあるか忘れちまうんだよな・・・・



F キーとか押したときに、一瞬でブツがビューにフィットするんじゃなくて、 うにょにょにょ~~~ん ってカメラがアニメーションしてフィットするじゃないですか。デフォルトでは。



この うにょにょにょ~ん って、本当に必要でしょかね? 動く過程を見せた方が分かりやすいかな? いや~そんなの関係ないんじゃないの~  反応の遅さの方が気になるよ。 これ、2013 くらいからかな?  なんか、ただファンシーにしたかったんじゃないの?  こういう中坊っぽいのはやめて下さいよ嘔吐デスクさま。



これをオフにできたはずなんだが・・・・と設定を探しまくったのは何回目だろう・・・・ こういうのって、Maya の違うバージョンを使い始めるたびに必ずやりますね。 あと、今日はちと Maya の挙動がおかしくなったので、user フォルダを丸ごと退避させてデフォルト状態で試してみたりしたんですがね、そうなるとオフとして記憶されていた設定が初期化されて、またこのアフォな うにょにょにょ~~ん が復活したりするわけですよ。



で結局、設定のありかは、 

 

Preferences > Settings  > Cameras > Animate Camera Transitions

ですた。 メモメモ

Fuckfitanimation

ここを全部オフにすれば、うにょにょ~~んは抹殺されます。 さようなら。 二度と生き返らないで下さい。







あ、関係ないけど、俺の環境だと、Fのショートカットがなぜか効かなくなることが多いです。 起動してしばらくは大丈夫なんだけど、使っているうちに、F押してもフィットしてくれなくなるのですよ。

試しに、Fを押した時のフィットと同じコマンドでスクリプト書いて、違うホットキーに割り当てておきました。 で、Fが効かなくなったとき、そのホットキーを押してみると、ちゃんとフィットのスクリプトは機能するんですよ。 つまり、フィットの機能自体が死んでいるのではなく、Fというホットキーが死んでいるのかも知れない。

同様に Ctrl + z も効かなくなることがあるんだよなあ。フィットとアンドゥがホットキーで出来ないって、もはや操作上致命的ですね。なんにもできねえ。 しかたなく Maya 様を落とします。アプリケーションを再起動すれば、ちゃんとFが効く状態に戻ります。 でもそのうち、また効かなくなるんですよね。



あなたの環境ではこんなことありません?  前に仕事をしたM社では、やはりこの現象あるって言ってましたよ。 

何をきっかけにしてこの状態になるのか、知りたいんだよなあ。 問題が起こる条件さえ分かっていれば、ワークフローの工夫でどうにかなったりすることもありますからね。 どなた様でも、情報あらば是非お願いします。





.

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

2015年7月 1日 (水)

起動時にスクリプトを実行して下さい。の改良。scriptJobで行こう。

前に書いた記事2つ、やはりまだ不具合があるわけですよ。



起動時にスクリプトを実行して下さい。っていうか設定記憶して下さいMaya様

↑ この記事では userSetup.mel に mel スクリプトを記述すればいいらしいぜ、という話でした。 グーグル検索して分かったことを再メモしただけですね。


で、userSetup.mel に記述するんだぜという話自体には何も問題はなかったのですが、問題が出たのは、この記事の中で、グラフエディタの Infinity をオンにするということをやった後ですね。 

Maya様は、グラフエディタで Infinity の表示をオンにしてるのに、起動するたびにこれを勝手にオフにしやがるので(2015以降では記憶してくれるようになったそうです)、ならば起動するたびにスクリプトを実行してオンにしてやれと思ったわけですよ。 ということで、Infinity をオンにするスクリプトを userSetup.mel に書きました。

しかしここで問題発生。 Maya 起動直後、まだ UI がロードされてないタイミングでこのスクリプトが実行されているらしく、「グラフエディタで Infinity をオンにしろ」 というスクリプトを書いても 「グラフエディタなんてものはねえよ(まだロードされてないから)」 というアフォな事態が起こっていたようなのですね。



そこで、ちゃんと UI がロードされるまでスクリプトの実行を待ってもらおうということで、evalDeffered コマンドというものがあるということが判明したので、書きました。 

それがこの記事 ↓

ちょっと待ってから実行。


これで解決したかのように見えました。


・・・・しかし、また問題が・・・・


これ、確かに起動時は Infinity をオンにしてくれるわけですが、起動時だけなんですね。 その後、新規シーンを実行したり、既存のシーンを開いたりすると、Maya様はまたご親切にも Infinity をオフにしやがって下さるのですよ。 本当に毎回毎回、懇切丁寧にありがとうございます Maya 様!! \(゚∀゚)\


ということで、起動時にどうこうするというのは忘れて、新規シーン実行時、あるいは既存のシーンを開いた時にスクリプトが実行される方法を探ったのです。 XSI ではセルフインストール型のスクリプトに event を記述すればできますね。 これに相当するものを探していたのです。


そしたら偶然それを見つけた気がしまして、なじみの空調屋さんに検証をお願いしちゃったりして、なんとか解決した気がするというのが本記事です。 ああ前振りがなげえ。


ってことで、scriptJob コマンド です。

「新規シーンの時に、このスクリプトを実行」 「既存シーンを開いたら実行」 「選択しているオブジェクトが変わったら実行」 みたいに、指定したイベントが起こった時にスクリプトを実行させるものですね。 これを userSetup.mel に記述します。 そしたら、起動後、新規シーン後、既存シーン開いた後、全ての状態でちゃんと Infinity オンに出来ました。やっとの思いで。 長い道のりだった。


Infinity をオンにするコマンドは

scriptJob -event "SceneOpened" "animCurveEditor -edit -displayInfinities true graphEditor1GraphEd;";

こうなりますね。


SceneOpened というイベントが検知された時、つまりシーンが開かれた時に、それに続く animCurveEditor コマンドが実行されるということになります。 

新規シーンの場合は、「空っぽのシーンという既存シーンを開く」 という考え方になるようで、この SceneOpened でカバーされます。つまり、SceneOpened とだけ記述しておけば、新規シーンの時も既存シーンのときも、続くコードが実行されます。

一方、SceneOpened の代わりに NewSceneOpened と書くと、新規シーンの時だけ実行され、既存シーンを開くときは実行されないので注意が必要です。



SceneOpened や NewSceneOpened 以外にどんなイベントがあるのかは、

scriptJob -listEvents;

を実行すればズラズラと出てきますが、まあ、ドキュメントにも全部載っている みたいだからそっち見たほうがいいのかな。

関係ないけど、mel で -listなんちゃら ってオプションで表示させる時って、結果が改行もされずズラズラと長ったらしく表示されますよね。 これわかりにくいです Maya 様。 いつもテキストエディタにコピペして、スペースを改行に変換するとかアフォなことをやっているのですが、なんかもっと簡単にパッと全体を見れる方法ないものですかね。





ってことでもはや evalDeffered コマンドも使いません。この scriptJob コマンドだけで上手く行っているように見えます。しばらくこれで運用してみます。

scriptJob いいなあ。 XSI のイベントより遥かに手軽ですね。 XSI の方はセルフインストール型で記述することによってただのスクリプトではなくプラグインとして認識させて云々みたいな知識が必要だけど、Maya様のこれは、俺みたいにほとんど分かってない人間でも、こんな簡単な1行を書くだけで一応は出来ちゃうっぽい(分かってない故の落とし穴がたくさんありそうだが・・・)。 さすが Maya様です。ありがとうございます。





ちなみに Infinity だけじゃなく Buffer Curve も起動するたびにオフにされてしまうので、同じく scriptJob コマンドでオンにしてあげてます。

scriptJob -event "SceneOpened" "animCurveEditor -edit -showBufferCurves true graphEditor1GraphEd;";



あと、俺の Maya 様は、HeadsUp Display でワールド原点に軸が表示されちゃうんだよなあ。これデフォルトでこうでしたっけ? 邪魔なので、それをオフにするコードも scriptJob でやってます。

scriptJob -event "SceneOpened" "toggleAxis -o off;";



このように、起動時やら新規シーン時やら既存シーンを開いた時やらにやって欲しいことは全部、scriptJobコマンドで userSetup.mel にズラズラと記述してしまえばいいと思います。多分。




SelectionChanged イベントは、どうでしょう、重くならないかな。選択しているオブジェクトに変化があるとトリガになるわけですが、これも色々便利に使えそうですが、XSI でこれに相当することをやるとけっこう重くなってたんですよね。 選択状態を常に監視するわけですから、バックグラウンドに常駐してある程度プロセッサの処理を食ってしまっている的な感じでした。 今度 Maya 様でもやってみよう。



.

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

« 2015年6月 | トップページ | 2015年12月 »