次の手順では、各ノードのトランスレーション、向き、およびスケール値を表す単一の変換マトリックスを含むデータ セットを使用して、HIKCharacterState で複数のエフェクタのデータを設定および取得する方法を説明します。
マトリックスを含むデータ セットからノード ステートを設定するには、下で概説されている手順に従ってください。
16 バイトでアラインされたメモリ バッファに、HIKCharacterState の各ノードに対して、変換配列で紹介されているフォーマットに従うマトリックスを格納します。このマトリックスは各ノードに必要な情報のみであるため、各マトリックスは通常は自身のデータ ブロックを表します。
データ セット内の各マトリックスのオフセットは、16 バイトでアラインされる必要があります。
// first Node
{-45.95f, 87.81f, -205.81f, 0.0f,
-0.54f, 0.0f, -0.05f, 0.83f,
0.16f, 0.16f, 0.16f, 1.0f,
-36.91f, 85.10f, -203.83f, 0.0f},
// second Node
{-36.91f, 85.10f, -203.83f, 0.0f,
-0.39f, 0.57f, -0.40f, 0.58f,
0.16f, 0.16f, 0.16f, 1.0f
-37.17f, 47.86f, -218.01f, 0.0f},
// third Node
...このデータ説明は、HIKDataDescriptionMatrix 構造のインスタンスである必要があります。データ説明のために、次の項目を指定する必要があります。
この配列には特別な値 HIKNotUsed も含めることができ、この値は HumanIK に指示して、対応するデータ ブロックをスキップします。
int myUsedNodes[] = {HipsNodeId,
LeftHipNodeId,
RightHipNodeId,
...
RightFootPinkyDNodeId,
HIKLastNode
};
HIKDataDescriptionMatrix myDescription = {HIKGlobalSpace,
0,
sizeof(float)*16,
myUsedNodes
};HIKSetCharacterStateTransform()関数を呼び出し、データ セットに含まれる変換マトリックスをHIKCharacterに適用します。
HIKSetCharacterStateTransform(lCharacter, lCharacterState, &myDescription, (void *)gSrcAnimTQS[frameId]);
各ノードのトランスレーション、クォータニオン回転、およびスケール値に対して変換マトリックスを使用して、HIKCharacterState からノード データを取得するには、上の「マトリックスを使用してノード データを設定および取得する」で説明されているようなプロセスに従う必要があります。