ソフトボディ

ソフトボディとは

ソフトボディ によってNurbs、ポリゴンやラティスを柔らかい物体として表現できる。
ソフトボディを作ると対応するCVや頂点にパーティクルが作られ、そのパーティクルがフィールドなどによってアニメーションすると対応したCVや頂点が同じアニメーションをする。
ソフトボディを作るにはsoftコマンドを使用する。

softのオプション

-convert
ジオメトリをソフトボディに変換する。
-duplicate
ジオメトリのコピーをソフトボディに変換する。
ゼラチン状にゆれる形状を作る時などに使用される。
-goal float
ジオメトリのコピーをソフトボディに変換し、オリジナルのオブジェクトにしたがう値(weight)を決める。(0.0 〜 1.0)
weigthの値が0であれば、自由に動く柔らかいソフトボディになり、 1であればオリジナルと変らない固いソフトボディになる。

softコマンドの使用例

平面に球が当たってバウンドするアニメーション。
以下のスクリプトをmakeSoft1.melという名前で作り、makeSoft1();によって実行させてみよう。

global proc makeSoft1()
{
	$name1 = `sphere`;
	$name2 = `nurbsPlane`;
	scale 1 10 10 ;
	rotate 0 0 90;
	move 0 -5 0;
	collision $name2;
	$name3 = `soft -convert $name1[0]`;
	$name1 = `gravity -pos 0 10 0 -magnitude 1.0`;
	connectDynamic -fields $name1[0] -collisions $name2[0] $name3[0];
}
  1. $name1 = `sphere`; ソフトボディにするための球(sphere)を作る。
  2. $name2 = `nurbsPlane`; ソフトボディが衝突する平面(nurbsPlane)を作る。
  3. scale 1 10 10 ; 平面(nurbsPlane)を縦横10倍に拡大する。
  4. rotate 0 0 90; 平面(nurbsPlane)をZ軸方向に回転する。
  5. move 0 -5 0; 平面(nurbsPlane)をY方向に-5移動する。
  6. collision $name2; nurbsPlane($name2)のためにcollisionを作る。
  7. $name3 = `soft -convert $name1[0]`; 球($name1[0])をソフトボディにする。
  8. $name1 = `gravity -pos 0 10 0 -magnitude 1.0`; 球をアニメーションさせるためにgravityフィールドを作る。
    各フラグの意味
    -pos 0 10 0
    (0, 10, 0)の位置にgravityを作る
    -magnitude 1.0
    引力の強さ
  9. connectDynamic -fields $name1[0] -collision $name2[0] $name3[0]; フィールドとしてgravity($name1[0])を使用し、衝突(-collision)するようにソフトボディ(球、$name2[0])nurbsPlane($name3[0])をコネクトする。

練習

参考


Prev | Next
Home | Contents
abe@injapan.net