2012/08/09

にわかスクリプト~毎回ゴースティング設定したり消したり付けたり面倒くさかったんです。

見るからに怒られてしまいそうな感じですごめんなさい。
綺麗にいかないのを整理もせずに放置して忘れるの防止の意味も込めて(´・ω・`)

選択してるオブジェクトのアニメーションゴースティングの表示非表示を
切り替えたかったので書いてみたが何かスマートじゃないわね。いつものことながら。
とりあえず軌跡とか見るとき便利かな~と。。

ほんとにコレで大丈夫か。。動いてるからまぁ、いいか・・・いいのか・・?

因みにLayerのゴースティングのチェックとCameraVisibilityのCurvesには何もしてませんですはい。
var oCam = GetViewCamera(-1);
var oCamA = GetViewCamera(0);
var oCamB = GetViewCamera(1);
var oCamC = GetViewCamera(2);
var oCamD = GetViewCamera(3);
var oLastF = GetValue( "PlayControl.Out" );

for (i=0; i<Selection.count; i++)
{
 {
 var Ghosting = GetValue(Selection(i) + ".visibility.ghosting", null);
 var Ghosttype = GetValue(Selection(i) + ".visibility.ghosttype", null);
 }

 if (Ghosting == false )
 {
 SetValue(Selection(i) + ".visibility.ghosting", true, null);
 SetValue(Selection(i) + ".visibility.ghosttype", 1, null);
 
 }
 else
 {
 SetValue(Selection(i) + ".visibility.ghosting", false, null);
 }
}

var Camdisp = GetValue(oCam + ".camdisp.animghostfade",null);

if (Camdisp == true )
 {
 SetValue(oCam + ".camdisp.animghostenable", true, null);
 
 SetValue(oCam + ".camdisp.animghostframesbefore", oLastF, null);
 SetValue(oCam + ".camdisp.animghostframesafter", oLastF, null);
 SetValue(oCam + ".camdisp.animghostframestep", 1, null);
 SetValue(oCam + ".camdisp.animghostfade", false, null);
 SetValue(oCam + ".camdisp.animghostontop", true, null);
 
 SetValue(oCam + ".camdisp.animghosttrailsamples", 10, null);
 SetValue(oCam + ".camdisp.animghostvelocityscale", 1, null);
 
 SetValue(oCam + ".camdisp.keybeforecolorred", 1, null);
 SetValue(oCam + ".camdisp.keybeforecolorgreen", 0, null);
 SetValue(oCam + ".camdisp.keybeforecolorblue", 0, null);
 SetValue(oCam + ".camdisp.keyaftercolorblue", 1, null);
 SetValue(oCam + ".camdisp.keyaftercolorgreen", 0, null);
 SetValue(oCam + ".camdisp.keyaftercolorred", 0, null);
 
 SetValue(oCam + ".camdisp.framebeforecolorred", 1, null);
 SetValue(oCam + ".camdisp.framebeforecolorgreen", 0, null);
 SetValue(oCam + ".camdisp.framebeforecolorblue", 0, null);
 SetValue(oCam + ".camdisp.frameaftercolorblue", 1, null);
 SetValue(oCam + ".camdisp.frameaftercolorgreen", 0, null);
 SetValue(oCam + ".camdisp.frameaftercolorred", 0, null);
 
 SetValue(oCamA + ".camdisp.animghostenable", false, null);
 SetValue(oCamB + ".camdisp.animghostenable", false, null);
 SetValue(oCamC + ".camdisp.animghostenable", false, null);
 SetValue(oCamD + ".camdisp.animghostenable", false, null);
 SetValue(oCam + ".camdisp.animghostenable", true, null);
 }
else
 {
 SetValue(oCamA + ".camdisp.animghostenable", false, null);
 SetValue(oCamB + ".camdisp.animghostenable", false, null);
 SetValue(oCamC + ".camdisp.animghostenable", false, null);
 SetValue(oCamD + ".camdisp.animghostenable", false, null);
 SetValue(oCam + ".camdisp.animghostenable", true, null);
 }


軌跡出したい奴を選んで実行。
スクリプト実行するたびにアクティブなビューでゴースティング表示のON/OFF。

ゴースティングタイプはポイントにして、長さは前後にPlayControl.Outの値入れてます。
後は、色とフェードやらXrayやらチェックしたり外したり自分好みに。


複数選択してるモデルにブラウザで選択したプリセットを一気に
適応できたらいいなって思って。

しかしすっごい無理やり感が否めない・・。

違うビューに行ったら今までのゴースティング可視状態リセットして新たに選択している
ものだけゴースティング表示にしたいんだけども、シーン内のオブジェクト全部調べたら
処理速度が残念なことになったんだよなぁ。ヌルとカーブの数だけでも8000とかあるもの。

もっとこうエレガントにしたいもんです。
そろそろ友愛とやらに挑戦してみようかなドキドキ(;´Д`)ハァハァ

そうそう、今日Twitterでプログレスバーの実験に使ってたのこれです。
例文からコピペして、break ;を消しちゃって処理速度重い!!とかなってました(;・∀・)

どうなるかは分かったけどどこで使うかはイマイチ想像できてませんorz
ワケが分からなくなりつつ今日もまた日が暮れる(´・ω:;.:...


あとコレとは別に全部一気にゴースティング周り全部OFFにしてやんぜってことで、
こんなん
var oProgressBar = XSIUIToolkit.ProgressBar ;
oProgressBar.Maximum = 100 ;
oProgressBar.Step = 1;
oProgressBar.Caption = "ちょっと待ってね(´・ω・`)";
oProgressBar.CancelEnabled = true ;
oProgressBar.Visible = true;

while( oProgressBar.Value < oProgressBar.Maximum )
{
 SetValue("Views.ViewA.*Camera.camdisp.animghostenable", false, null);
 SetValue("Views.ViewB.*Camera.camdisp.animghostenable", false, null);
 SetValue("Views.ViewC.*Camera.camdisp.animghostenable", false, null);
 SetValue("Views.ViewD.*Camera.camdisp.animghostenable", false, null);
 SetValue("*Camera*.*Camera*.camdisp.animghostenable", false, null);
 SetValue("*.visibility.ghosting", false, null);
break ;
oProgressBar.Increment() ;
}


なんとなくプログレスバー入れてみた。
サンプルのコピペまんまだけど。しかも本文全部コマンドだけど。

いやはや難しいなぁ。全然進歩する気がしなひ(´・ω:;.:...

0 件のコメント:

コメントを投稿