Biped関連 Bipedを操作しよう01


あまり、つっこんだリサーチを行っていなかったBip周り
すこし、つっこんで調べてみよう。

そうだな、たとえば・・・・
Bipedをボーンなどで作ったJoint構造にアタッチするなど。

通常のコントローラーと違うので、
基本相容れないだろう、この2種を混同できたらどうだろうかな

単刀直入に、

Biped → Joints、もしくは、Joints → Biped。

などなど。

それでは、ちょいとばかり
適当に、プロパティ周りを叩いた様子をメモメモ

/*
$は現在選択しているオブジェクト
bip全てのnodeの場合s最後の引数は1~22までは大丈夫だった
*/
biped.getNode $ 22;

/*ノードの情報を書き出し*/
for i=1 to 22 do
(
 print(biped.getNode $ i);

);–for end

/*
トランスフォームのテスト
Bip全てのNode意外は回転のみが張り付く
スケールは完全無視
*/
$Bip01.transform = $Box01.transform;
$’Bip01 L UpperArm’.transform = $Box01.transform;

/*
これが基本のTransform操作みたい、割り当ては絶対値かな?
最後のfalseは、アニメーションキーを作成するかの部分
*/
biped.setTransform $ #pos [0,0,0] false;
biped.setTransform $ #rotation (quat 0 0 0 1) false;
–スケールは相変わらずフィギュアモードでしか反応しない
biped.setTransform $ #scale [2,2,2] false;
–コレでもあり
rotValue = $Box01.rotation;
biped.setTransform $ #rotation rotValue false;

/*
フィギュアモード下でbip間接のTransformをオブジェクトに対象の値を入れてみる
*/
tagObj = $Box01.transform;

biped.setTransform $ #pos (tagObj.translationpart) false;
biped.setTransform $ #rotation (tagObj.rotationpart) false;
biped.setTransform $ #scale (tagObj.scalepart) false;

このなかで、一番注目するのは最後の
biped.setTransform $ #XXXXX YYYY false;などの
トランスフォームを操作するやつ。

MELで言うところの、xformにや、move、rotate、scaleに該当する機能だね。
絶対値で扱われているみたいだから、扱いやすいかも。
MELみたいに相対(Relative)とか簡単に引数で設定できればいいのになぁ・・・。

ただし、matrix行列をそのまま与えたところ、
45度ずつずれていたようで。
このあたりは、matrixの行列をちょいとイジッてやる必要があるみたいかな。

ちなみに。。。

matrix行列から、各値をとりだすのには

<matrix行列>.translationpart
<matrix行列>.rotationpart
<matrix行列>.scalepart

こんな感じ。
至れり尽くせり。

ひとまず、Bipのトランスフォームは扱えるようになったので
自前ツールにでも早速盛り込んでみよう。

実験したときのゴミスクリプト

■■ダウンロード■■
bipをテストした時のアレ