スプライトにイメージ シーケンスを割り当てる

nParticle のスプライト ウィザードを使用する代わりに、スプライトにイメージ シーケンスを手動で割り当てることができます。以下のセクションでは、スプライトにイメージ シーケンスを割り当ててから、各スプライトに同じイメージまたは異なるイメージのどちらを使用するかを指定する方法を説明します。

スプライトにイメージ シーケンスを割り当てるには

  1. ビュー ウィンドウ上のメニューでシェーディング > すべてをスムーズ シェード(Shading > Smooth Shade All)シェーディング > ハードウェア テクスチャリング(Shading > Hardware Texturing)をオンに設定します。
  2. パーティクル オブジェクトを選択します。
  3. アトリビュート エディタ(Attribute Editor)で、パーティクル レンダー タイプ(Particle Render Type)スプライト(Sprites)に設定します。
  4. 外観を調整するための既定のパーティクルのレンダー タイプ(Particle Render Type)アトリビュートを追加する場合は、次にアトリビュートを追加(Add Attributes For)の現在のレンダー タイプ(Current Render Type)ボタンをクリックします。
  5. シェーディング グループを持つ Lambert マテリアルを作成し、選択したパーティクル オブジェクトに割り当てます。詳細については、『レンダリング』マニュアルを参照してください。
  6. レンダリング(Rendering)メニュー セットから、ライティング/シェーディング > 既存のマテリアルの割り当て(Lighting/Shading > Assign Existing Material)を選択して、アトリビュート エディタ(Attribute Editor) Lambert ノードを表示します。
  7. アトリビュート エディタ(Attribute Editor)共通マテリアル アトリビュート(Common Material Attributes)セクションで、カラー(Color)スライダの右にあるマップ ボタンをクリックします。
  8. レンダー ノードの作成(Create Render Node)ウィンドウでファイル(File)ボタンをクリックして、ファイル テクスチャ ノードを作成します。
  9. アトリビュート エディタ(Attribute Editor)ファイル アトリビュート(File Attributes)セクションで、イメージの名前(Image Name)フィールドの右にあるファイル ブラウザ ボタンをクリックします。
  10. シーケンスの最初のファイルを選択して、開く(Open)ボタンをクリックします。
  11. インタラクティブ シーケンス キャッシュ オプション(Interactive Sequence Caching Options)セクションで、インタラクティブ シーケンス キャッシュの使用(Use Interactive Sequence Caching)をオンにします。
  12. シーケンスの開始(Sequence Start)シーケンスの終了(Sequence End)、およびシーケンスの増分(Sequence Increment)を指定します。

    これらのアトリビュートは、シーケンスで使用可能なファイルを指定しますが、実際のキャッシュされたファイルは選択しません。実際のファイルを指定するには、後で説明するスプライト数(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 つずつ順番に選択することができます。

  13. イメージ シーケンスの使用(Use Image Sequence)の使用をオンに設定します。

すべてのスプライトに同じイメージ シーケンスを割り当てる

前のステップで既定のパーティクルのレンダー タイプ(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 とエクスプレッション』マニュアルを参照してください。

スプライトごとに異なるイメージ シーケンスを割り当てる

  1. アトリビュート エディタ(Attribute Editor)でパーティクルのシェイプ ノードのタブが選択された状態で、ダイナミック アトリビュートの追加(Add Dynamic Attributes)セクションを開き、一般(General)ボタンをクリックします。
  2. アトリビュートの追加(Add Attribute)ウィンドウでパーティクル(Particle)タブをクリックし、spriteNumPP を選択して、OK ボタンをクリックします。

    パーティクル単位(Per Particle)のスプライト数 PP アトリビュートが particleShape ノードに追加されます。スプライト数 PP (Sprite Num PP)アトリビュートの機能はスプライト数(Sprite Num)と似ていますが、パーティクル単位で設定できます。

  3. particleShape ノードのスプライト数 PP (Sprite Num PP)アトリビュートをアニメートするための作成時のエクスプレッションとランタイム エクスプレッションを書きます(シェイプ ノードではなく、パーティクル オブジェクトのトランスフォーム ノードが現在選択されている場合には、下矢印キーを押して選択を修正します)。

    たとえば、シーンの開始フレームがフレーム 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 からイメージのサイクルが再開されます。

    詳細については、スプライト アトリビュートを参照してください。