myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

SI | キーフレームの位置の数値をずらすスクリプト

金曜日にXSIbase に出た質問。
モーションが入っているカメラをカメラルートから切って、シーンルートの子にしたい。
でもそうすると、位置が変わってしまいます。
位置が変わらずにペアレントを変える方法がありますかと。

旧親オブジェクトの位置を足せば良いだけでしょうね。

これは昔にやりたかったことがあるな~。実際に解決が出来たかどうか覚えてないです。手動で直した気がする。


でもスクリプトだったら簡単に出来そうだろうなと思い、早速書いてみました。
最初にカメラを選び、次にカメラルートを選び、実行。

var oObj0 = selection(0)
var oObj1 = selection(1)
var fcx = oObj0.posx.Source;
var fcy = oObj0.posy.Source;
var fcz = oObj0.posz.Source;
if ( ClassName(fcx) == "FCurve" ){
fckeys = fcx.Keys;
for ( var i=0; i < fckeys.Count; i++ ){
fckeys(i).value = fckeys(i).value + oObj1.kinematics.global.posx.value
}
}
if ( ClassName(fcy) == "FCurve" ){
fckeys = fcy.Keys;
for ( var i=0; i < fckeys.Count; i++ ){
fckeys(i).value = fckeys(i).value + oObj1.kinematics.global.posy.value
}
}
if ( ClassName(fcz) == "FCurve" ){
fckeys = fcz.Keys;
for ( var i=0; i < fckeys.Count; i++ ){
fckeys(i).value = fckeys(i).value + oObj1.kinematics.global.posz.value
}
}


これは何分で書いたスクリプトなので使い勝手が悪い。

で、今書いてるスクリプトのGUIを少しいじったらこのスクリプトにも使えそうと思ったので今日はGUIを付けてみました。

こんな感じになりました:

DOWNLOAD



因みに、新しい親の位置は原点じゃなかったら、旧親の位置に新親の位置を手動で引いて入力すればOKです。
SIなので、PPG上で +数字 -数字 も使えます。

大した機能ではないけど、いつか役に立ちそうなスクリプトだな。

Comments

Post a comment


Only the blog author may view the comment.

Trackbacks

Trackbacks URL
http://myara.blog.fc2.com/tb.php/109-ae0fef6a
Use trackback on this entry.