2008年12月30日火曜日

XSIバッチモード

ブログ作ったからにはなにかやらねば!
ということで、なんかやります。

ゲーム作っていると(ゲームじゃなくてもそうだけど)同じことをする場面が多くなります。
何百回も何千回もいちいち手で同じことなんてやってられません。
それに一度にリグの入れ替えとか発生した日にゃ家帰って寝ます。( ▼Д▼)y─┛~~
そうなるとスクリプト様の出番なわけです。
スクリプト様万能です!スーパーマンです。 o(o|o)/ウルトラマン
仕事中にグデ~~~っとしてても代わりに仕事してくれます。
まぁ代わりに自分が白い目でみられるという副作用がありますが…。

が、それでも手持無沙汰で待ち切れずXSIに「いちいちプログレスバーとかだしてんじゃねーぞ遅くなんだろ(#゚Д゚)ゴラァ」とキレることが多々あるわけです。
エクセルのVBAにだって画面更新停止して処理速度向上させる機能があるのに天下のXSI様にはないんですかあぁん?
…ということでヘルプあさってたら見つけました『バッチモード』!!!
いや~あるんじゃないですか~それを早く言って下さいよ~。(ぇ?みんな知ってる?


ということで早速簡単なスクリプトで試してみたんで書いてみます。

スクリプトは超簡素なものです。
1.シーンにヌルを作ってアイコンを環にする。
2.Cドライブ直下Test_DBというデータベースにbat_test.scnという名前でシーンを保存する。
だけです。

***** test.js ******************************************************
var oRoot = ActiveProject.ActiveScene.Root;
var oNull = oRoot.AddNull("hogehoge");
oNull.primary_icon.value = 2;
SaveSceneAs("C:\\Test_DB\\Scenes\\bat_test.scn", null );
********************************************************************

ヌルのアイコンを変える意味はまったくありません。
やりたかっただけです。(A;´・ω・)アセアセ
とにかく、上記のスクリプトをCドライブ直下にtest.jsとして保存しときます。

で、次はコマンドプロンプトを立ち上げるわけですが…。
とりあえずヘルプによるとこんな感じ。

********************************************************************
Windowsの[スタート]メニューから[すべてのプログラム] > [SOFTIMAGE Products] > [SOFTIMAGE|XSI 5.0] > [Command Prompt]を選択します。
myscript.vbsという名前の単純なVBScriptファイルを実行するには、コマンドプロンプトに次の構文を入力します。
xsi -script "\My Files\myscript.vbs"
********************************************************************

…いちいちそこまでもぐってコマンドプロンプト立ち上げるのがめんどいんじゃ(#゚Д゚)ゴラァ
ってかヘルプも5.0から書き直してねぇだろ(#゚Д゚)ゴラァ
ってことでバッチファイルを作ります。
あと、実行後はコマンドプロンプトが自動的に閉じるようにしたいですね~。
ということで…( ̄ω ̄;)エートォ...
書けました!こんな感じです!!たぶん。

***** xsi.bat ******************************************************
CD C:\Softimage\XSI_6.0\Application\bin
rem スクリプトを実行 実行後ウインドウを閉じる
xsi -continue -script "c:\test.js"
********************************************************************

バッチファイルあんまり作った事ないんであれですが…。

1行目は C:\Softimage\XSI_6.0\Application\bin に移動しなさいって意味ですね。(XSI_6.0という部分は環境によってかわります。)
2行目はコメントです。バッチファイル起動時には無視されちゃいます。
3行目はXSIを立ち上げるコマンドです。 -continue は実行後画面を閉じる。 -script "c:\test.js" はc:\test.jsを実行しなさいって意味ですねー。

これをデスクトップとか適当な場所にxsi.batという名前で保存します。
あとはxsi.batをダブルクリックするだけで動きます!!たぶん。
下のような画面が表示されてシーンができあがります。
う~~~んらくちん!!v( ̄∇ ̄)v


あ、でも今のバッチファイルではスクリプトが以下のようにかわった場合はエラーで怒られちゃうようです。

***** test.js ******************************************************
function CreateNull( myName )
{
var oRoot = ActiveProject.ActiveScene.Root;
var oNull = oRoot.AddNull(myName);
oNull.primary_icon.value = 2;
SaveSceneAs("C:\\Test_DB\\Scenes\\" + myName + ".scn", null );
}
********************************************************************

ヌルの名前とシーン名が可変する場合ですねー。
そういう場合は関数名と引数を渡してやるときちんと動いてくれるようです。
こんなかんじですねー。

***** xsi.bat ******************************************************
CD C:\Softimage\XSI_6.0\Application\bin
rem スクリプトを実行 実行後ウインドウを閉じる
xsi -script "c:\test.js" -main CreateNull -args -myName hogehoge
********************************************************************

うん。
ちゃんと動いてくれました。
バッチモード、これは単純作業を多くこなす割と時間がかかるスクリプトの場合便利かもしれませんねー。
XSI様素敵です!可能性を感じちゃいます。
あぁ~でもバッチモードだからXSIすら立ち上げてないって周りにさらに白い目でみられるなぁ~~。
それは困る…。(-_-;ウーン
それとバッチレンダリングとかもあるようですね。(知らんかった…
これは映像関係の方は日ごろから使っているのでしょうか。
自分の場合はゲームなのであまり関わらないところではあるんですが…。

そういえば肝心の実行速度はというと…。
よう分かりません。ψ(`∇´)ψケケケケケ
簡単なスクリプトでしか試してませんから、もっと複雑なやつでやると真価を発揮してくれるんでしょうか。
あと、XSIがヽ(*´▽)ノオテアゲー♪って強制終了することも少なくなるんでしょうか…。
実際にやってみたらまた報告します。
まぁ単純なスクリプトでもXSIを立ち上げて~から始めると考えるとかなり違いますけどね。

今日はこんなとこでしょうか。
ブログってなかなか楽しい…
たぶん2008年はこれが最初で最後かな?
できれば明日も書きたいなー。
それにしてもいろいろ書いてると否応なしに文章長くなりますね。
こんなの誰か最後まで読んでくれるんだろうか…
読んで下さった方ありがとうございます。(いたらだけど)
それと1mmでもお役にたてれば幸いです。(A;´・ω・)アセアセ

あぁ、そういえば昨日ブログの目的は『自分の成長のため』って書きましたが、
それに加えて『あわよくば、どなたかのお役にたてることを願って』ですね。
それでは~(_´Д`)ノ~~サヨーナラー


拍手する

ブログはじめてみました。

どうも、はじめましてモチオです。ゃぁo(゚ー゚*o)(ノ*゚ー゚)ノゃぁ
勢いにまかせてブログをはじめてみました。
今日思い立って今日初めてみました。
ほんと勢いだけです。(゚∀゚)アヒャヒャヒャヒャ

とりあえず最初に自己紹介をば…。

東京在住、5年くらいゲーム畑で仕事をしております。
職種は3Dアニメーター(モーションデザイナー)
…なんですが最近はもっぱらプラグインやらなにやらを作ってばっかでモーション作ってません。
最近流行り(?)のテクニカルアーティストもどきです。
自分で言ってるだけですが。(*´Д`)=3ハァ
使用してるメインツールはXSI。
MAXとかMAYAとかMotionBuilderとか使ったことありません。
I LOVE XSI!!!(キモ

一応能力的に出来ることとしては JScript、VBA、PHP、HTML、CSS くらいでしょうか。
うーん…あんまりパッとしないなぁ。


ブログの方針としては

・XSI自作プラグイン/スクリプトの公開
・覚えたこと/勉強したことメモ
・興味ある記事のリンク
・作ったモーションの公開

ということができればいいかなーと今は思ってます。
まぁプラグインなんて公開したところで誰も使ってくれないでしょうから、
とりあえず主な目的としては自分のスキルアップが一番ですかね。うん。
1年後、自分的に成長してれば万々歳です。



…といろいろ書いてはみたものの…作っただけだからたぶん誰も来ねぇ… ヾ(・・;)ォィォィ
少なくとも誰かに見てもらわないとモチベーション保てませんがな。
ど、どうすれば…。ウァァン(ノД`)・゜・。
とりあえず自然な流れとしてはXSI道場に登録してもらうことですかね。
ということで申請してきまーす。\(>∀<)/