HIKEffectorSetStates에서 데이터 설정 및 검색

개요에서 소개한 대로 HIKEffectorSetStates는 해당 노드에서 이펙터가 당기는 강도 및 캐릭터 골격의 다른 관절에서 이펙터가 당기는 강도를 제어하는 매개 변수 세트와 함께, 각 노드에 대한 역운동학 목표점을 캐릭터의 골격에 저장합니다. 역운동학 솔버는 캐릭터의 최종 포즈가 포함된 새 HIKCharacterState를 구성하기 위해 모든 이펙터의 위치, 회전 및 매개변수를 균형있게 조정합니다.

역운동학 솔버를 호출할 때마다, 먼저 캐릭터의 노드에 대한 대상 점 및 각 이펙터의 도달, 당기기 및 저항 제약 조건에 대한 적절한 값을 사용하여 HIKEffectorSetState를 설정해야 합니다. 역운동학 해석을(를) 참조하십시오.

HumanIK 대상 변경 솔버만을 사용하는 경우 대상 변경 솔버에서 내부적으로 수행되기 때문에 일반적으로 변환, 회전 및 배율 조정 값 또는 제약 조건 값을 사용하여 이펙터를 설정할 필요가 없습니다.

정규화된 공간 및 캐릭터 공간

HIKCharacterStates에서 데이터 설정 및 검색에서 소개한 대로 HumanIK는 정규화된 공간에서 내부적으로 작업합니다. 각 HIKCharacterState는 캐릭터의 기본 T-자세에서 해당 노드에 포함된 오프셋 없이 각 노드에 대한 회전 및 배율 조정 값을 저장합니다. 마찬가지로 HIKEffectorSetStates에 포함된 IK 목표점은 동일한 정규화된 공간에 있습니다. 캐릭터의 새 포즈를 생성하기 위해 역운동학 솔버에 HIKEffectorSetState를 제공하는 경우 솔버는 HIKEffectorSetState에 저장된 회전 및 배율 조정 값이 이미 정규화된 공간에 있다고 예상합니다. 마찬가지로 HIKEffectorSetState의 이펙터에서 회전 및 배율 조정 값을 읽는 경우 반환된 값이 정규화된 공간에 있습니다.

캐릭터의 기본 T-자세에서 해당 노드에 회전 또는 배율 조정 오프셋이 없는 이펙터의 경우 정규화된 이 공간이 전역 공간과 동일합니다. 이러한 이펙터의 경우 이펙터에 대한 회전 값을 전역 공간에서 원하는 캐릭터의 팔 다리 방향으로 설정할 수 있습니다. 그러나 캐릭터의 기본 T-자세에서 해당 노드에 회전 또는 배율 조정 오프셋이 없는 이펙터의 경우, 전역 공간에서 이펙터에 대한 회전 및 배율 조정 값을 설정하고 검색하면 캐릭터의 T-자세에서 오프셋을 고려하지 않고 예상하지 않은 회전 목표가 발생할 수 있습니다.

전역 공간 사용

HumanIK에서 내부적으로 사용되는 정규화된 공간 대신 전역 공간에서 배타적으로 이펙터에 대한 회전 및 배율 조정 값을 제공하려면 CharacterSpace 용어로 식별되는 함수를 사용할 수 있습니다. 예를 들면 HIKGetCharacterSpaceEffectorStatefv()입니다. 이러한 함수 중 하나를 사용하여 이펙터에 대해 회전 또는 배율 조정 값을 설정하는 경우 HIKEffectorSetState에 새 값을 저장하기 전에 해당 노드에 대해 캐릭터의 기본 T-자세에 포함된 오프셋이 제거됩니다. 마찬가지로 이러한 함수 중 하나를 사용하여 HIKEffectorSetState에서 회전 및 배율 조정 값을 검색하는 경우 사용자에게 값을 반환하기 전에 기본 T-자세에 포함된 오프셋이 다시 적용됩니다.

T-자세가 해당 노드에 대해 회전 또는 배율 조정 오프셋을 포함하는지 여부에 관계 없이 모든 이펙터에 대해 이러한 CharacterSpace 함수를 사용할 수 있습니다. 그러나 필요할 때만 정규화된 공간 및 전역 공간 사이의 변환을 수행하므로 해당 노드가 T-자세에 오프셋을 포함하는 이펙트만 이러한 CharacterSpace 함수를 사용하여 성능을 향상시킬 수 있습니다.

HIKCharacterStates에서 이펙터 오프셋

HIKEffectorSetState에서 이펙터에 대한 정규화된 회전 및 배율 조정 오프셋을 제공하는 다른 방법은 우선 HIKCharacterState에 포함된 포즈(일반적으로 게임 엔진에서 파생된 캐릭터의 현재 포즈)를 일치하도록 각 이펙터의 변환, 방향 및 배율 조정 값을 설정하는 것입니다. 그런 다음 각 캐릭터가 특정 소품에 도달하거나 필요에 따라 팔 다리를 회전하고 HIKEffectorSetState에 그러한 새 값을 다시 적용하기 위해 필요에 따라 이펙터의 변환, 방향 및 배율 조정을 오프셋합니다. HIKCharacterState에 포함된 데이터에서 이펙터를 오프셋하면 개별 이펙터에 오프셋을 적용할 때 정규화된 공간에서 이미 작업 중인지 확인합니다.