Digital DNA

技術メモ トップ


CG総合
フォトショップ
頭部のモデリング
人体のモデリング


3ds Max
基本操作1
基本操作2
モデリング1
アニメーション
Character Studio 1
Character Studio 2
標準ボーンの伸縮1
標準ボーンの伸縮2

その他

Maya
・制作中




3dsMax Memo (Bone)
双方向から伸縮するボーン
ここで解説する方法では、ボーンの始点側と終点側、どちらからでも伸縮できます。

3dsMAX の DVD のMoviesフォルダに「Head_BonesRig.mov」というフェイシャルリグのサンプルムービーが収録されています。このサンプルでは、くちびる部分のボーンが自在に伸縮しています。
このようなボーンの作り方です。

実際のところ、ダミーなどを配置してボーンオブジェクトとして設定すればよいので、必ずしも標準ボーンを使う必要はなかったりします。
ここでは実数スクリプトを使用していますが、このような方法を使わなくても実現できる方法があるようです。でも、やり方が分からなかったので……。


手順
:始点のボーンとエンドを配置して、HIソルバを設定。
:始点のボーンの親にヘルパーのポイント(ボックス)を設定。
:ヘルパーのポイント(ボックス)を配置し、IKの親に設定(※実際には不要ですが、便宜上配置しています)。


:エンドのボーンの[X位置]を実数スクリプトにし、以下のような式を書きます。
[X位置]に式を書くだけで、X,Y,Z各方向の移動に対して伸縮します。
dependsOn $[IK名].pos.controller $[伸縮するボーン名].pos.controller;
dependsOn $[始点側のポイントヘルパ名].pos.controller $[終点側のポイントヘルパ名].pos.controller;
d = distance $[IK名].pos $[伸縮するボーン名].pos;
st = (d - [元々のボーンの長さ※]);
orig = [元々のボーンの長さ※];
p = orig + st;

※スクリプトコントローラのウィンドウが開いた時、式の欄に表示されている数値です。
式の例:
dependsOn $IK_Chain01.pos.controller $Bone01.pos.controller;
dependsOn $Point01.pos.controller $Point02.pos.controller;
d = distance $IK_Chain01.pos $Bone01.pos;
st = (d - 53.4679);
orig = 53.4679;
p = orig + st;


参考
双方向から伸縮するボーンについては、
こちらのサイトに掲載されているサンプルを元に作りました。
comet-cartoons.com (3D Helpのページ参照)
私自身よく分からないまま作った部分があるので、誤りの指摘や、もっといい方法をご存じの方はご教授下さい。


関連
dependsOn関数についてはこちらのページを参照。





 
Get FireFox
Digital DNA Motion Library 技術メモ 業界メモ イベントレポート フリーテクスチャ リンク集 Digital DNA