이 섹션에서는 HumanIK 사용과 관련된 몇 가지 주요 오브젝트 및 개념에 대해 설명합니다.
기본적으로 HumanIK는 캐릭터에서 작동합니다. HumanIK 솔버에서 전체 또는 일부를 제어할 각 캐릭터는 HIKCharacter 오브젝트로 표현되어야 합니다. 이 HIKCharacter는 HumanIK와 관련되고 HumanIK 생체 역학 모델에서 사용하도록 최적화된 Biped 또는 네 발 달린 동물 형상의 표현입니다.
각 HIKCharacter에는 노드라는 관절 세트가 있습니다. HumanIK에서 지원하는 각 노드는 휴머노이드 골격의 특정 부분에 대응하도록 사전 정의되어 있습니다. 예를 들어 한 노드는 왼쪽 팔의 팔꿈치를 나타내고 다른 노드는 왼쪽 팔의 손목을, 또 다른 노드는 엄지손가락의 첫 번째 관절을 나타내는 식입니다.
HumanIK에서는 170개가 넘는 여러 가지 사전 정의된 관절 유형을 지원하며, HIKNodeId 열거에 나열되어 있습니다. 이러한 노드 ID 중 15번째는 필수이며 모든 HIKCharacter에는 최소한 이러한 필수 노드가 포함되어 있어야 합니다. 또한 게임 캐릭터의 골격에 있는 관절과 HumanIK 솔버에서 예상할 수 있는 정밀도에 따라 HIKCharacters에서 다른 선택적 노드를 사용하도록 선택하거나 선택하지 않을 수 있습니다. 게임 캐릭터의 골격에 있는 각 관절을 가장 잘 나타내는 HumanIK 노드 결정에 대한 자세한 내용은 HumanIK 노드 및 이펙터에 관절 매핑을(를) 참조하십시오.
동일한 관절 세트가 있는 모든 캐릭터에서 해당 관절의 위치가 동일한 것은 아닙니다. 예를 들어 키가 더 큰 캐릭터는 키가 작은 캐릭터보다 다리와 팔이 더 길고, 여성 캐릭터는 남성 캐릭터보다 엉덩이가 더 넓을 수 있습니다.
각 HIKCharacter는 중립 T 자세로 서 있을 때 각 캐릭터의 관절 배치에 대한 정보 세트를 유지합니다. 예를 들면 다음과 같습니다.
자세한 내용은 기본 T 자세을(를) 참조하십시오.
캐릭터에 대해 이 기본 형상을 설정하는 작업을 캐릭터화 프로세스라고 합니다. 이 캐릭터화는 HumanIK API에 제공된 함수를 호출하여 각 캐릭터의 노드에 적절한 변환 및 방향을 설정하는 프로그래밍 방식으로 수행할 수 있습니다. 또는 Maya나 Softimage와 같은 시각적 콘텐츠 작성 도구에서 캐릭터화를 내보낼 수 있습니다. 초기화에서 이 프로세스에 대해 더 자세히 검토할 수 있습니다.
HIKCharacter의 모든 노드는 지정된 시간에 특정 위치 및 회전을 가질 수 있습니다. 함께 사용할 경우 이러한 위치 및 회전은 캐릭터에 대해 완전한 자세 또는 포즈를 정의합니다. HIKCharacterState는 HIKCharacter의 각 노드에 대해 단일 위치 값 및 회전 값을 저장하여 해당 캐릭터에 대한 포즈를 저장하는 오브젝트입니다.
HumanIK 솔버는 이러한 HIKCharacterStates를 입력과 출력으로 모두 사용합니다.
이펙터는 캐릭처 몸체의 여러 부분에 대해 원하는 위치 및 회전을 정의합니다. 이러한 이펙터는 HIKEffectorSetStates라는 세트에서 사용되며, 각각은 지정된 임의 시간에 캐릭터의 팔 다리에 대해 일관된 목표점 세트를 정의합니다.
HIKEffectorSetStates에는 캐릭터의 골격에 있는 모든 단일 노드에 대한 별도의 이펙터가 없습니다. 대신 Biped 또는 네 발 달린 동물 형상의 의미 요소를 나타내는 이펙터 세트가 있습니다. 예를 들어 왼쪽 손의 각 손가락 끝에 대한 단일 이펙터, 왼쪽 손목에 대한 이펙터 및 왼쪽 팔꿈치에 대한 이펙터가 있습니다. 그러나 각 손가락의 노드 수를 다르게 하거나, 손 노드를 사용하거나 사용하지 않거나, 팔에 롤 노드를 사용하거나 사용하지 않는 등 캐릭터의 손에 대해 서로 다른 여러 가지 골격을 구성할 수 있습니다. 캐릭터의 형상에 따라 역운동학 솔버는 이펙터로 표현된 원하는 변환 및 방향을 골격의 관련 부분에 매핑합니다.
예를 들어 왼쪽 둘째 손가락 끝에 대한 이펙터를 캐릭터의 손목 쪽으로 이동하면 역운동학 솔버에서는 손가락 이펙터를 원하는 위치에 배치하고 필요에 따라 손의 다른 노드를 이동하려고 합니다. 이 경우 둘째 손가락에 여러 노드가 있으면 손가락이 컬링됩니다.
HumanIK 역운동학 솔버는 제공한 HIKEffectorSetState에서 모든 이펙터 요구 사항을 균형있게 조정하고 해당 이펙터에 의해 표시된 위치 및 회전에 대해 캐릭터의 팔 다리를 최대한 많이 가져오는 "최적합"을 만듭니다.
HIKEffectorSetState의 각 이펙터는 활성이거나 비활성일 수 있으며 솔버에 도달, 당기기 및 저항과 같은 다른 특별한 제약 조건을 적용할 수 있습니다. 도달, 저항 및 당기기을(를) 참조하십시오. HumanIK 생체 역학 모델에서 파악한 이펙터 목록은 HIKEffectorId 열거를 참조하십시오.
HIKPropertySetStates에는 역운동학 및 대상 변경 프로세스를 구성하는 매개변수 세트가 있습니다. 역운동학 또는 대상 변경 솔버를 사용할 때마다 HIKPropertySetState를 제공해야 합니다. 그러나 해당 매개변수의 기본값은 원하는 대로 사용자 정의할 수 있습니다.
HIKPropertySetStates는 캐릭터가 설정되는 방식에 따라 달라지지 않으며 모든 HIKPropertySetStates에는 동일한 매개변수 목록이 포함되어 있습니다. 골격 구조 및 형상이 다른 캐릭터를 해석하는 데 동일한 HIKPropertySetState를 사용할 수 있습니다. 물론 솔버가 두 캐릭터에 대해 동일한 방식으로 동작하도록 하려는 경우에 한합니다.
각 HIKPropertySetState에서 구성할 수 있는 속성에 대한 자세한 내용은 캐릭터 속성을(를) 참조하십시오.