[PointPosition]属性は、任意のジオメトリオブジェクトで取得および設定可能な3Dベクトルです。
オブジェクトの PointPosition 値を取得するときに、ICEツリーが存在するオブジェクトから見た状態(「セルフ」オブジェクト)ではなく、オブジェクトのローカルリファレンスフレームから見た状態で表されます。これは、[PointVelocity]、[PointNormal]、および類似する属性でも同じです。
一方、[PointPosition]などのデータを位置から取得する場合は、「セルフ」オブジェクトのローカルリファレンスフレームから見た状態で表されます。これにより、たとえば[GoalLocation]の位置に基づいてポイントの[Force]ベクトルまたは[PointVelocity]ベクトルを設定するのが簡単になります。
最初のフレームをグローバルフレームに変換してから、グローバルフレームを 2 番目のフレームに変換することで、2 つの異なるローカルリファレンスフレームを変換することができます。「ローカルおよびグローバルのリファレンスフレームの変換」を参照してください。
オブジェクトのローカルまたはグローバルのキネマティクスプロパティを取得することができます。データタイプは、次に示すように、どの部分のキネマティクスプロパティが参照されているかに応じて異なります。
オブジェクトの速度または加速度の値を取得する場合、ICEツリーはこれらの値を自動的に計算します。[Global Transform]プロパティからは値は読み込まれないので、[Global Transform]プロパティエディタで速度を加速度を計算する必要があります。
回転は、さまざまなデータタイプで表されます。「回転」と呼ばれるデータタイプには、回転の軸と、その軸の周囲の角から構成されます。
軸と角に個別の属性としてアクセスする必要がある場合は、[Rotation to Axis and Angle]および[Axis and Angle to Rotation]ノード、または[Rotation to Scalar]および[Scalar to Rotation]ノードを使用できます。
これらの表示は、[Conversion]カテゴリのノードを使用して変換することができます。また、[Rotation]カテゴリには、回転に使用できるさまざまなノードが用意されています。これらのノードの一部は、[Conversion]、[Constant]、および[Math]カテゴリにも含まれています。
2 つの回転を組み合わせた結果(一方の回転を実行した後でもう一方の回転を実行)は、複数の方法で計算できます。
オイラー角を表す 2 つの 3D ベクトルを乗算しても、正しい結果を得られないこと(および実際には幾何学的な意味を持たないこと)に注意してください。「[Multiply]ノードを使用する」を参照してください。
[SRT to Matrix]ノードを使用して、個々の位置、回転、およびスケールの値を、4x4 行列の変換表示に構成できます。同様に、[Matrix to SRT]ノードを使用して、4x4 行列を、位置、回転、およびスケールに分解することができます。
[SRT to Matrix]ノードと[Matrix to SRT]ノードの両方とも、3x3 行列でも機能します。この場合、行列は回転とスケーリングを表すものとみなされます。データタイプがICEツリーの残りの部分で自動的に解決できない場合は、[SRT to Matrix]ノードの出力を[3x3 Matrix]または[4x4 Matrix]ノード([Constant]カテゴリにあります)に接続し、強制的にいずれかのデータタイプにする必要があります。
[Matrix to SRT]ノードの[Rotation]ポートは多形性です。接続先のノードに応じて、回転(軸と角)、クォータニオン、XYZ オイラー角を含む 3D ベクトル、または 3x3 行列を戻すことができます。必要に応じて[Constant]カテゴリのノードに接続し、特定のデータタイプを強制的に設定することができます。
ローカルおよびグローバルの位置を変換することができます。3Dベクトルを4x4 行列で乗算する場合、ICEは3Dベクトルが均一の座標の位置を表し、行列が変換を表すものとみなし、特殊なルールで計算を行います。
異なる2つのローカルリファレンスフレーム間で変換するには、最初のリファレンスフレームをグローバル座標に変換してから、グローバル座標を 2 番目のリファレンスフレームに変換します。
3Dベクトルを[PointPosition]ではなく[PointVelocity]のようなベクトルとして変換する場合は、変換の移動コンポーネントを「ゼロ設定」する必要があります。
また、[Switch Context]ノードを使用して、さまざまなコンテキストから位置またはその他の3Dベクトルを結合する必要があります。