다음 절차는 각 노드의 변환, 쿼터니언 회전 및 배율 조정 값을 나타내기 위해 별도의 숫자 배열이 포함된 데이터 세트를 사용하여 HIKCharacterState에서 여러 노드에 대한 데이터를 설정하고 검색하는 방법을 설명합니다.
별도의 변환, 쿼터니언 회전 및 배율 조정 값이 포함된 데이터 세트에서 노드의 상태를 설정하려면 다음에 간략하게 설명한 단계를 따릅니다.
16바이트로 정렬된 메모리 버퍼에서 각 노드에 대해 다음 항목을 저장합니다.
위에 나열된 각 항목은 16바이트로 정렬되어야 합니다.
이들 값이 위에 나열한 순서대로 있을 필요는 없습니다. 예를 들어 배율 조정 값이 변환 값 앞에 올 수 있습니다.
// first Node
//----translation values------\\ //---orientation values---\\ //----scaling values----\\
{-45.95f, 87.81f, -205.81f, 0.0f, -0.54f, 0.0f, -0.05f, 0.83f, 0.16f, 0.16f, 0.16f, 1.0f},
// second Node
//----translation values------\\ //---orientation values---\\ //----scaling values----\\
{-36.91f, 85.10f, -203.83f, 0.0f, -0.39f, 0.57f, -0.40f, 0.58f, 0.16f, 0.16f, 0.16f, 1.0f},
// third Node
//----translation values------\\ //---orientation values---\\ //----scaling values----\\
{-37.17f, 47.86f, -218.01f, 0.0f, -0.21f, 0.66f, -0.24f, 0.67f, 0.16f, 0.16f, 0.16f, 1.0f},
...이 데이터 설명은 HIKDataDescription 구조의 인스턴스여야 합니다. 데이터 설명에 대해 다음 항목을 지정해야 합니다.
또한 이 배열은 특별한 값 HIKNotUsed를 포함할 수 있고 이 값은 HumanIK가 해당 데이터 블록을 건너뛰도록 지시합니다.
int myUsedNodes[] = {HipsNodeId,
LeftHipNodeId,
RightHipNodeId,
...
RightFootPinkyDNodeId,
HIKLastNode
};
HIKDataDescriptionMatrix myDescription = {HIKGlobalSpace,
0,
16,
32,
sizeof(float)*12,
myUsedNodes
};데이터 세트에 포함된 변환, 회전 및 배율 조정 값을 HIKCharacter에 적용하려면 HIKSetCharacterStateTransformTQS() 함수를 호출합니다.
HIKSetCharacterStateTransformTQS(lCharacter, lCharacterState, &myDescription, (void *)gSrcAnimTQS[frameId]);
각 노드의 변환, 쿼터니언 회전 및 배율 조정 값에 대해 별도의 숫자 배열을 사용하여 HIKCharacterState에서 노드 데이터를 검색하려면 다음을 제외하고 위의 별도의 TQS 값을 사용하여 노드 데이터 설정 및 검색에 설명한 것과 유사한 프로세스를 따라야 합니다.
다음 함수를 HIKSetCharacterStateTransformTQS() 및 HIKGetCharacterStateTransformTQS() 대신 사용할 수 있습니다. 이러한 함수는 모두 위에 설명한 동일한 인수를 허용하지만 약간 다른 방식으로 데이터를 읽거나 씁니다.