다음 절차는 각 노드의 변환, 방향 및 배율 조정 값을 나타내기 위해 변환 매트릭스가 포함된 데이터 세트를 사용하여 HIKEffectorSetState에서 여러 이펙터에 대한 데이터를 설정하고 검색하는 방법을 설명합니다.
16바이트로 정렬된 메모리 버퍼에서 각 이펙터에 대해 다음 항목을 저장합니다.
// first Node's data block
// -- matrix data
{-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,
// -- constraint data
0.5f, 0.5f, 1.0f, 0.0f},
// second Node's data block
// -- matrix data
{-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,
// -- constraint data
0.5f, 0.5f, 1.0f, 0.0f},
},
// third Node's data block
...이 데이터 설명은 HIKEffectorDataDescriptionMatrix 구조의 인스턴스여야 합니다. 데이터 설명에 대해 다음 항목을 지정해야 합니다.
또한 이 배열은 특별한 값 HIKNotUsed를 포함할 수 있고 이 값은 HumanIK가 해당 데이터 블록을 건너뛰도록 지시합니다.
int myUsedEffectors[] = {HipsEffectorId,
LeftAnkleNodeId,
RightAnkleNodeId,
...
RightFootPinkyEffectorId,
HIKLastNode
};
HIKEffectorDataDescriptionMatrix myDesc = {0,
64,
sizeof(float)*20,
myUsedEffectors
};데이터 세트에 포함된 변환, 회전, 배율 조정 및 IK 제약 조건 값을 HIKCharacter에 적용하려면 HIKSetEffectorStateData() 함수를 호출합니다.
HIKSetEffectorStateData(lEffectorState, &myDesc, (void *)goalBuffer[frameId]);
각 이펙터의 변환, 쿼터니언 회전 및 배율 조정 값에 대한 변환 매트릭스를 사용하여 HIKEffectorSetState 상태에서 이펙터 데이터를 검색하려면 다음을 제외하고 위의 매트릭스를 사용하여 이펙터 데이터 설정 및 검색 에 설명된 것과 유사한 프로세스를 따라야 합니다.