다음 절차는 각 노드의 변환, 방향 및 배율 조정 값을 나타내기 위해 단일 변환 매트릭스가 포함된 데이터 세트를 사용하여 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
};데이터 세트에 포함된 변환 매트릭스를 HIKCharacter에 적용하려면 HIKSetCharacterStateTransform() 함수를 호출합니다.
HIKSetCharacterStateTransform(lCharacter, lCharacterState, &myDescription, (void *)gSrcAnimTQS[frameId]);
각 노드의 변환, 쿼터니언 회전 및 배율 조정 값에 대한 변환 매트릭스를 사용하여 HIKCharacterState에서 노드 데이터를 검색하려면 다음을 제외하고 위의 매트릭스를 사용하여 노드 데이터 설정 및 검색에 설명한 것과 유사한 프로세스를 따라야 합니다.