« スケの色。 | トップページ | ブールのトグル。 »

2012年1月 9日 (月)

ロードでポン。

いや、某所で某さんが叫んでいたので、簡単にできないかな~と。


完全に無断で、全文ママ引用しますが、


エーリック!!
頼むからサンプルシーンはリピートオフっといてくれ!!
何度気付かずにシミュまわしたことか!



だそうです。



em シリーズのエリックさんのことだと思われます。

emFluid や emVolume などで、クソ重いシミュレーションのサンプルシーンを添付する時は、再生リピートオンの状態でセーブしてくれるな、クソ重いんだから再生止められなくなるだろゴルァ  ということだと思います。 でも独逸語で言わないと通じないかもしれません。 だんけしぇーん。 通じたかな。






ならば、シーンをロードし終わった瞬間に再生リピートを有無を言わさずオフってしまえばいいのではないか、と思ったんですよね。 


そういうことをするためにある機能が、カスタムイベントだと思います。


 新規シーンを作ったら、自動でこれしなさい
 レンダ終わったらこれしなさい
 インポート始めるときは先にこれをしなさい
 シーンのロードが終わったらこれしなさい


みたいな、何かが始まるとき・終わるときに XSI 様にやって頂く行動を、スクリプトで書いておくというものです。 始まる・終わるに限らず、トリガになるイベントはいっぱい用意されてますね。 選択しているブツが変わったら、とかいうイベントもありますね。 



俺の場合、大昔に撲滅アンビエンスというプラグインでカスタムイベントを使ったことがありました。その他も数回使ったことがあったけど、何年ぶりかで使い方忘れてました。なので調べてみたら、簡単にできました。



ロードでポン。

ダウンロード LoadDePon.js (0.8K)


どんなシーンでも、ロードが終わった瞬間に、スクリプトで書いたことが実行されます。 今回の場合は、サンプルとして「再生リピートをオフにする」というスクリプトを埋め込んでいますが、そこを書き換えて使えばいいと思います。





短いのでソース丸ごと載せます。


----------------------------------------------------------------

function XSILoadPlugin( in_reg )
{
    in_reg.Author = "junki";
    in_reg.Name = "LoadDePon Plug-in";
    in_reg.Major = 1;
    in_reg.Minor = 0;

    in_reg.RegisterEvent("LoadDePon_EndSceneOpen",siOnEndSceneOpen);
    //RegistrationInsertionPoint - do not remove this line

    return true;
}

function XSIUnloadPlugin( in_reg )
{
    var strPluginName;
    strPluginName = in_reg.Name;
    Application.LogMessage(strPluginName + " has been unloaded.",siVerbose);
    return true;
}


// Callback for the EndSceneOpen event.
function LoadDePon_EndSceneOpen_OnEvent( in_ctxt )
{
    Application.LogMessage("LoadDePon_EndSceneOpen_OnEvent called",siVerbose);

    Application.LogMessage("FileName: " + in_ctxt.GetAttribute("FileName"),siVerbose);

    Hage();
   
    return true;
}

function Hage()
{
   
 //    ここを書き換えるんだよハゲ
   
SetValue("PlayControl.Loop", false, null);
}


----------------------------------------------------------------

SDK ウィザードってやつで作りました。チョー簡単でした。

セルフインストール形式のプラグインです。 なのでスクリプトエディタで走らせるようなものであはありません。 Plugins フォルダにファイルをブチ込んで、XSI を再起動するか Plugin マネージャから Reload して下さい。

プラグインフォルダってのは例えばこういう場所です。
C:\Users\<あんたのユーザ名>\Autodesk\Softimage_2012_SP1\Application\Plugins





で、緑の字の部分 = Hage ファンクションの中の、赤字の部分が実際の処理なので、ここを自分の好きなコードに書き換えればいいだけです。 何行書いてもいいし、外部ファイルを呼び出してもいいし。

今回の場合は、再生リピートをオフにしたいという例なので、上のような書き方になってます。 実際に XSI のインターフェース上で再生リピートボタンを何度か押してみて、スクリプトエディタにログされた結果をコピペしただけです。 

これで、うっかり者のエリックくんが再生リピートオンのままセーブしてしまったシーンでも、このカスタムイベントが効いている限り、ロードが終わった時点で必ず再生リピートはオフになります。 独逸語を勉強せずに済みました。 デコのスペキュラにも磨きがかかります。



ちなみにこのカスタムイベントを無効化したい場合は、上記のファイルを Plugins フォルダから削除してもいいし、プラグインマネージャから一時的にミュートしてもいいです。

Mute





さて、現実逃避はここらでやめて、仕事に戻りますかね・・・・・。
ああ、仕事と関係のないスクリプト書きって、なんて楽しいんでしょう。

.

|

« スケの色。 | トップページ | ブールのトグル。 »

コメント

コメントを書く



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




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/53695885

この記事へのトラックバック一覧です: ロードでポン。:

« スケの色。 | トップページ | ブールのトグル。 »