エミッター
emitterコマンド
パーティクルを自動的に発生させるためにはemitterコマンドを使用する。
emitterによって点・面などから発生させたパーティクルのアトリビュートをキーフレームやエクスプレッションによって変化させてアニメーションさせることができる。
emitterコマンドのオプション
- -type string
- stringで表されるタイプでパーティクルを発生させる。
タイプの種類
- omni
- 全方向にパーティクルが発生する。(デフォールト)
- direction
- ある方向だけにパーティクルが発生する。
-directionX, -directionY, -directionZなどで方向を定める。
- surface
- オブジェクト(nurbsのみ)の表面からパーティクルが発生する。
- -directionX float
- X方向のパーティクルの発生する方向を決める。(-typeがdirectionの場合のみ有効)
- -directionY float
- Y方向のパーティクルの発生する方向を決める。(-typeがdirectionの場合のみ有効)
- -directionZ float
- Z方向のパーティクルの発生する方向を決める。(-typeがdirectionの場合のみ有効)
- -minDistance float
- パーティクルの発生し始める距離を決める。
- -maxDistance float
- パーティクルの発生が終る距離を決める。
-minDistanceから -maxDistanceまでの距離の間でパーティクルが発生する。
- -position float float float
- エミッターの位置を定める。(ワールド座標)
- -rate float
- パーティクルを発生させる割合。
この値が大きいほど発生する個数が増加する。
- -spread float
- パーティクルを発生させる角度。(-typeがdirectionの場合のみ有効)
0から1の値を指定する。
- -speed float
- パーティクルの速度。
もとの速度にこの値を乗じた値が結果の速度になる。
例えば、0.5にするともとの速度の半分の速度になる。
- -normalSpeed float
- パーティクルの直角方向の速度。(-typeがsurfaceの場合のみ有効)
- -tangentSpeed float
- パーティクルの接線方向の速度。(-typeがsurfaceの場合のみ有効)
例えば、-normalSpeed floatが1で-tangentSpeed floatが0だとオブジェクトの面と垂直方向にパーティクルが発生する。
逆に、-normalSpeed floatが0で-tangentSpeed floatが1だとオブジェクトの面と水平方向にパーティクルが発生する。
emitterコマンドの使用例1
以下の例では3つの点からできたパーティクルをつくり、その3つのパーティクルからエミッターによって全方向(omni)にパーティクルを発生させている。
global proc makeEmitter1()
{
particle -p 1 0 0 -p 0 1 0 -p 0 0 1;
emitter -rate 10 -minDistance 1.5 -maxDistance 2.5 -n emitter;
particle;
connectDynamic -emitters emitter;
}
emitterコマンドの使用例2
この例では、X方向にだけパーティクルが発生するようになっている。
(-type "direction")
global proc makeEmitter2()
{
particle -p 0 1 0 -p 1 0 1 -p 0 1 1;
emitter -type "direction" -spread 0.5
-directionX 1 -directionY 0 -directionZ 0 -rate 10 -n emitter;
particle;
connectDynamic -emitters emitter;
}
emitterコマンドの使用例3
球の表面からパーティクルを発生させて(-type "surface")、パーティクルと球をエクスプレッションで回転させるプロシージャ。
global proc makeEmitter3()
{
$name = `sphere`;
scale 5 5 5;
expression -object $name[0] -string "ry = 30 * time";
emitter -type "surface" -spread 0.0 -rate 1 -n emitter;
$name = `particle`;
expression -object $name[0] -string "ry = 30 * time";
connectDynamic -emitters emitter $name[0];
}
練習
- 使用例2の最初のparticleコマンドを前回のmakeParticle1()に書き換えてみよう。
(ランダムに配置されたパーティクルからパーティクルが発生する。)
- 使用例3のemitterコマンドに-normalSpeedと-tangentSpeedを付け加えて、どうなるかみてみよう。
(例)
-normalSpeedに0.0、と-tangentSpeedに1.0をあたえてみるとどうなるか?
emitter -type "surface" -spread 0.0 -normalSpeed 0.0 -tangentSpeed 1.0 -rate 1 -n emitter;
参考
- オンラインドキュメント (英語)
/usr/aw/maya/docs/en_US/html/Commands/CommandsTOC.doc.html
- リファレンス
- エクスプレッション
Prev | Next
Home | Contents
abe@injapan.net