ジャンプ先: 概要. 戻り値. 関連. フラグ. MEL 例.
emit [-attribute string] [-floatValue float] [-object string] [-position float float float] [-vectorValue float float float]
emit は、取り消し可能、照会不可能、および編集不可能です。
放出アクションで、エミッタを使用せずに既存のパーティクル オブジェクトにパーティクルを追加することができます。同時に、このアクションで作成されたパーティクルに、パーティクル単位の任意のアトリビュートを設定することができます。
作成されたパーティクルは、そのパーティクル オブジェクトの初期状態の一部にはなりません。シーンが巻き戻されると、初期状態に保存されない限りは消滅します。さらに、開始フレーム以上のフレームでは、パーティクル オブジェクトは放出アクションからパーティクルのみを受け取ります。たとえば、放出アクションを使ってフレーム -5 にパーティクルを作成したい場合、そのパーティクル シェイプの開始フレームを -5 以下に設定する必要があります。
多くのコマンドやアクションとは異なり、この放出アクションはそのフラグの順番を、その仕組みの場合と同じく重要な情報として使用します。-object フラグと -position フラグは、引数リストの任意の場所に置くことができます。-attribute フラグと値フラグは、その順序に基づいて解釈されます。-attribute フラグの後とその次の -attribute フラグの前にある値フラグはすべて、引数リストで前にある一番近い -attribute フラグで指定したアトリビュートの値を設定します。これらのフラグの操作方法についての詳細は、以下の例を参照してください。
現在のところ、dynExpression コマンドかエクスプレッション エディタ(Expression Editor)で定義されたパーティクル エクスプレッション内から作成されなければ、新規のパーティクルに作成時エクスプレッションは実行されません。パーティクルの作成時に特定の値を設定する場合、その値は-attribute、-vectorValue、と -floatValue のフラグを使って設定します。
int[] | position フラグを渡したのと同じ順序で作成したパーティクルの particleId アトリビュート値のリストを含む整数配列。 |
particle
attribute, floatValue, object, position, vectorValue
ロング ネーム(ショート ネーム) |
引数タイプ |
プロパティ |
-object(-o)
|
string
|
|
|
このフラグは、DAG ですぐ上にある particleShape またはトランスフォームの名前を親として取得します。パーティクルを追加するオブジェクトを指定します。このアクションではセレクション リストが無視されるため、このフラグを渡す必要があります。
|
|
-position(-pos)
|
float float float
|
|
|
パーティクルが作成されるパーティクル オブジェクト空間(通常はワールド空間)の位置を指定します。フラグごとに、1 つのパーティクルが作成されます。
|
|
-attribute(-at)
|
string
|
|
|
後続の値と次の -attribute フラグの前にある値フラグを関連付ける、パーティクル オブジェクトのアトリビュートを指定します。このコマンドで後で同じアトリビュートを指定し、最初のアトリビュートをオフにする場所を取得できます。使用されるアトリビュートは、パーティクル単位のアトリビュートである必要があります。アトリビュートのロング ネーム、ショート ネームいずれも可能です。注: パーティクルごとのアトリビュートは、このコマンド フラグを介して指定される前に、パーティクル オブジェクト上に存在している必要があります。
|
|
-vectorValue(-vv)
|
float float float
|
|
|
「現在の」パーティクルの「現在の」アトリビュートに使用するベクトル値を設定します。現在のアトリビュートとは、最新の -attribute フラグで指定されるアトリビュートを指します。現在のパーティクルとは、「現在の」アトリビュートに設定された値の数に該当する -position フラグの一覧にあるパーティクルを指します。現在のアトリビュートが浮動小数点のパーティクル単位のアトリビュートであれば、このフラグで記述されたベクトルが使用されます。この長さは、SQR( xVal2 + yVal2 + zVal2 )として記述されます。
|
|
-floatValue(-fv)
|
float
|
|
|
「現在の」パーティクルの「現在の」アトリビュートに使用する float 値を設定します。現在のアトリビュートとは、最新の -attribute フラグで指定されるアトリビュートを指します。現在のパーティクルとは、「現在の」アトリビュートに設定された値の数に該当する -position フラグの一覧にあるパーティクルを指します。現在のアトリビュートがベクトルのパーティクル単位のアトリビュートであれば、指定した float 値は、このベクトルの 3 つのコンポーネントすべてに使用されます。
|
|
フラグはコマンドの作成モードで表示できます
|
フラグはコマンドの編集モードで表示できます
|
フラグはコマンドの照会モードで表示できます
|
コマンド内でフラグを複数回使用できます。
|
particle;
emit -object particle1 -position 1 1 1;
// This will create one particle at position <<1,1,1>> in the
// already-existing particle object <i>particle1</i>.
//
particle;
emit -object particle1
-position 1 1 1
-position 2 2 2
-attribute velocity
-vectorValue 1 2 3
-vectorValue 2 3 4
-attribute rgbPP
-vectorValue .5 1 0
-floatValue .1;
// This will create two particles at positions <<1,1,1>> and <<2,2,2>> in
// the already-existing particle object <i>particle1</i>. Then the velocity
// attribute of those particles is set to <<1,2,3>> and <<2,3,4>>,
// respectively. Also, the rgbPP values are set to <<.5,1,0>> and
// <<.1,.1,.1>>, respectively. Notice that the rgbPP value for the
// second particle was set with the -floatValue flag, even though rgbPP
// is a vector attribute. The single value was converted into a vector.
particle;
emit -object particle1
-position 1 1 1
-position 2 2 2
-position 3 3 3
-position 4 4 4
-position 5 5 5
-attribute velocity
-vectorValue 1 2 3
-vectorValue 2 3 4
-attribute mass
-floatValue .5
-vectorValue .1 .2 .3
-attribute velocity
-vectorValue 3 4 5;
// This will create five particles in <i>particle1</i>. The values
// for their attributes are:
//
// Attribute Particle1 Particle2 Particle3 Particle4 Particle5
// ----------+-----------+-----------+-----------+-----------+---------
// position <<<<1,1,1>>>> <<<<2,2,2>>>> <<<<3,3,3>>>> <<<<4,4,4>>>> <<<<5,5,5>>>>
// velocity <<<<1,2,3>>>> <<<<2,3,4>>>> <<<<3,4,5>>>> <b><<<<3,4,5>>>> <<<<3,4,5>>>></b>
// mass .5 .3742 <b>.3742 .3742 .3742</b>
//
// Notice that the second value for mass was seet with the -vectorValue
// flag, even though mass is a float attribute. The vector was
// converted into a float by taking its length. Also, notice the <b>bold</b>
// values in the table. The values for those attribute values were not
// explicitly set in the command. If there are fewer values given for
// an attribute than there are position flags, the remaining unset
// values are set to the last value set for that attribute. This
// allows the user to set many of the values to be the same without
// having to use multiple value flags. One last note. Notice that the
// attribute flag was passed twice for the attribute velocity. The value
// flags for repeated attributes pick up where the previous ones left
// off.
float $x = rand(1);
float $y = rand(1);
float $z = rand(1);
vector $p = sphrand(5);
emit -object particle1
-pos $x $y $z
-pos ($p.x) ($p.y) ($p.z);
// This is a piece of MEL code that could be put in a script or
// even in an expression. It adds two new particles to the
// already-existing particle object <i>particle1</i>. It adds them
// at random positions, however. These random values can be computed
// and stored in MEL variables. Then those variables can be used in
// the emit action. Notice that the float variables can be used
// directly, but the components of the vector must be enclosed in
// parentheses. This is also true if they are used to with the
// <b>-vectorValue</b> flag.
int $i;
int $emitCount = rand(10,15);
string $objectName = "object1";
string $emitCmd = ("emit -object " + $objectName + "\n");
for( $i = 0; $i < $emitCount; $i ++ ) {
vector $pos = sphrand(10);
$emitCmd += " -pos "+$pos+"\n"; }
$emitCmd += " -at velocity\n";
for( $i = 0; $i < $emitCount; $i ++ ) {
vector $vel = sphrand(5);
$emitCmd += " -vv "+$vel+"\n"; }
eval( $emitCmd );
// This is a piece of MEL code that could be put in a script or
// even in an expression. It adds a random number of particles
// to the already-existing particle object <i>particle1</i>. Since
// the number of particles as well as the positions and velocities
// of the particles are random, it would be impossible to just have
// the emit action itself in the expression or script. It must be
// built as a string and then sent to the command processor with the
// <b>eval</b> or <b>evalEcho</b> commands. Notice that when appending
// the vector variables to the string, it is not necessary to append
// each component of the vectors separately. When they are converted
// from a vector to a string, the three components get separated with
// a space automatically, thus formatting them in the desired way.
// An example of a possible result from this "script" could be:
emit -object particle1
-pos 1.899864198 -6.721569708 0.585203937
-pos 8.103957656 -4.042442985 2.047724209
-pos -1.392914569 -0.109724376 8.62265813
-pos 1.960103537 -3.203145195 -7.6892516
-pos 2.564072614 -6.049536895 1.334818295
-pos -5.603376821 4.33595058 6.952385447
-pos -2.478591746 6.286855715 6.851659059
-pos 2.424670276 -4.083412217 6.320538621
-pos 6.440800453 3.405519296 5.462135819
-pos 2.445192551 1.397203422 3.443755853
-at velocity
-vv -2.348796409 4.022130218 0.5316172944
-vv 4.149667117 -1.023146404 1.97965556
-vv -0.08429132578 -0.5518495233 1.591812495
-vv 2.597930963 1.033536331 -1.398351383
-vv -3.102859272 3.423569856 0.7895603241
-vv -2.519331228 -2.5684916 -1.530779154
-vv -2.645169119 -0.3186551381 0.9164776099
-vv -0.6183816487 -1.060784068 -0.8748223942
-vv -0.2460372256 3.567980747 -2.007567372
-vv 1.735044809 -3.660099445 -1.765401859;
// The spacing in the string is just for formatting reasons and does
// not affect how the action executes or compiles.