オブジェクトのローカル空間にフォースを適用する

ダイナミック フォースは、ワールド空間座標系内の NURBS およびポリゴン オブジェクトに作用します。たとえば、重力フィールドに既定のオプション値を設定すると、円錐をどのように回転させても、ワールド空間の Y 軸に沿って下方に移動します。

既定では、フィールドはワールド空間内のパーティクル オブジェクトにも作用します。ただし、パーティクル オブジェクトのローカル空間内のパーティクル オブジェクトにフィールドが作用するように設定することもできます。たとえば、ワールド空間の Y 軸ではなく、パーティクル オブジェクトのローカル Y 軸に沿ってパーティクル オブジェクトが落下するように重力フィールドを設定することができます。

nParticle ダイナミック プロパティ」を参照してください。

ワールド位置、速度、および重心の取得

パーティクル オブジェクトの位置、速度、および重心のアトリビュートには、ローカル空間値があります(パーティクル オブジェクトの中心とは、すべてのパーティクルの平均の位置です)。特定のパーティクル オブジェクトのワールド空間値を知る必要がある場合があります。

たとえば、パーティクル オブジェクトに重力を加えて落下させ、ガラスの床を貫通させるとします。さらに、パーティクル オブジェクトの回転 Y (Rotate Y)アトリビュートにキーを設定して、落下しながら起点の Y 軸を中心に回転するようにします。パーティクルが床を貫通するときにそのカラーを変更できるように、パーティクルのワールド空間位置を知る必要があるとします。位置アトリビュートを使用してこの情報を取得することはできません。なぜなら、位置アトリビュートはローカル空間位置だからです。

この情報は、位置、速度、および重心の次の 3 つのワールド空間のアトリビュートから取得できます。

重心(Centroid)アトリビュートは、重心 X (Centroid X)重心 Y (Centroid Y)、および重心 Z (Centroid Z)から構成される複合アトリビュートです。ワールド重心(World Centroid)アトリビュートは、ワールド重心 X (World Centroid X)ワールド重心 Y (World Centroid Y)、およびワールド重心 Z (World Centroid Z)から構成される複合アトリビュートです。

ワールド位置(World Position)ワールド速度(World Velocity)、およびワールド重心(World Centroid)の値は、接続エディタ(Connection Editor)で入力として読み出すことができます。ワールド重心 X (World Centroid X)ワールド重心 Y (World Centroid Y)、およびワールド重心 Z (World Centroid Z)の値は、エクスプレッションで読み出すことができます。これらのアトリビュートの値は設定できません。

ワールド速度(World Velocity)は、現在のフレームと前のフレームとの間のワールド位置(World Position)の差です。ワールド速度(World Velocity)はオブジェクト(およびオブジェクトの親)の移動(Translate)回転(Rotate)、およびスケール(Scale)値のインフルエンスを受けるため、それらに適用するキーの効果を含んでいます。

パーティクル オブジェクトのワールド空間の速度をローカル空間の速度に変換する必要があるときには、パーティクル オブジェクトのオブジェクト空間のワールド速度(World Velocity In Object Space)を使用できることに注意してください。

worldAcceleration というアトリビュートはありません。

アトリビュート接続を使った入力フォースの設定

パーティクル オブジェクトに接続されているフィールドまたはスプリングは、そのベクトル フォース値をオブジェクトの入力フォース(Input Force)[ ] アトリビュートに書き込みます。このアトリビュートはベクトルの配列です。オブジェクトに接続されているそれぞれのフィールドに対して 1 つの入力フォース(Input Force)配列があります。たとえば、3 つのフィールドに接続されているオブジェクトには入力フォース[0]、入力フォース[1]、および入力フォース[2] があります。配列のベクトルはそれぞれ、1 つのパーティクルのフォースを表します。

接続エディタ(Connection Editor)または API を使用して、1 つの particleShape アトリビュートを別の入力フォース(Input Force)[ ] アトリビュートに入れることができます。アトリビュートは、ベクトル配列(たとえば速度)でなければなりません。

アトリビュートが入力フォース(Input Force)[0] に接続されていて、2 つのパーティクル オブジェクトが同数のパーティクルを含んでいる場合、入力フォース(Input Force)[0] に入力される値は 1 対 1 で対応します。入力フォース(Input Force)[0] を含むオブジェクトが、入力を与えるオブジェクトよりも少ない数のパーティクルを持っている場合、残りの値は無視されます。逆の場合は、最後の値が繰り返されます。

入力フォース(Input Force)[ ] は、リジッド ボディのシェイプ ノードにも存在します。入力フォース [ ] は、パーティクルの場合と同様に、CV または頂点に対して機能します。