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

 
 
 

Maya DVD の ExploreMe/particles ディレクトリに MEL スクリプト(applySprite.mel)が加わり、スプライトにイメージ シーケンスを簡単に指定することができます。MEL スクリプトの使い方については、スプライトを参照してください。

MEL スクリプトを使用せずに手作業でスプライトにイメージ シーケンスを割り当てるときには、次のような手順で行います。

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

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

    スプライトとして使用するイメージ ファイルの拡張子の形式は、file.000n (前ゼロの拡張子)ではなく、file.n でなければなりません。

  11. インタラクティブ シーケンス キャッシュ オプション(Interactive Sequence Caching Options)セクションで、インタラクティブ シーケンス キャッシュの使用(Use Interactive Sequence Caching)をオンにします。
  12. シーケンスの開始(Sequence Start)シーケンスの終了(Sequence End)、およびシーケンスの増分(Sequence Increment)を指定します。

    これらのアトリビュートは、シーケンスで使用可能なファイルを指定しますが、実際のキャッシュされたファイルは選択しません。実際のファイルを指定するには、後で説明するスプライト数(Sprite Num)またはスプライト数 PP (Sprite Num PP)アトリビュートを設定します。

    シーケンスの開始シーケンスの終了は、シーケンスに使用可能な最初と最後のファイル名の拡張子の番号を指定します。シーケンスの増分は、1 つおきのフレーム、2 つおきのフレームといったようにシーケンスに使用する各フレームを設定します。

    たとえば、Smoke.0 から始まる 30 ファイルのシーケンスにあるすべてのファイルを使用するには、シーケンスの開始を 0、シーケンスの終了を 29、シーケンスの増分を 1 に設定します。同じファイル シーケンスにあるファイルを 1 つおきに使用するには、シーケンスの増分を 2 に設定します。すなわち Smoke.0、Smoke.2、Smoke.4...のように 1 つずつ順番に選択することができます。

  13. イメージ シーケンスの使用(Use Image Sequence)の使用をオンに設定します。
  14. 同じイメージ シーケンスをすべてのスプライト(Sprites)に割り当てる場合は、次のすべてのスプライトに同じイメージ シーケンスを割り当てるを参照してください。異なるイメージ シーケンスをそれぞれのスプライトに割り当てる場合は、スプライトごとに異なるイメージ シーケンスを割り当てるを参照してください。

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

前のステップで既定のパーティクルのレンダー タイプ(Particle Render Type)アトリビュートにスプライト(Sprites)を設定すると、パーティクル オブジェクトにスプライト数(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

シーケンスの開始を 0 に、シーケンスの終了を 29 に、シーケンスの増分を 2 に設定した場合、イメージのプールとそれを表すスプライトの数の値は次のようになります。

イメージ スプライト数(Sprite Num)

Smoke.0

1

Smoke.2

2

Smoke.4

3

Smoke.6

4

Smoke.28

15

キーを設定するか、またはエクスプレッションを書いてスプライトの数をアニメートして、それによりイメージをサイクルすることができます。すべてのスプライトは各フレームで同じイメージを表示します。

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

    詳細については、『MEL とエクスプレッション』マニュアルを参照してください。