下列步骤说明了如何使用数据集设置和检索 HIKCharacterState 中多个节点的数据,该数据集包含单个变换矩阵来表示每个节点的平移、方向和缩放值。
在按 16 字节对齐的内存缓冲区中,将每个节点的矩阵存储在遵循变换矩阵中介绍的格式的 HIKCharacterState 中。此矩阵是每个节点所需的唯一信息;因此,每个矩阵通常自己代表一个数据块。
// 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 结构的一个实例。必须指定数据描述的以下项目:
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 检索节点数据以获取每个节点的平移、四元数旋转和缩放值,必须遵循前面的使用矩阵设置和检索节点数据中介绍的类似过程,不同之处在于: