2009年02月11日

キャタピラつくるスクリプト

XSIプラグイン TU_TreadsGenerator1.0

一月ほど前ですがXSI Baseにも似たようなのがありましたね。
http://www.xsibase.com/forum/index.php?board=6;action=display;threadid=38609;start=0#msg245855
デモビデオが豊富でわかりやすい。まっすぐ動かすだけだったらコッチの方が高性能で使いやすい。 けどちょっとでも曲げようものなら途端に面倒になる。

個人的には「TU_TreadsGenerator」の方がシンプルで使いやすいと思います。 コッチはキャタピラの制御が小さいサークルを回転させるだけなので、移動する動きをつけ終わってからキャタピラの動きをつけたり、 エクスプレッションやらコンストレインやらを足してリグを組むのに自由度が高いです。

でもちょっと使いにくいところがあったので改造してみました。
キャタピラのオブジェクトがモデルだった場合はインスタンスになるようにして、ヌルを作ってその子供に複製されるようにした。

103行目  
var oClones = Clone(oObj, oNum, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, true);

  var oClones;
  var oNull;
  oObj = Dictionary.GetObject(oObj);
  if( "#model" == oObj.Type ){
    oClones = Instantiate(oObj, oNum, -1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1);
   oNull = ActiveSceneRoot.AddNull();
  }else{
    oClones = Clone(oObj, oNum, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, true);
   oNull = oObj.Model.AddNull();
  }
  ParentObj(oNull, oClones);

あとプリミティブメニューに追加

10行目に追加
 in_reg.RegisterMenu(siMenuTbGetPrimitiveID,"TU_TreadsGenerator_Menu",false,false);

適当なところに追加(22行目?)
function TU_TreadsGenerator_Menu_Init( ctxt )
{
 var oMenu;
 oMenu = ctxt.Source;
 oMenu.AddCommandItem("TU_TreadsGenerator","TU_TreadsGenerator");
 return true;
}

あとは、モデリングする時って大抵Z向きにするじゃないですか。 なのでサークルのX回転でキャタピラが動くようにエクスプレッションを変更した。

108行目
   SetExpr(oPConstrains(i)+".perc", " - "+ oSecondCurve +".kine.local.rotz/03.6/" + nCurveOffset +" - "+ nPerc, null);

   SetExpr(oPConstrains(i)+".perc", " - "+ oSecondCurve +".kine.local.rotx/03.6/" + nCurveOffset +" - "+ nPerc, null);

posted by ika at 21:45 | Comment(2) | TrackBack(1) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。