ソフトボディ によってNurbs、ポリゴンやラティスを柔らかい物体として表現できる。
ソフトボディを作ると対応するCVや頂点にパーティクルが作られ、そのパーティクルがフィールドなどによってアニメーションすると対応したCVや頂点が同じアニメーションをする。
ソフトボディを作るには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];
}
$name1 = `sphere`;
ソフトボディにするための球(sphere)を作る。
$name2 = `nurbsPlane`;
ソフトボディが衝突する平面(nurbsPlane)を作る。
scale 1 10 10 ;
平面(nurbsPlane)を縦横10倍に拡大する。
rotate 0 0 90;
平面(nurbsPlane)をZ軸方向に回転する。
move 0 -5 0;
平面(nurbsPlane)をY方向に-5移動する。
collision $name2;
nurbsPlane($name2)のためにcollisionを作る。
$name3 = `soft -convert $name1[0]`;
球($name1[0])をソフトボディにする。
$name1 = `gravity -pos 0 10 0 -magnitude 1.0`;
球をアニメーションさせるためにgravityフィールドを作る。
connectDynamic -fields $name1[0] -collision $name2[0] $name3[0];
フィールドとしてgravity($name1[0])を使用し、衝突(-collision)するようにソフトボディ(球、$name2[0])nurbsPlane($name3[0])をコネクトする。