Twitterで教えてもらった。
今まで、
DeleteKeys ""&oSelection&".kine.local.*",gStrI, gStrO
って書いてたのが、オブジェクトだと""を省略できるようで
DeleteKeys oSelection & ".kine.local.*",gStrI, gStrO
って書けばいいらしい。
うむ。次回からこれで!!
まったり3DCG生活
Twitterで教えてもらった。
今まで、
DeleteKeys ""&oSelection&".kine.local.*",gStrI, gStrO
って書いてたのが、オブジェクトだと""を省略できるようで
DeleteKeys oSelection & ".kine.local.*",gStrI, gStrO
って書けばいいらしい。
うむ。次回からこれで!!
●前回の記事
↓
●JScriptバージョン
http://lazycg.blogspot.com/2012/01/blog-post_18.html
↓
●JScriptバージョン改(Junkiさん)
http://junkithejunkie.cocolog-nifty.com/blog/2012/01/post-4901.html
って感じでなんか盛り上がってたのでVBSバージョン書いてみました。
JunkiさんみたくPPGでスイッチを作ろうと思ったのですが、
VBSだとロジック書くの面倒だし…
って事でチェックボックスで範囲指定するバージョンです。
使えれば良い。
●プレイコントロール以外の範囲の、
選択したモデル階層以下のアニメーションを消去するスクリプト
'選択したものの名前を取得
oSelection = GetValue("SelectionList")
'プレイコントロールを取得
oStr = GetValue ("PlayControl.In")
oEnd = GetValue ("PlayControl.Out")
'取得した値を計算して変数に割り当てる
oS = oStr - 1
oE = oEnd + 1
'キーを消す
DeleteKeys ""&oSelection&".*.kine.local.*",0, oS
DeleteKeys ""&oSelection&".*.kine.local.*",oE, 99999
'最初に選択したものを選択
SelectObj ""&oSelection&""
その1~その3のスクリプトをアドオン化しました。
左から順番に1.2.3
アドオンは
→ http://g-web.s-lines.net/xsiaddon/Camera_switcher.zip
※右クリックでなまえをつけて保存
問題は作成されるCamera_OptionのPPGレイウトを格納していないこと。
※シーンを開きなおすとボタンがなくなります。
リアルタイム系の仕事であればちょっとは効率上がりそうな気がします。
おわり。
その2まではVBScriptでできたのですが、その後がVBScriptだと対応が難しかったのでJScriptで書きました。
スイッチャーって事でスイッチ作りです。
問題になるのは1点
・カメラの名前が常に一緒ではない。
という事は…
・カメラの数だけ繰り返しPPGでボタン作成。
・カメラの数だけ繰り返しfunction作成。
・カメラの数だけLogicに書き込み
・カメラがつながっているものはボタンをつくらない。
という事をやらなければなりません。
つねに動的なものを作成しなければなりません。
SoftimageのSDKにはまったく例文がないので、JScript初心者の自分にはかなりつらかったですが、色々な人に聞いてようやくできました。
カメラをスイッチングで切り替えたい。
カメラのルールを勝手に作ってしまえ。という事で考えました。
・カット名_スタートフレーム_エンドフレーム
→CAM_c00_0000_1000
というモデルの中にカメラをつっこんだ状態のカメラを使う。
※とりあえずカメラ作成スクリプト
VBScriptだとPPGのLogicの設定が大変。
Function読み込めないし…
ということでLogic使うものに関してはJScriptに以降します。
まず、よく使う、選択されたものの数だけ繰り返すSelectionListの構文
VBScriptだと、
'++++VBScript++++
set oSelection = GetValue("SelectionList")
i=0
for each mm in oSelection
DnList=oSelection(i)
LogMessage ""&DnList&""
i=i+1
next
'++++おわり+++
こんな感じ。
JScriptだと、
//++++JScript++++
oSelection = GetValue( "SelectionList" );
for(var i=0; i < oSelection.Count ; i++)
{
DnList=oSelection(i);
LogMessage (DnList);
}
//++++おわり++++
こんな感じ。
ついでにPythonだと
#++++Python++++
oSelection = Application.Selection
for i in range(oSelection.Count):
Application.LogMessage(oSelection(i))
#↑Applicationの前に改行追加
#++++おわり++++
こんな感じ。
使う文字的には大体一緒だけど書き方がちょっと違います。
クリエーターにおすすめはVBScript
テクニカルディレクターにおすすめはJScript
他のソフトも使う人にはPythonをすすめしたいと思います。
よくリアルタイムとかの仕事でフェイシャルのアニメーションを0f~順番につけたものを、フェイシャルターゲットです。って言われて渡されるかと思います。
で、なぜか間のキーが抜けてたりとか、パターンの数が毎回違ってたりとかでスクリプト化するのが面倒だなって思ったので、汎用的なものを作ってみました。
ちょっとの書き換えで、1案件すべてのものに使えるスクリプトがつくれるとようにと、解説付きです。
+++事前にやっておく事+++
・アニメーションされるものをグループ化しておく
・グローバルイン、アウトフレームをあわせる
・最終フレームにキーを入れておく
※トップ階層のModelを選択しながら実行
アニメーションレイヤーを使いたくない人むけ。
オフセットリグをセットアップしてくれるスクリプトです。
・Model階層の下にあるNullに対して作成するものです。
・初期設定では最上位のModelの最初の4文字を抜き出して名前をつけます。
・複数選択可能。親子階層になってるものはお勧めしません…
※オフセットリグをくっつけたいNullを選択しながら実行