そうそう、最近また使い始めたんですが、便利なんですよこれが。
NewScene Options
http://www.xsibase.com/tools/plugins.php?detail=1358
まだ生きていたのか、XSI Base のダウンロードセクション。
よくある、スタートアップイベントってやつですね。 XSI が起動した時、New Scene を実行した時に、自動で何かをさせるものです。 どっかに保存しておいた自分の「スタートシーン」を指定しておくとそれが勝手にロードされますし、スクリプトファイルを指定しておけばそれが実行されます。 基本はこの2つの使い方しかないと思います。 俺の場合はスクリプトを指定しています。
すんげえ古いプラグインですが、昔使っていたのにしばらく使ってなくて、最近思い出して上記のページから DL して 2012 SP1 にブッ込んだら、問題なく動いてますね。 Softimage の中の人で、元コメディアンという意味の分からない経歴を持つ、我らがチニー大先生が作ったプラグインです。
XSI を起動した後、または新規シーンを出した後に毎回必ず儀式のようにやる作業があるのなら、これを使うと便利じゃないですかね。
俺の場合、大昔に撲滅アンビエンスというプラグインを作ったことがあるんですが、これは XSI デフォルトの 0.2 のシーンアンビエンスを嫌って、毎回手でゼロに設定していたので、ある日とうとうブチ切れて書いたものでしたが、しくみはこの NewSceneOptions とほぼ同じものです。 今回これを使うことにしたので、自動で実行させるスクリプトファイルの中に撲滅アンビエンス相当のことを書いてしまい、撲滅アンビエンスはアンインストールしてしまいました。 撲滅アンビエンス君、きっと4年くらい俺の XSI に常駐して、来る日も来る日も新規シーンのアンビエンスを撲滅し続けてくれたよね。俺は本当に感謝している。 いつかこの日が来るのは分かっていた。立派に役割を果たして去り行く君を、笑って送り出そう。 Rest in peace。
アンビエンス以外にも、俺の場合は、例えば選択中のブツのポイントを強調表示させたかったり、HiddenLine のカラーはオブジェクトのディフューズ色じゃないと嫌だったり、Camera ではなく Camera Root が 0, 2, 20 とかに居るのが激しく気に入らないとか色々あるので、ひと通りスクリプトに書いて、気に入った状態で始められるようにしてます。
俺のスクリプトファイルはこんな感じ。
JScript
------------------------------------------------------------------------
// Ambience
var oAmbientLighting = Dictionary.GetObject( "Scene_Root.AmbientLighting" );
oAmbientLighting.ambience.red.value = 0;
oAmbientLighting.ambience.green.value = 0;
oAmbientLighting.ambience.blue.value = 0;
// Camera
var oCam = ActiveSceneRoot.FindChild2( "Camera", siCameraPrimType );
var oRoot = oCam.Parent;
var oInterest = oCam.Interest;
oRoot.posx = 0;
oRoot.posy = 0;
oRoot.posz = 0;
oInterest.posx = 0;
oInterest.posy = 0;
oInterest.posz = 0;
oCam.posx.value = 0;
oCam.posy.value = 2;
oCam.posz.value = 20;
oRoot.Properties( "Visibility" ).Viewvis.value = true;
oRoot.Properties( "Visibility" ).Rendvis.value = true;
oInterest.Properties( "Visibility" ).Viewvis.value = true;
oInterest.Properties( "Visibility" ).Rendvis.value = true;
oCam.Properties( "Visibility" ).Viewvis.value = true;
oCam.Properties( "Visibility" ).Rendvis.value = true;
oCam.name = "Camera0";
oRoot.name = "Root0";
oInterest.name = "Interest0";
// Light
var oLight = ActiveSceneRoot.FindChild2( "light", siLightPrimType );
oLight.Properties( "Visibility" ).Viewvis.value = true;
oLight.Properties( "Visibility" ).Rendvis.value = true;
oLight.name = "light0";
// Viewport
// Selected Points / Cones
SetValue("*.camvis.compobjselvert", true, null);
SetValue("Views.View*.*.camvis.compobjselvert", true, null);
SetValue("*.camvis.attrselcones", true, null);
SetValue("Views.View*.*.camvis.attrselcones", true, null);
SetValue("*.camvis.attrunselcones", true, null);
SetValue("Views.View*.*.camvis.attrunselcones", true, null);
// Light off
SetValue("*.camvis.objlights", false, null);
SetValue("Views.View*.*.camvis.objlights", false, null);
// Camera off
SetValue("*.camvis.objcameras", false, null);
SetValue("Views.View*.*.camvis.objcameras", false, null);
// HiddenLine Color
SetValue("*.camdisp.hidlincoltype", 1, null);
SetValue("Views.View*.*.camdisp.hidlincoltype", 1, null);
// Wire on unselected
SetValue("*.camdisp.wireontopunsel", true, null);
SetValue("Views.View*.*.camdisp.wireontopunsel", true, null);
Logmessage( "Junki NewScene Script ver120109 (゚∀゚)" );
------------------------------------------------------------------------
新規シーンの状態で実行されるわけだから安心して名前でハードコーディングしてますし、1回手でやってみた後にスクリプトエディタからコピペしただけのコードの方が多いですね。 でもたったこんだけで、ずいぶん便利です。 いずれもっとでかいスクリプトになっていくのかな。
起動時に、例えばサーバ上にあるワークグループディレクトリをまるごとローカルにコピーした上でそこをワークグループディレクトリに指定するとか、そういうのを自動でやっている人もいるようですね。 大規模なスタジオとかで、サーバ上にあるワークグループのツールを上書きアップデートする時とかに便利でしょうね。 あるいは、サーバ上のデータに常にアクセスに行くのは遅いので、起動の時にローカルにコピーする時間だけ我慢して以後は快適に使おうという用途でやっている人もいるようですね。
曲行きましょう。
最近気に入っているんですよこの人たち。
って言ってもラジオではこの曲しかかからないですけどね。 まだデビュー間も無いみたいだな。
歌詞が分かればもっと楽しいだろうにという思いと、歌詞を知ってしまうとがっかりしそうだから曲とその雰囲気だけ楽しめればいいやという思いと、いつも両方ありますね。 この曲なんかはもしかして、いかにもアメリカのカントリー音楽ファンに多そうな庶民的なキリスト教らしい日常に基づいているとか、そんなのかなあ、と想像したりするんだけどまあ、あえて調べず。 でもそのうち、サビだけでも口ずさめるようになりたくなったりして、調べちゃうんだよなあ。。。。。
.
最近のコメント