一度エンベローブを適当したオブジェクトのSRTとニュートラルポーズを初期値にするために一度フリーズしてまたエンベローブを適応しなおす。
ってもの作ってたんですが。
softimageのscriptでエンベローブを適応する方法っていうと
ApplyEnvelope
ApplyFlexEnv
の二つだと思うんですが
var oSel = Selection(0);
var oEnvelope = oSel.Envelopes(0)//エンベローブ取得
var oDeformers = oEnvelope.Deformers //エンベローブのデフォーマーコレクション取得
DeleteObj( oSel+".polymsh.cls.EnvelopWeightCls*") ;//エンベローブクラスタ削除
oSel.ApplyEnvelope(oDeformers)
ってな感じで一個のオブジェクトだったら問題なく戻すことができるんですが。
これが複数のオブジェクトで適応させようと思うと。
オブジェクトごとにエンベローブデフォーマーが違う場合があるので。
var oDeformers = oEnvelope.Deformers//エンベローブのデフォーマーコレクション取得
の部分の変数を柔軟に変えたいわけですよ。
oDeformers1
oDeformers2
みたいにオブジェクト数だけ増やしたい。
oDeformers+iとかまぁ当然無理ですよね。
何かしら方法はありそうなんですけど分かったら改造でいいか。
※あばばば 配列でできました。
--------------------------------------------------------------------------------------------------------------------------------------
Softimageでは有名なRCTool過去に導入しようとしたらエラー落ちしたのでめんどくせーって導入を断念したけど
久々に調べた4.6までバージョンが上がってたので導入。
が、アドオンインストールはできてもまともに動かない。なぜじゃーってなったのでメモ役にたった記事とかのメモ。
結論だけ言うとバージョンは4.5で導入しました、4.6がちょっと上手く動かなかったので。
Softimage用のMMDで使うscriptです。
MMDの出力時には不要なShadowRigのRootを削除して親子関係を直します。
汎用性はないかなーと思います。自分専用。
softimageで作ってる方ってあんまり多くないので参考にもならんかも
というか先駆者はもっとちゃんとやり方構築されてますよねorz
で、結局これってマクロなんですよね。
やってることってモデルの中から"*root"を検索して
見つかったrootの親と子を取得して親子関係を付け直して
取得したものは消すっていうことやってます。
というてもこれが結構回数行うのでずっと似たようなもの作ろうと考えてました。
本当はもっと処理楽にしたところあるんですけどとりあえずですね。
いっぺんにやると失敗するのです
コメントはかなり細かく書くので慣れてる人からするとうっとおしいくらい書いてます。自分が後で見て分かるよう。たまにしか書かないからね。
ParentObjって子の方は複数含まれてるデータでも一気にやってくれるんですねぇ、最初はループして一個ずつ読ませてたわ。
//---------------------こっからscript--------------------------------------
//モデルを選んで実行
//親子の関係をぶった切りおじいちゃんと親子の関係を結びなおす
//なお親は世界に放り出される模様
var oCondition = "*root*"//******条件この列を書き換えてください******
var oSel = Selection(0)
var oType = oSel.Type
if (oType == "#model"){Run( );}
else{x="Modelを選択しやがれですよ";}
function Run( )//実行命令
{
var oChildren = oSel.FindChildren(oCondition,"")//名前に*rootを含む子を取得
for(var i = 0 ; i < oChildren.count ;i++){
var oRoot = oChildren(i)//root取得
var oRParent = oRoot.Parent//rootの親取得
var oRChildren = oRoot.Children//rootの子取得(複数)
ParentObj( oRParent , oRChildren);//親子関係をつける、子は複数もいけるっぽい
CutObj(oRoot);//rootを親から外す、家族の近いを切るなんてそんな って人はこめんとあうつ
DeleteObj(oChildren);//削除、消すなんてそんなって人はコメントあうつ!
}
}