手作業でスプライトにイメージ シーケンスを割り当てるときには、次のような手順で行います。MEL スクリプトの使い方については、「スプライト(Sprites)」を参照してください。
スプライトにイメージ シーケンスを割り当てるには
これらのアトリビュートは、シーケンスで使用可能なファイルを指定しますが、実際のキャッシュされたファイルは選択しません。実際のファイルを指定するには、後で説明するスプライト数(Sprite Num)またはスプライト数 PP (Sprite Num PP)アトリビュートを設定します。
シーケンスの開始(Sequence Start)とシーケンスの終了(Sequence End)は、シーケンスに使用可能な最初と最後のファイル名の拡張子の番号を指定します。シーケンスの増分(Sequence Increment)は、1 つおきのフレーム、2 つおきのフレームといったようにシーケンスに使用する各フレームを設定します。
たとえば、Smoke.0 から始まる 30 ファイルのシーケンスにあるすべてのファイルを使用するには、シーケンスの開始(Sequence Start)を 0、シーケンスの終了(Sequence End)を 29、シーケンスの増分(Sequence Increment)を 1 に設定します。同じファイル シーケンスにあるファイルを 1 つおきに使用するには、シーケンスの増分(Sequence Increment)を 2 に設定します。すなわち Smoke.0、Smoke.2、Smoke.4...のように 1 つずつ順番に選択することができます。
前のステップで既定のパーティクルのレンダー タイプ(Particle Render Type)アトリビュートにスプライト(Sprites)を設定すると、パーティクル オブジェクトにスプライト数(Sprite Num)アトリビュートが追加されます。スプライトの数(Sprite Num)は、シーケンスの開始(Sequence Start)、シーケンスの終了(Sequence End)、およびシーケンスの増分(Sequence Increment)によって指定されたファイルのプール中のどのファイルをサイクルするかを指定します。つまり、スプライトの数は、ファイルへのインデックスです。
たとえば、Smoke.0 で始まるファイル シーケンスがあるとします。シーケンスの開始(Sequence Start)を 0 に、シーケンスの終了(Sequence End)を 29 に、シーケンスの増分(Sequence Increment)を 1 に設定した場合、イメージのプールとそれを表すスプライト数(Sprite Num)の値は次のようになります。
イメージ | スプライト数(Sprite Num) |
---|---|
Smoke.0 |
1 |
Smoke.1 |
2 |
Smoke.2 |
3 |
Smoke.3 |
4 |
— |
— |
Smoke.29 |
30 |
シーケンスの開始(Sequence Start)を 0 に、シーケンスの終了(Sequence End)を 29 に、シーケンスの増分(Sequence Increment)を 2 に設定した場合、イメージのプールとそれを表すスプライト数(Sprite Num)の値は次のようになります。
イメージ | スプライト数(Sprite Num) |
---|---|
Smoke.0 |
1 |
Smoke.2 |
2 |
Smoke.4 |
3 |
Smoke.6 |
4 |
— |
— |
Smoke.28 |
15 |
キーを設定するか、またはエクスプレッションを書いてスプライトの数(Sprite Num)をアニメートして、それによりイメージをサイクルすることができます。すべてのスプライトは各フレームで同じイメージを表示します。
たとえば、シーンの開始フレームがフレーム 0 で、Smoke.0 から Smoke.29 までの 30 個のイメージがある場合には、次の作成時のエクスプレッションを使用できます。
particleShape1.spriteNum = (frame % 30);
このランタイム エクスプレッションは次のようになります。
particleShape1.spriteNum = (frame % 30);
アニメーションを再生すると、すべてのスプライトで 30 個のイメージが 1 つずつ順番に選択されます。フレーム 0 から 29 で、スプライトにより、Smoke.0、Smoke.1、Smoke.2... のように、Smoke.29 まで表示されます。フレーム 30 では、サイクルにより、この次の 30 フレームが繰り返されます。
エクスプレッションの記述方法については、『MEL とエクスプレッション』マニュアルを参照してください。
パーティクル単位(Per Particle)のスプライト数 PP アトリビュートが particleShape ノードに追加されます。スプライト数 PP (Sprite Num PP)アトリビュートの機能はスプライト数(Sprite Num)と似ていますが、パーティクル単位で設定できます。スプライト数の詳細については、すべてのスプライトに同じイメージ シーケンスを割り当てるを参照してください。
たとえば、シーンの開始フレームがフレーム 0 で、Smoke.0 から Smoke.29 までの 30 個のイメージがある場合、次の作成時のエクスプレッションを使用することができます。
particleShape1.spriteNumPP = rand(0,30);
このランタイム エクスプレッションは次のようになります。
particleShape1.spriteNumPP = (particleShape1.spriteNumPP + 1) % 30;
アニメーションを巻き戻すと(またはスプライトが放出されると)、作成時のエクスプレッションは 1 から 30 までのランダムな数字を particleShape1.spriteNumPP アトリビュートに割り当てます。これによって、各パーティクルは 30 個のイメージからランダムに選択されたイメージでスプライトによる表示を開始します。
アニメーションを再生すると、ランタイム エクスプレッションにより(ダイナミクス計算の前または後に)各フレームが実行され、スプライトの番号が 1 つずつ増やされます。これにより、スプライトそれぞれによって、イメージ範囲全体が 1 つずつ順番に選択されるようになります。スプライトに対して Smoke.29 が表示されたら、Smoke.0 からイメージのサイクルが再開されます。
詳細については、スプライト アトリビュートを参照してください。