パーティクル

particleコマンド

シーンにパーティクルを作成するにはparticleコマンドを使用する。
-pointオプションによって必要な個数だけの座標値をつけてこのコマンドを実行することによって、それらのパーティクルにひとつの名前がつけられる。
例えば、 particle -p 0 0 1 -p 1 0 0; というコマンドによって、(0, 0, 1)と(1, 0, 0)の2点にパーティクルが作られる。

particleコマンドのオプション

-point x y z
1個のパーティクルの座標値をfloatの値(x, y, z)で指定する。
-count
パーティクルの個数を調べる。(-queryといっしょに使用)
-particleId id
パーティクルのアトリビュートを調べる時のid番号(int)を指定する。(-queryといっしょに使用)
-order int
int番目のパーティクルのアトリビュートを調べる時に指定する。(-queryといっしょに使用)
順番は0から始まる。
-attribute string
stringで表されるパーティクルのアトリビュートを調べる時に指定する。(-queryといっしょに使用)
-query
パーティクルの様々な値を得るために使用。

-query使用上の注意

particleコマンドで-queryコマンドを使う時には -particlId-order-attribute などの後につけて使用する。

particleコマンドの使用例1

以下のプロシージャーでは10個のパーティクルを乱数によって座標値を決めて発生させている。
各パーティクルの座標値は0から10の範囲になる。

global proc makeParticle1()
{
	string $points = "";

	for($i = 0; $i < 10; $i++)
	{
		$x = `rand 0 10`;
		$y = `rand 0 10`;
		$z = `rand 0 10`;
		$points = $points + "-p" + " " + $x + " " + $y + " " + $z + " ";
	}
	eval ("particle " + $points);
}

最初にパーティクルの座標値を入れてゆくためのstring変数$pointsを ""によって空の状態で宣言している。
この$pointsに10個の座標値をfor文の中で一つづつ入れてゆく。
そのfor文の中で乱数値を発生させる関数randによって$x$y$zに 0 から 10 までの座標値を代入した後で、それらの値を$pointsに付け足す。
例えば、最初の
rand 0 10
によって5.0、2番目と3番目のrandによって8.2、3.7という値が返ってきたとする。
以上、randによって
$x = 5.0;
$y = 8.2;
$z = 3.7;

となったとすると
"-point" + " " + $x + " " + $y + " " + $z + " "
の結果は -point 5.0 8.2 3.7 となる。 (-pointの後ろ、変数の間と最後のスペース " " に注意)
これを$pointsの後ろに付け足してゆく。
for文が終った時には$pointsの中に
-p 5.0 8.2 3.7 -p 1.7 2.3 7.1 ......
という具合に-pとX、Y、Zの座標値が並んだものが入っているはずである。
(念のために言っておくと、上の座標値はあくまでも一例である)
最期にこの座標値$pointsを使ってparticleコマンドを実行する。
この時、ただ単に以下のようにしても実行できない。
particle $points
なぜなら$pointsの中身が一つの値としてparticleに渡されてしまうからである。
こういう場合は、まず
("particle " + $points)
としてparticleコマンドと$pointsをくっつけた文字列を作り、 これをevalコマンドによって実行する。 (ここでもparticleの後にスペースがあることに注意)
eval ("particle " + $points);
は以下のように実行しても同じである。
$str = "particle " + $points;
eval $str;

練習

参考


Prev | Next
Home | Contents
abe@injapan.net