SAC for Maya様。
SAC 必要なんです。俺には。 アニメーションを他のオブジェクトに複製するツールです。
XSI 版は、やはり古いな・・・・ 2007年らしい。
http://junkithejunkie.cocolog-nifty.com/blog/2007/11/sac_b2b3.html
(mel)
-------------------------------------------------
// SAC
// 最初に選んでいるオブジェクトのアニメーションを、2個目以降に選んでいるオブジェクトにコピーする
string $sels[] = `ls -sl`;
copyKey -time ":" -hierarchy none -controlPoints 0 -shape 1 $sels[0];
pasteKey -option replaceCompletely;
-------------------------------------------------
SACforMaya.mel
アニメーションのあるオブジェクトをひとつ選びます。 次にアニメーションをコピーしたい行き先のオブジェクトをいくつでも選びます。 その状態でスクリプトを実行すると、最初のオブジェクトのアニメーションが、2つ目以降のオブジェクトにコピーされます。 そんだけです。
いやほんと、だからどうだというアレではありません。 XSI でずっと使ってきた SAC と同じ感覚でアニメーションをコピーしたかったというだけです。 標準のアニメーションコピペが面倒だなーとか、ペーストのオプションで replace とか merge とか気にするのかったるいなーとか感じたので、SAC っぽい感じにしようとしただけなんです。 全然大したものではありません。
コピー元のオブジェクトでアニメーションされていないチャネルは、コピー先では何もいじらないようですね。
例えば、位置のキーはあるけれど回転のキーが無いオブジェクトAをコピー元にしたとします。 一方、コピー先であるBには位置のキーも回転のキーもあります。
この状態で実行すると、Aの持つ位置のアニメーションは、Bの位置のアニメーションを上書きします。 Bがもともと持っていた位置アニメーションは跡形も無く消え、Aと同じアニメーションになるということです。 一方、Aは回転アニメーションを持っていないため、Bがもともと持っている回転アニメーションをいじりません。 Aに合わせて回転アニメーションを消し去ったりはしないということです。 結果Bは、自分がもともと持っていた回転アニメーションはそのまま残り、位置アニメーションのみAに合わせて上書きされます。
スクリプティング的には、よく分からないまま人に聞きながら書いちゃったんですが、一応ちゃんと動いているように見えるなあ。 落とし穴あるかなあ。 何か気づくことあれば、どうかご指摘下さい。
copyKey コマンドでは、 -controlPoints 0 -shape 1 あたりがよく意味分からんのだよな。 それ以外は、 タイムレンジの指定が数値ではしていなくて ":" (コロン)のみなのでこれは全部のキーを表し、階層の下位のオブジェクトは無視して今選ばれているオブジェクトのみを対象にする。 そしてコピーするアニメーションは選択しているブツのうちゼロ番目(つまり最初の1個)から取ってくると書かれていますよね。 そういうつもりで書きました。
pasteKey コマンドでは、-option replaceCompletely ってのが、元のアニメーションをまるっきり置き換えてしまうというオプションですね。 ただし前述のごとく、コピー元のオブジェクトでキーが無いチャネルは、無視するようですね。 そしてこの書き方だと、コピー元のオブジェクト自身にもペーストしちゃってますね。 まあ問題ないですよね。
とかなんとか。
まだまだ恥ずかしいくらいの初心者ですよ、ええ。 必死で自分のブログにメモですよ。
でも mel は初心者レベルでスルーしてしまいたい気分だなあ・・・。python に走った方が良さそうに見えるんだよなあ。
XSI村で話しでいだ JScript なまりは、ここでは通用しねのがな・・・・ mel はなんだが変だすけやりっとねんだげどな・・・
.
SACforMaya.mel
アニメーションのあるオブジェクトをひとつ選びます。 次にアニメーションをコピーしたい行き先のオブジェクトをいくつでも選びます。 その状態でスクリプトを実行すると、最初のオブジェクトのアニメーションが、2つ目以降のオブジェクトにコピーされます。 そんだけです。
いやほんと、だからどうだというアレではありません。 XSI でずっと使ってきた SAC と同じ感覚でアニメーションをコピーしたかったというだけです。 標準のアニメーションコピペが面倒だなーとか、ペーストのオプションで replace とか merge とか気にするのかったるいなーとか感じたので、SAC っぽい感じにしようとしただけなんです。 全然大したものではありません。
コピー元のオブジェクトでアニメーションされていないチャネルは、コピー先では何もいじらないようですね。
例えば、位置のキーはあるけれど回転のキーが無いオブジェクトAをコピー元にしたとします。 一方、コピー先であるBには位置のキーも回転のキーもあります。
この状態で実行すると、Aの持つ位置のアニメーションは、Bの位置のアニメーションを上書きします。 Bがもともと持っていた位置アニメーションは跡形も無く消え、Aと同じアニメーションになるということです。 一方、Aは回転アニメーションを持っていないため、Bがもともと持っている回転アニメーションをいじりません。 Aに合わせて回転アニメーションを消し去ったりはしないということです。 結果Bは、自分がもともと持っていた回転アニメーションはそのまま残り、位置アニメーションのみAに合わせて上書きされます。
スクリプティング的には、よく分からないまま人に聞きながら書いちゃったんですが、一応ちゃんと動いているように見えるなあ。 落とし穴あるかなあ。 何か気づくことあれば、どうかご指摘下さい。
copyKey コマンドでは、 -controlPoints 0 -shape 1 あたりがよく意味分からんのだよな。 それ以外は、 タイムレンジの指定が数値ではしていなくて ":" (コロン)のみなのでこれは全部のキーを表し、階層の下位のオブジェクトは無視して今選ばれているオブジェクトのみを対象にする。 そしてコピーするアニメーションは選択しているブツのうちゼロ番目(つまり最初の1個)から取ってくると書かれていますよね。 そういうつもりで書きました。
pasteKey コマンドでは、-option replaceCompletely ってのが、元のアニメーションをまるっきり置き換えてしまうというオプションですね。 ただし前述のごとく、コピー元のオブジェクトでキーが無いチャネルは、無視するようですね。 そしてこの書き方だと、コピー元のオブジェクト自身にもペーストしちゃってますね。 まあ問題ないですよね。
とかなんとか。
まだまだ恥ずかしいくらいの初心者ですよ、ええ。 必死で自分のブログにメモですよ。
でも mel は初心者レベルでスルーしてしまいたい気分だなあ・・・。python に走った方が良さそうに見えるんだよなあ。
XSI村で話しでいだ JScript なまりは、ここでは通用しねのがな・・・・ mel はなんだが変だすけやりっとねんだげどな・・・
.
| 固定リンク
コメント