« 未来永劫 aaa で激怒。 | トップページ | グラフエディタ(笑)で激怒。 »

2016年3月18日 (金)

scriptJob で複数行。

なんのことはないメモです。


scriptJob の話 を書いたことがありますが、 userSetup.mel とかに記述しておいて、シーンを開くたびにこのスクリプトを実行しろ、とかやるやつですね。


で、今日、ちょっと困りましてね。 Maya を起動した時に、自分で使いやすいように毎回やる操作ってのがあるわけで、そういうのを scriptJob に記述して自動化したいわけですが、1行で済むコードの場合はダブルクォーテーションでそのコードをくくればいいだけでした。 でも複数行に渡るようなコードの場合は、どう書くんだろう? という疑問が出てきましてね。


で、scriptJob のヘルプを見たら、例文として載っていたので、これでいいんだろうな、上手く行っているように見えるな、というメモです。



これは俺の userSetup.mel の一部なんですが、

Sjmultiline_2


上の方は、1行で書けるコードですね。 シーンを開くたびに Infinity をオンにしろ、とか書いてあります。前の記事で書いたやつです。


その下、緑色の印で囲ってある部分が、今回書いている 「複数行の場合」 ですね。 なんのことはない、global proc でプロシージャを宣言してそのプロシージャを呼べばいい、というだけのことのようでした。 これで上手く行っているように見えます。


1行の場合は、ダブルクォーテーションで囲って、その中にコードを書きますね。 複数行の時は、ダブルクォーテーションの代わりにプロシージャ名を書いておき、そして同じ userSetup.mel の中でそのプロシージャを記述しておく、ということですね。 同じファイル内にプロシージャつまりサブルーチンを書いておいてそれを呼び出している、ということですね。 サブルーチンは何行に渡って書いても良いわけですね。 うん。これでいいんじゃねえの。

誰かに聞いたわけでもなく、やってみて、なんか大丈夫そうというだけのアレですので、突っ込みがあれば是非お願いします。







余談ですが上記の例では、新規シーンを開くたびにカメラの farClipPlane を 1000000 に変えろというプロシージャを書いてますね。 今やっている仕事が、シーンの広さがかなり広くて、Maya さまのデフォルトの farClipPlane の 10000 じゃ範囲外になってしまってシーン全体が見えないんですよ。 なので新規シーンとかやるたびに、いちいち全カメラの farClipPlane の値を入力し直していたんです。 これがめんどくさくて、自動化したかった。 全カメラってのは、Top や Side など主に ortho カメラです。



っていうかね、シーンが広いと、pers カメラや自分で作成した普通のカメラで far clip plane を超えて見えなくなってしまうのは分かるんですが、なんで ortho カメラからも見えなくなってしまうんですか Maya さま? これ、すんげえ扱いづらいじゃないですか。  

ortho つまり Top や Side とかのカメラですよ。 これ、普通はレンダリングに使うカメラじゃなくてね、シーン全体の様子を把握するためにある 「神の視点」 的な特殊なカメラなんだから、シーンの広さに関係なく、常にシーン内のオブジェクトを表示して欲しいわけですよ。 でも ortho カメラには 10000 などという far clip plane が設定されていて、そしてそのカメラは 20000 の高さにあったりする。 20000の高さで far clip が 10000 だから、地表近くにある 10000 以下の大きさのオブジェクトはもう、見えなくなってしまうわけですよ。 だからわざわざ far clip をいじる必要が出てくる。そしてそれを自動化するために、scriptJob とかなんとかやらなければいけなくなる。 なんなんですかね。もう。

XSI 村にある Top や Side などの ortho カメラは、シーンの大きさによってブツが見えなくなるということはありませんでした。常に見えていました。 それが普通に使いやすい状態だと思います。 Mayaさまは頭おかしいです。 うそです Maya さまごめんなさい。






あ、関係ないけど、おらの田舎でちょっと謎に思っていたこと・・・

Xsicamfarplane

これは ortho ではなく、通常のレンダに使うようなカメラのデフォルト値ですね。 Far Plane が 32768。 うん、この数字は昔から疑問に思っていたんだ。  32768 ってずいぶんキリがいいですねw なんの数値ですかw  


いや、きっと意味というか由来があるんだろうけどねw





.

|

« 未来永劫 aaa で激怒。 | トップページ | グラフエディタ(笑)で激怒。 »

コメント

32768、10進数以外の2とか8とか16にしてみるとわかりますがプログラマ的にはかなりキリの良い数字です。

投稿: | 2016年3月22日 (火) 10時39分

あ。ほんとだっ

もちろん俺も、256 とか 1024 とか 4096 とかはキリのいい数字に感じてました。それを2倍2倍してったら、あっという間に 32768 になったw そういうことだったのかー 普段はせいぜい 4096 くらいまでしか使わないからその先を知らなかったんだなきっと

でも、いくらキリが良くても、far plane のデフォルト値としてはヘンだと思うw

投稿: 潤樹 | 2016年3月22日 (火) 18時37分

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: scriptJob で複数行。:

« 未来永劫 aaa で激怒。 | トップページ | グラフエディタ(笑)で激怒。 »