ON-BLOG

CGのこと、あれこれ書いてます。

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;";
}

f:id:tommy_on:20130624215413p:plain

グリッド(旗)を動かしてますね。
まぁ全然ダメですが。。
では説明。

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;");
}

f:id:tommy_on:20130624215457p:plain
$PheXを足すところは以前習った方法でやるとかなりやりやすいですね。

こんな感じでソフトボディを実行できます。

よし。
では次はコンストレインについて書きます。
では…