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

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

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

詳細については、 ワールドでのフォース(Forces In World)を参照してください。

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

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

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

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

centroid アトリビュートは、centroidXcentroidY、および centroidZ から構成される複合アトリビュートです。worldCentroid アトリビュートは、worldCentroidXworldCentroidY、および worldCentroidZ から構成される複合アトリビュートです。

worldPositionworldVelocity、および worldCentroid の値は、コネクション エディタ(Connection Editor)で入力として読み出すことができます。worldCentroidXworldCentroidY、および worldCentroidZ の値は、エクスプレッションで読み出すことができます。これらのアトリビュートの値は設定できません。

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

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

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

アトリビュート コネクションを使った入力フォースの設定

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

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

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

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