2012/01/18

にわかスクリプト~範囲外削除的な何か

数千フレームあるモーキャプのデータを削ったり何だりするのは重いわけですよ。

面倒くさい。

ていうか大量に選択してアニメーションエディタで消し続けるとメモリ不足でSIさんが逝ってしまう。

32bitマシンでメモリに限界がある上にCPUもそんなに強くない。仕方ない。


てことで調べてみたんです。SDKガイドとやらを。

するとなんとDeleteKeysなんて便利そうなもんがあるじゃあないですか。


で、弄り回してたんですが取得した値を入れようとすると型が違うわボケって怒られて、
もうわからなくなったので友人にメールして解決!


・・・前置きが長くなりましたが私は特に何もしてません。教えてもらっただけです。
けど書いちゃいます。

私のようなヘルプ見ただけじゃサッパリな勘の鈍い紳士淑女用に。


ちなみにVBで教えてもらったのをJSに直してます。
何がいいのか分からないけどなんとなくJSでやってみようかなとか思ったりして。
--------------------------------------



//選択している物
var oSel = Selection(0);  

//上で取得したoSelの子供を取得。名前とタイプは指定なし。
var oModels = oSel.FindChildren( "", "" );

//シーンのスタートとエンドフレーム取得
oStr = GetValue ("PlayControl.In")
oEnd = GetValue ("PlayControl.Out")

//削除フレーム範囲
oStFlame = oStr - 51
oEnFlame = oEnd + 51

//範囲内キーフレーム削除
DeleteKeys( oModels, "0", oStFlame, "False", "False", "siAnimatedParameters" );
DeleteKeys( oModels, oEnFlame, 999999, "False", "False", "siAnimatedParameters" );



--------------------------------------
多分動く。動くはず…。


とりあえず今の状態だと、選択してるモデル階層下で、
現在のスタートフレーム - エンドフレームの前後50フレーム以外の
キーフレームを削除。って感じなはず。

正しくは0~(スタートフレーム-51)と(エンドフレーム+51)~999999フレームの間。


まぁとりあえず単純なもの作って今の作業だけでも効率化できれば儲けもんってことで。


キャプチャデータ扱う場合はそこそこ使いそうな類のものだし、少しずつ改良していく予定。
スクリプトの勉強のためにもね。

・PPGつけて範囲とか、色々選択できるようにしたい
・エクセルの表から数値を拾ってくるようにもしたい

とりあえず考えてるのはこれくらい。あ~めんどくさそ。

本当に単純で、知ってる人が見たら駄目だこりゃってレベルのものだろうけど、
これだけでも作業効率がかなり上がって嬉しかったのでこれをキッカケに
しょぼいながらもスクリプト勉強しようと思った次第です。


因みに私の助けに答えてくれた友人のブログはこちら↓
http://g-web.s-lines.net/
思いっきり私の実名宛にメモってくれてますw


つづく・・・はず(;・∀・)

0 件のコメント:

コメントを投稿