XSIユーザーから観たMELスクリプトについて 其の一八
次はソフトボディ
今回はグリッドに足して色々仕掛けてます。
global proc makeFlag1() { string $pname[] = `nurbsPlane -width 12.0 -lengthRatio 0.5 -patchesU 12 -patchesV 12`; rotate 0 90 0; string $soname[] = `soft -goal 0.5 $pname[0]`; setAttr($pname[0] + ".visibility") 0; string $tname[] = `turbulence -pos -6.0 0.0 0.0 -magnitude 100.0 -attenuation 0.0`; connectDynamic -f $tname[0] $soname[0]; expression -o $tname[0] -s "phaseX = 10.0 *frame;\ phaseY = 10.0 *frame;\ phaseZ = 10.0 *frame;"; }
グリッド(旗)を動かしてますね。
まぁ全然ダメですが。。
では説明。
string $pname[] = `nurbsPlane -width 12.0 -lengthRatio 0.5 -patchesU 12 -patchesV 12`;
プレーンのサイズを決めて作成。他にもこんな感じで設定します。
string $soname[] = `soft -goal 0.5 $pname[0]`;
ソフトボディの設定アニメさせたいんで-goalが必要。この0.5はプレーンに準ずる値になる。
なので1.0ならプレーンにビッタリ張り付いて動きません。逆だとかなり動きます。
setAttr($pname[0] + ".visibility") 0;
ターゲットになるプレーンをハイド
string $tname[] = `turbulence -pos -6.0 0.0 0.0 -magnitude 100.0 -attenuation 0.0`;
ソフトボディの設定。 タービュランスがXに-6位置に発生しその強さが100.0で減衰は無し
connectDynamic -f $tname[0] $soname[0];
ソフトボディのリンク付け
expression -o $tname[0] -s "phaseX = 10.0 *frame;\phaseY = 10.0 *frame;\phaseZ = 10.0 *frame;";
エクスプレッションの式 -o $tname[0]でタービュランスに設定と定義
式は(XYZ位相に10*カレントFを代入してアニメーションしてます。
※アニメーションは他にも「frequency」もある。
以上の事を気をつければ、設定自体少ないので、分かりやすいかも。
ではその応用。
乱流の強さ、張り付き度、XYZ各位相の強さを引数で指定
global proc makeFlag2(float $Goal , float $Mag , float $PheX , float $PheY , float $PheZ) { string $pname[] = `nurbsPlane -width 12.0 -lengthRatio 0.5 -patchesU 12 -patchesV 12`; rotate 0 90 0; string $soname[] = `soft -goal $Goal $pname[0]`; setAttr($pname[0] + ".visibility") 0; string $tname[] = `turbulence -pos -6.0 0.0 0.0 -magnitude $Mag -attenuation 0.0`; connectDynamic -f $tname[0] $soname[0]; expression -o $tname[0] -s ("phaseX = "+ $PheX + "*frame;\ phaseY = "+ $PheY + "*frame;\ phaseZ = "+ $PheZ + "*frame;"); }
$PheXを足すところは以前習った方法でやるとかなりやりやすいですね。
こんな感じでソフトボディを実行できます。
よし。
では次はコンストレインについて書きます。
では…