ゴール アトリビュートを編集する
 
 
 

以降のセクションでは、アトリビュートを編集して、ゴールに対する追従パーティクルと nParticle オブジェクトのエフェクトを調整する方法を説明します。

オブジェクト単位でゴール ウェイトを設定する

ゴールをオブジェクトに追加すると、対応するゴール ウェイト アトリビュートが追従パーティクル オブジェクトに追加されます。ゴール ウェイトは、追従オブジェクトのすべてのパーティクルがどの程度ゴールに引き付けられるかを設定します。ゴール ウェイトは、ゴールを作成する前にゴール オプション(Goal Options)ウィンドウを使って設定することができます。また、後でアトリビュート エディタ(Attribute Editor)を使用してゴール ウェイトを調整することもできます。

ゴール ウェイトは、0 から 1 の範囲に含まれる値に設定することができます。値 0 は、ゴールの位置は追従パーティクルに何の影響も与えないことを表します。この値を 1 に設定すると、追従パーティクルはゴール オブジェクトに即座に移動します。

0 から 1 の値を設定した場合、パーティクルはゴム製のスプリングで結ばれているかのようにゴールに向かって移動します。値が 1 に近いほど、追従パーティクルは最終位置にすばやく移動します。デフォルトのゴール ウェイト値は 0.5 です。

ヒント:追従パーティクルがほとんど振れずにゴール オブジェクトを追従するようにするには、追従パーティクル オブジェクトの運動量保存(Conserve)アトリビュートを 0 など、0.8 未満の値に設定します。値が 0 の場合、振れはありません。

ゴール ウェイトを調整しなくても、ゴール オブジェクトのエフェクトのオン/オフを切り替えることができます。これを行うには、アトリビュート エディタ(Attribute Editor)で追従パーティクル オブジェクトのアトリビュートを表示している状態で、ゴール オブジェクトに関連付けられているゴールのアクティブ化(Goal Active)アトリビュートをオフに設定します。

ゴール オプション ウィンドウを表示するには

  1. パーティクル > ゴール(Particles > Goal) を選択します。このウィンドウのアトリビュートは、アトリビュート設定を変更した後に作成されたゴールに作用します。

アトリビュート エディタゴール ウェイトを変更するには

  1. ゴールの作用を受けるパーティクル(またはソフト ボディのパーティクル)を選択します。
  2. アトリビュート エディタ(Attribute Editor)を表示します。
  3. ゴール ウェイトおよびオブジェクト(Goal Weights and Objects)セクションを開きます。

    ゴール ウェイトがゴール オブジェクト名の横に表示されます。このウェイトを変更すると、オブジェクト全体に適用されます。

    (パーティクル単位の設定のいずれかを変更すると、このゴール ウェイトは適用されなくなります。)

    パーティクル オブジェクトが複数のゴール オブジェクトを持っている場合は、それぞれのオブジェクトに対応するゴール ウェイト セクションが表示されます。

    ヒント:チャンネル ボックス(Channel Box)では、ゴール ウェイト(Goal Weight)[0] が最初に追加したゴール オブジェクトのゴール ウェイトを表します。2 番目は ゴール ウェイト(Goal Weight)[1]、3 番目はゴール ウェイト(Goal Weight)[2]... のようになります。

パーティクル単位でゴール ウェイトを設定する

パーティクル単位でゴール ウェイトを調整して、追従パーティクルのモーションをより細かく制御することができます。パーティクル単位のゴール ウェイトは、追従オブジェクトの goalPP アトリビュートによって制御されます。

パーティクル単位の goalPP(per particle goalPP) アトリビュートは、パーティクルにコネクトされているすべてのゴール オブジェクトに対して使用されます。デフォルトでは、各パーティクルの goalPP アトリビュートは 1 です。

警告:エミッタにアタッチされたパーティクル システム上で goalWeightPP(ゴールに固有のパーティクル単位のゴール ウェイト アトリビュート)を使用する場合には、goalWeightPP アトリビュート値がパーティクルの作成エクスプレッションで初期化されることを確認してください。さもなければ、結果的に好ましくない パーティクル ダイナミック動作になるかもしれません。
ヒント:ソフト ボディのウェイト ペイント ツール(Paint Soft Body Weights Tool)を使用すると、ソフト ボディのサーフェスにペイントすることで、パーティクルごとにソフト ボディにゴール ウェイトを設定することができます( ソフト ボディのウェイト ペイント ツール(Paint Soft Body Weights Tool)を参照)。

パーティクル単位のゴール ウェイトを設定するには

  1. 追従するパーティクル オブジェクトを選択し、アトリビュート エディタ(Attribute Editor)を表示します。
  2. アトリビュート エディタパーティクル単位(配列)アトリビュート(Per Particle (Array) Attributes)セクションで、goalPP アトリビュートを見つけます。パーティクル単位でアトリビュートを設定する方法については、 パーティクル単位でアトリビュートを設定するを参照してください。

    goalPP 値とオブジェクト単位のゴール ウェイトとが乗算され、各パーティクルの合計ゴール ウェイトが作成されます。

    たとえば、オブジェクト単位のゴール ウェイトが 0.5 で、パーティクルの一部にパーティクル単位のゴール ウェイト 0.5 を加えた場合、これらのパーティクルの合計ゴール ウェ イトは 0.25 になります。2 つめのゴール オブジェクトがあり、対応するオブジェクト単位のゴール ウェイトが 0.1 である場合は、パーティクルの合計ゴール ウェイトは 0.05 に なります。

    注:goalPP にランプを作成した場合、このランプはパーティクルの生存期間全体にわたってマップされます。ゴール オブジェクトのサーフェスにはマップされません。さらに、放出に合わせてゴールにテクスチャを設定することはできません。

ゴール ウェイトを、パーティクル単位、オブジェクト単位で設定する

パーティクル システムと関連付けられている各ゴール オブジェクトについて、パーティクルがこのオブジェクトにどのくらい強く引き付けられるかを表すゴール ウェイト(Goal Weight)値を設定できます。基本のパーティクル単位の goalPP アトリビュートを使用しても、各パーティクルにおけるゴール フォースの全体的な効果を軽減することはできますが、他のパーティクルとオブジェクトの反応から独立して、特定のパーティクルにおける特定のゴールのインフルエンスを選択的に変更することはできません。この変更を行うには、特定のゴール オブジェクトにパーティクル単位でゴール ウェイト値を指定できるユーザ定義アトリビュートを使用する必要があります。これらのアトリビュートを使用して、1 つのパーティクル システム内で、1 つのゴール オブジェクトにさまざまなゴール引力を作成できます。

goalWeightNPP ユーザ定義アトリビュートは、N 番目のゴール オブジェクトに、パーティクル単位のゴール ウェイトを提供します。ゴール オブジェクトの番号は、パーティクル システムの goalGeometry 配列で使用されているインデックスに対応します。これにより、パーティクル システムでゴール オブジェクトを追加または削除しても、パーティクルごとのウェイトは保持されます。特定のゴール オブジェクトにパーティクルごとのゴール ウェイトが見つからない場合、このオブジェクトの標準ゴール ウェイト値(パーティクルのアトリビュート エディタ(Attribute Editor)でオブジェクト名の隣にあるスライダで指定された値)がすべてのパーティクルに適用されます。

パーティクルごとのゴール ウェイト アトリビュートを設定するには

  1. パーティクルが引き付けられるゴール オブジェクトを作成したことを確認します( パーティクル > ゴール(Particles > Goal))。詳細については、本書 ゴールを作成するを参照してください。
  2. コンポーネント(Component)モードで、パーティクルごとのゴール ウェイトを編集したいパーティクルを個々に選択します。
  3. アトリビュート エディタのパーティクル システム ノードで、ゴール ウェイトおよびオブジェクト(Goals and Weights)セクションに移動し、目的のゴール オブジェクトの Create goalWeightNPP ボタンをクリックします。
  4. 次のいずれかの操作を行って、コンポーネント エディタを開きます。
    • パーティクル単位(配列)アトリビュート(Per Particle (Array) Attributes)セクションに移動し、対応する goalWorldNPP アトリビュートの隣にある空のボックスを右クリックして、ポップアップ メニューからコンポーネント エディタを選択します。
    • ウィンドウ > 一般エディタ > コンポーネント エディタ(Window > General Editors > Component Editor)を選択します。
      ヒント:goalWeight 列が表示されない場合は、コンポーネント エディタ メニューでオプション > ゼロ カラムの非表示(Options > Hide Zero Columns)を選択し、ゼロ列を表示します。

      シミュレーションを実行するまで、値はゼロのままです。

  5. シミュレーションを再生します。必要に応じて任意のフレームで停止し、コンポーネント エディタgoalWeight の値を確認します。

パーティクルごとのゴール ウェイト アトリビュートをオフにするには

  1. アトリビュート エディタのパーティクル システム ノードで、ゴール ウェイトおよびオブジェクト(Goals and Weights)セクションに移動し、目的のゴール オブジェクトの Delete goalWeightNPP ボタンをクリックします。

    この結果、パーティクルは、特定のパーティクルではなくシステムに定義されたゴール ウェイトを取るようになります。

ゴール ポイントのデータをパーティクル単位で検証する

ゴール オブジェクトを作成したら、パーティクル ノードにパーティクルごとにユーザ定義アトリビュートをいくつか追加できます。パーティクル システムがゴール オブジェクトに引き付けられると、これらのアトリビュートは、各パーティクルが引き付けられる各ゴール オブジェクト上の特定の点に関するデータで埋められます。この情報はコンポーネント エディタ(Component Editor)パーティクル(Particles)タブで確認できます。この情報は変更できません(編集はできますが、シミュレーションを再実行すると値が置き換えられます)が、ランタイムでのパーティクルの表現では便利なこともあります。たとえば、ゴール オブジェクトに近づくにしたがってカラーが濃くなるように、パーティクル カラーを変更することができます。

パーティクル システムは複数のゴール オブジェクトを持つことがあるため、これらの新しいアトリビュートには、ゴール オブジェクトとデータの対応を表す番号が付けられています。ゴール オブジェクトの番号は、パーティクル システムの goalGeometry 配列で使用されているインデックスに対応します。この方法により、パーティクル システムにゴール オブジェクトを追加したり、削除したりしても、パーティクルごとのアトリビュートの意味が変わらないことが保証されます。

注:

これらのアトリビュートでは、アニメーション化された UV はサポートされていません。ゴール オブジェクト上の UV にアニメーションをつけた場合、生成された接線はオリジナルの UV パラメータに対応します。メッシュを僅かに変形したりコントロール ポイントをアニメーション化したりすると、全フレームでのメッシュ データのリフレッシュをメッシュがトリガするので、結果として問題を回避できます。

Maya では、パーティクル システムのゴール オブジェクトとしていろいろな種類のオブジェクトを使用できますが、接線と法線が適切に生成されるのは、NURB サーフェスおよびポリゴン サーフェスのゴール オブジェクトだけです。NURBS カーブ、ゴール オブジェクトとして使用されるその他のパーティクル システム、その他のコントロール ポイント ベースのプリミティブからは、適切な法線や接線は生成されません。

ゴール ポイント データのパーティクルごとのアトリビュートを設定するには

  1. パーティクルが引き付けられるゴール オブジェクトを作成したことを確認します( パーティクル > ゴール(Particles > Goal))。詳細については、本書 ゴールを作成するを参照してください。
  2. コンポーネント(Component)モードで、ゴール ポイントのパーティクルごとのアトリビュートを表示したいパーティクルを個々に選択します。
  3. アトリビュート エディタ(Attribute Editor)で、ゴール ウェイトおよびオブジェクト(Goals and Weights)セクションに移動し、目的のゴール オ ブジェクトに対して、目的のゴール ポイント(Goal Point)アトリビュート(位置(Position)法線(Normal)接線 U(Tangent U)接線 V(Tangent V)の隣にある作成(Create)ボタンをクリックします。
  4. 次のいずれかの操作を行って、コンポーネント エディタを開きます。
    • パーティクル単位(配列)アトリビュート(Per Particle (Array) Attributes)セクションに移動し、対応する goalWorldNPP アトリビュートの隣にある空のボックスを右クリックして、ポップアップ メニューからコンポーネント エディタを選択します。
    • ウィンドウ > 一般エディタ > コンポーネント エディタ(Window > General Editors > Component Editor)を選択します。
      注:goalWorld 列が表示されない場合は、コンポーネント エディタ メニューでオプション > ゼロ カラムの非表示(Options > Hide Zero Columns)を選択してゼロ列を表示します。

      シミュレーションを実行するまで、値はゼロのままです。

  5. シミュレーションを再生します。必要に応じて任意のフレームで停止し、コンポーネント エディタgoalWorld の値を確認します。

パーティクルごとのゴール ポイント データ アトリビュートをオフにするには

  1. アトリビュート エディタのパーティクル システム ノードで、ゴール ウェイトおよびオブジェクト セクションに移動し、目的のゴール オブジェクトに対して、目的のゴール ポイント アトリビュートの隣にある削除(Delete)ボタンをクリックします。

ゴールの NURBS/ポリゴン UV 位置を指定する

NURBS またはポリゴン サーフェスの CV をゴールとして使用すると、追従パーティクルは直接その CV へと移動します。しかし一般に CV は、離れた位置に配置されています。追従パーティクルのシェイプ ノードの既定のゴール U(goalU)ゴール V(goalV) アトリビュートを追加し設定することにより、パーティクルを直接的にまたは均等にサーフェスに移動させることができます。これらのパーティクル単位のアトリビュートは、パーティクルが引き付けられる NURBS またはポリゴン サーフェス上の正確な UV(座標)位置を設定します。

定義済み goalOffset アトリビュートを追加および設定して、より簡単に似たような結果を得ることができます( ゴール位置のオフセットの指定を参照)。

追従オブジェクトが複数のゴール オブジェクトを持つ場合、それぞれのゴール オブジェクトに対して同じパーティクル単位の U および V 値が使用されます。

アトリビュートがオブジェクト上の有効な位置を指定していない場合は、その代わりとしてサーフェスまたはカーブ上で最も近い位置がゴールとして使用されます。オブジェクトの U および V の範囲外にある位置やトリミングされたカーブまたはサーフェスの一部にある位置は、無効として扱われます。最も近い位置が使用されるようにするには、-1 を指定します。

アトリビュートの追加については、 ダイナミック アトリビュートを追加するを参照してください。これらのアトリビュートの値は、エクスプレッション、MEL スクリプト、またはその他のアトリビュート編集方法を使用して設定することができます。

ポリゴン メッシュ ゴール オブジェクトを扱う

パーティクル単位のゴール V(goalV)/ゴール U(goalU)アトリビュートがポリゴン メッシュ ゴール オブジェクトに適用されるとき、パーティクルを引き付けるゴール メッシュ サーフェス上の特定の点を指定します。ゴール V(goalV)/ゴール U(goalU)値のアニメーション、およびゴール オブジェクトとその UV 座標は完全にサポートされます。

各ポリゴン メッシュのオブジェクトに対してUV セット(UV Set)コントロールが表示され、ゴール V(goalV)/ゴール U(goalU)値が与えられたパーティクルのゴール位置の決定に際し、どの UV セットを使用するか決定できます。

ポリゴン メッシュ オブジェクト上の UV マッピングは任意であるため、与えられたゴール V(goalV)/ゴール U(goalU)のペアがゴール サーフェス上の 2 つ以上の点にマップされることがありえます。あるパーティクルに潜在的なゴール ポイントが複数ある場合、Maya はパーティクルのワールド空間上のカレント位置に最も近いポイントを選択し、それをゴール位置として使用します。この決定はフレームごとに再計算されるので、パーティクルが他の潜在的なゴール位置に近づくと、オリジナルのゴール位置ではなくそのゴール位置にパーティクルが引き付けられます。

同様に、ある特定のパーティクルのゴール V(goalV)/ゴール U(goalU)値にマッチするポイントがない場合もあります。この場合、指定したゴール ポイントに UV 空間上で最も近いメッシュ頂点が使用されます。この決定もフレームごとに再計算されます。

注:ポリゴン メッシュ ゴール オブジェクトでは、パーティクルのゴール V(goalV)/ゴール U(goalU)値がゴール サーフェス上に存在しない(つまり、これらの値がマップされていない)場合、パーティクルは指定された値にニアレストの頂点に引き付けられます。この結果、ゴール UV の値をマップされていない空間でアニメートすると、パーティクルがメッシュの頂点間を飛び回ることになります。

ゴール位置のオフセットの指定

既定の goalOffset アトリビュートを追従パーティクル オブジェクトのシェイプ ノードに追加した場合、ゴール オブジェクトのワールド空間位置へのオフセットを設定することができます。たとえば、カーブの CV から構成されるゴールへ向かって移動するパーティクルがあるとします。ここでオフセット機能は、それぞれの CV および goalOffset をパーティクルに指示します。goalOffset アトリビュートは、パーティクル単位のベクトル アトリビュートです。

アトリビュートの追加については、 ダイナミック アトリビュートを追加するを参照してください。このアトリビュートの値は、エクスプレッション、MEL スクリプト、またはその他のアトリビュート編集方法を使用して設定することができます。

ヒント:対称的に配置された CV を持つオブジェクトに対して均等に分布したエフェクトを作成するには、エクスプレッション内で sphrand( ) 関数を使用してランダム値を goalOffset に割り当てます。