HIKCharacterStates에서 데이터 설정 및 검색

개요에서 소개한 대로 HIKCharacterState는 각 캐릭터의 골격에 각 노드의 변환, 회전 및 배율 조정을 저장합니다. 이러한 값을 함께 사용하면 해당 캐릭터의 포즈 또는 자세, 즉 각 관절의 위치와 방향을 정의합니다. 일반적으로 다음 상황에서는 데이터를 HIKCharacterState로 직접 설정해야 합니다.

또한 HumanIK 솔버에서 생성된 모든 캐릭터 포즈는 HIKCharacterStates에 저장됩니다. HumanIK를 사용하여 대상 변경을 수행하든지, 역운동학을 수행하든지 항상 HIKCharacterState에서 생성된 애니메이션 데이터를 검색해야 합니다.

전역 공간 및 정규화된 공간

내부적으로 HumanIK는 정규화된 공간에서 작업하는데, 여기서 캐릭터화 포즈에 포함된 회전 및 배율 조정 오프셋이 각 HIKCharacterState에 저장된 값에서 제거됩니다. HIKCharacterState의 노드에 대해 전역 공간에서 회전 또는 배율 조정 값을 설정하는 경우, 새 값이 HIKCharacterState에 저장되기 전에 캐릭터의 기본 T-자세에 포함된 회전 및 배율 조정 오프셋이 제거됩니다. 마찬가지로 HIKCharacterState의 노드에 대해 전역 공간에서 회전 또는 배율 조정 값을 검색할 때마다 HumanIK는 해당 값을 사용자에게 반환하기 전에 내부적으로 캐릭터의 기본 T-자세에 포함된 오프셋을 HIKCharacterState에 저장된 정규화된 값에 다시 적용합니다.

전역 공간에서 노드 데이터를 설정하고 검색하는 대신 HumanIK는 각 HIKCharacterState에 대해 내부적으로 유지하는 정규화된 공간에서 직접 작업할 수 있습니다. 이 경우 노드에 대해 회전 및 배율 조정 값을 설정할 때 HumanIK는 캐릭터의 기본 T-자세에 포함된 오프셋을 제거하지 않고 HIKCharacterState에 직접 값을 저장합니다. 마찬가지로 이 경우 회전 및 배율 조정 값을 검색할 때 기본 T-자세에 포함된 오프셋을 다시 적용하지 않고 HIKCharacterState에 저장된 정규화된 값이 반환됩니다. 캐릭터의 기본 T-자세에 회전 또는 배율 조정 오프셋을 포함하지 않는 노드의 경우, 정규화된 공간에서 작업하면 회전 및 배율 조정 오프셋을 제거하고 다시 적용하는 오버헤드를 방지하여 성능이 향상될 수 있습니다.

정규화된 공간 값을 설정하고 검색하는 함수는 HIKGetNodeNormalizedStateTQSfv()와 같이 그 이름 안에 Normalized 용어가 표시됩니다. 정규화된 공간에서 데이터 설정 및 검색에 사용 가능한 함수에 대한 자세한 내용은 다음 섹션을 참조하십시오.