パーティクルを自動的に発生させるためにはemitterコマンドを使用する。
emitterによって点・面などから発生させたパーティクルのアトリビュートをキーフレームやエクスプレッションによって変化させてアニメーションさせることができる。
以下のMELコマンドをスクリプトエディタに打ち込んで実行すると 3つの点からできたパーティクルが作られ、その3つのパーティクルからエミッターによって全方向(omni)にパーティクルを発生させる。
particle -p 1 0 0 -p 0 1 0 -p 0 0 1;
$name = `emitter -rate 10 -minDistance 1.5 -maxDistance 2.5`;
particle;
connectDynamic -emitters $name;
particle -p 1 0 0 -p 0 1 0 -p 0 0 1;
このパーティクルがエミッターによってパーティクルの発生源となる。
$name = `emitter -rate 10 -minDistance 1.5 -maxDistance 2.5`;
エミッターによって全方向(omni)に10の割合で1.5から2.5の間にパーティクルを発生させる。
particle;
このパーティクルがエミッターによって発生させられるパーティクルになる。
connectDynamic -emitters $name;
現在セレクトされているパーティクル(すぐ上のparticle)をエミッター($name)から発生するエミッターとする。
以下のMELスクリプトをmakeEmitter1.melというファイルに書き込んで実行できるようにせよ。
このスクリプトは球の表面からパーティクルを発生させて(-type "surface")、パーティクルと球をエクスプレッションで回転させるプロシージャである。
global proc makeEmitter1()
{
string $name[] = `sphere`;
scale 5 5 5;
expression -object $name[0] -string "ry = 30 * time";
string $ename[] = `emitter -type "surface" -normalSpeed 1.0 -tangentSpeed 0.0 -rate 1 $name[0]`;
string $pname[] = `particle`;
expression -object $pname[0] -string "ry = 30 * time";
connectDynamic -emitters $ename $pname[0];
}
string $name[] = `sphere`;
NURBSの球を作り、$nameに球の名前を代入しておく。
scale 5 5 5;
球を大きさ(スケール)を5にしておく。
expression -object $name[0] -string "ry = 30 * time";
$name[0]で表される球に対してry = 30 * time
というY軸方向に回転させるエクスプレッションを定義しておく。
string $ename[] = `emitter -type "surface" -normalSpeed 1.0 -tangentSpeed 0.0 -rate 1 $name[0]`;
-type "surface"によってNURBSのオブジェクト表面からパーティクルの現れるエミッターを作る。
string $pname[] = `particle`;
エミッターによって出現するパーティクルを作り、作られたパーティクルの名前を$pnameに代入しておく。
expression -object $name[0] -string "ry = 30 * time";
$pname[0]で表されるパーティクルに対してry = 30 * time
というY軸方向に回転させるエクスプレッションを定義しておく。
(上で球に対して定義したエクスプレッションと同じもの)
connectDynamic -emitters $ename $pname[0];
$pname[0]で表されるパーティクルに対してエミッター($ename)をコネクトする。