パーティクルの主なアトリビュートは以下の通りである。
長い名前 (短い名前) | 型 | デフォールト値 | 説明 |
---|---|---|---|
position (pos) | vectorArray | empty | Runtime における個々のパーティクルの位置 |
velocity (vel) | vectorArray | empty | Runtime における個々のパーティクルの速度 |
acceleration (acc) | vectorArray | empty | Runtime における個々のパーティクルの加速度 |
age (ag) | doubleArray | empty | 個々のパーティクルの寿命 |
particleId (id) | doubleArray | empty | 個々のパーティクルの番号 |
maxCount (mxc) | long | -1 | パーティクルの最大個数 |
renderType (rt) | enum | 3 | ハードウェアレンダリングの方法 |
パーティクル(球)の一つ一つの色がランダムな感じで赤と黒の間を変化してゆくエクスプレッションを使ったプロシージャー。
以下のMELスクリプトをdynExpression4.melという名前で作り、スクリプトエディターからdynExpression4();で実行する。
global proc dynExpression4()
{
particle -p 0 0 0;
emitter -type "direction" -dx 0 -dy 1 -dz 0 -spread 0.5 -rate 10 -n emitter;
$name = `particle`;
setAttr ($name[1] + ".particleRenderType") 4;
addAttr -longName rgbPP -dt vectorArray $name[1];
dynExpression -runtime -string "rgbPP = << (sin(time * (particleId % 10)) + 1)/2, 0, 0>>;" $name[1];
connectDynamic -emitters emitter $name[0];
}
particle -p 0 0 0;
パーティクルを(0, 0, 0)の位置に作る。
emitter -type "direction" -dx 0 -dy 1 -dz 0 -spread 0.5 -rate 10 -n emitter;
そのパーティクルに対してY方向に発生・運動するエミッターをemitterという名前で作る。
$name = `particle`;
emitterによって発生されるパーティクルを作って、その名前を$nameという変数に代入しておく。
setAttr ($name[1] + ".particleRenderType") 4;
パーティクルの形を球にする。(ハードウェアレンダリング)
particleRenderType | shape |
---|---|
0 | MultiPoint |
1 | MultiStreak |
2 | Numeric |
3 | Points |
4 | Spheres |
5 | Sprites |
6 | Streak |
7 | Blobby Surface |
8 | Cloud |
9 | Tube |
addAttr -longName rgbPP -dt vectorArray $name[1];
particle2($name[0])のシェィプノードparticleShape2($name[1])にrgbPP(型はベクトル)というアトリビュートを加える。
dynExpression -runtime -string "rgbPP = << (sin(time * (particleId % 10)) + 1)/2, 0, 0>>;" $name[1];
色の値を時間が進むにしたがって赤( << 1, 0, 0 >> ) と黒( << 0, 0, 0 >> )の間を変化してゆくようににエクスプレッションを設定する。
connectDynamic -emitters emitter $name[0];
emitterとparticle2($name[0])をコネクトしてパーティクルを発生させる。