손과 발 접점 설정

아래 섹션에 설명된 것처럼 손과 발 접점을 설정하려면 HumanIK 솔버에 제공하는 HIKPropertySetState HIKEffectorSetState를 모두 구성해야 합니다.

단계 1: 손과 발 접점 사용 및 구성

손과 발 접점은 HumanIK 솔버에 제공하는 HIKPropertySetState에서 사용 및 구성합니다.

발 접점을 사용하려면 HIKFootFloorContactId 속성 모드를 HIKModeOn으로 설정합니다.

손 접점을 사용하려면 HIKHandFloorContactId 속성 모드를 HIKModeOn으로 설정합니다.

예를 들면 다음과 같습니다.

HIKSetPropertyMode(MyPropertyState, HIKFootFloorContactId, 1);
HIKSetPropertyMode(MyPropertyState, HIKHandFloorContactId, 1);

접점 유형 설정

바닥 접점 엔진에서 가장 중요한 구성 옵션은 캐릭터의 손과 발을 모델링하는 데 사용되는 접점 유형입니다. 이러한 접점 유형에 대한 자세한 내용은 접점 유형을(를) 참조하십시오.

캐릭터 발의 접점 유형을 설정하려면 HIKFootContactTypeId 속성 값을 다음 값 중 하나로 설정합니다.

캐릭터 손의 접점 유형을 설정하려면 HIKHandContactTypeId 속성 값을 다음 값 중 하나로 설정합니다.

  • 0은 접선 발 접점 유형을 나타냅니다. 이는 기본 접점 유형이며, 이 접점 유형을 사용하려는 경우 아래 손과 발 접점 설정으로(로) 건너뛸 수 있습니다.
  • 1은 손목 또는 발목 발 접점 유형을 나타냅니다.
  • 2는 발가락 기본 또는 손가락 기본 발 접점 유형을 나타냅니다.
  • 3은 발굽 발 접점 유형을 나타냅니다.

예를 들면 다음과 같습니다.

HIKSetPropertyValue(MyPropertyState, HIKFootContactTypeId, 3.0f);
HIKSetPropertyValue(MyPropertyState, HIKHandContactTypeId, 1.0f);

손/발 치수 설정

선택하는 접점 유형에 따라 캐릭터의 손과 발을 정의하는 마커의 배치 상태를 결정하는 보조 속성 세트도 구성해야 합니다. HumanIK에 이러한 속성에 대한 기본값 세트가 제공되지만 모델의 크기와 모양에 더 적합한 값을 사용자가 설정하는 것이 좋습니다. 선택한 접점 유형에 대해 설정해야 하는 보조 속성에 대한 자세한 내용은 접점 유형 아래 다양한 접점 유형에 대한 설명을 참조하십시오.

예를 들어 캐릭터의 발에서 접선 접점 유형을 사용하도록 구성할 경우 다음과 같은 속성을 설정해야 합니다.

HIKSetPropertyValue(MyPropertyState, HIKFootBottomToAnkleId, 12.0f);
HIKSetPropertyValue(MyPropertyState, HIKFootBackToAnkleId, 3.0f);
HIKSetPropertyValue(MyPropertyState, HIKFootMiddleToAnkleId, 11.7f);
HIKSetPropertyValue(MyPropertyState, HIKFootFrontToMiddleId, 6.9f);
HIKSetPropertyValue(MyPropertyState, HIKFootInToAnkleId, 3.4f);
HIKSetPropertyValue(MyPropertyState, HIKFootOutToAnkleId, 5.1f);

HumanIK 대상 변경 솔버를 사용 중인 경우, 대상 캐릭터에 대해 대상 캐릭터의 접점 유형에서 손/발 마커를 배치하는 데 사용되는 손/발 치수를 모두 설정해야 합니다. 위에 나열된 다른 손/발 치수 속성은 소스 캐릭터에서 읽혀지지 않으므로, 소스 캐릭터의 경우 HIKFootBottomToAnkleId 속성만 설정하면 됩니다.

손과 발 접점 구성

캐릭터에 사용하는 HIKPropertySetState는 손과 발 접점 엔진의 동작을 제어하기 위해 구성할 수 있는 여러 가지 다른 선택적 속성을 제공합니다. 이러한 속성에 대한 자세한 내용은 손과 발 접점 속성을(를) 참조하십시오.

단계 2: 발가락 및 손가락 접점 사용 및 구성

캐릭터의 손과 발 접점을 사용 및 구성한 후에는 HumanIK 솔버에 제공하는 HIKPropertySetState에서 캐릭터 발가락과 손가락에 대한 바닥 접점도 설정하고 구성할 수 있습니다.

일반적으로 발가락과 손가락 접점은 대개 접선 손 또는 발 접점 유형을 사용하여 HumanIK에서 제어하는 개별 관절식의 발가락이나 손가락이 있는 캐릭터에서만 사용됩니다.

발가락 접점을 사용하려면 HIKFootFingerContactId 속성 모드를 HIKModeOn으로 설정합니다.

손가락 접점을 사용하려면 HIKHandFingerContactId 속성 모드를 HIKModeOn으로 설정합니다.

예를 들면 다음과 같습니다.

HIKSetPropertyMode(MyPropertyState, HIKFootFingerContactId, 1);
HIKSetPropertyMode(MyPropertyState, HIKHandFingerContactId, 1);

발가락 및 손가락 접점 구성

캐릭터에 사용하는 HIKPropertySetState는 손과 발 접점 엔진의 동작을 제어하기 위해 구성할 수 있는 여러 가지 다른 선택적 속성을 제공합니다. 이러한 속성에 대한 자세한 내용은 손과 발 접점 속성을(를) 참조하십시오.

단계 3: 바닥 위치 및 방향 설정

캐릭터의 손과 발이 바닥 또는 방향이 지정된 다른 평면에 닿을 때 반응하는 방식을 정의한 후에는 HumanIK에서 각 손과 발에 대해 고려해야 하는 평면의 방향과 실제 위치를 정의해야 합니다. 각 손과 발에 대한 평면 위치는 HumanIK 솔버에 제공하는HIKEffectorSetState에 별도로 저장 및 유지됩니다.

바닥 접점 엔진에 대해 방향이 지정된 평면을 설정하려면 각 팔 다리에 대해 HIKSetEffectorFloorStatefv() 함수를 호출합니다. 이 함수에는 다음 인수가 필요합니다.

예를 들면 다음과 같습니다.

HIKSetEffectorFloorStatefv(MyEffectorState, HIKLeftFootFloor, matrix);
HIKSetEffectorFloorStatefv(MyEffectorState, HIKRightFootFloor, matrix);

또는 HIKSetEffectorFloorStateTQfv() 함수를 사용할 수 있으며, 이 함수는 방향이 지정된 평면에서 점 변환 및 회전이 포함된 부동 소수점 숫자의 2/4 요소 배열을 허용합니다.

예를 들면 다음과 같습니다.

const float transform[] = {35.1f,0.9f,276.7f,1.0f};
const float rotation[] = {0.4f,0.0f,1.3f,1.0f};
HIKSetEffectorFloorStateTQfv(MyEffectorState, HIKLeftFootFloor, transform, rotation);
HIKSetEffectorFloorStateTQfv(MyEffectorState, HIKRightFootFloor, transform, rotation);

단계 4: 해석 단계 설정

바닥 접점 설정 시 마지막 단계는 HIKEffectorSetState에서 바닥 접점 해석 단계를 활성화하는 것입니다.

HIKSetIKSolvingStep() 함수를 호출하여 해석 단계를 설정할 경우 HIKSolvingStepContactHIKSolvingStepContactApprox 단계를 포함해야 합니다. 이러한 단계는HIKSolvingStepAll에 포함되어 있으므로 간단히 HIKSolvingStepAll을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

HIKSetIKSolvingStep(MyEffectorState, HIKSolvingStepAll);

IK 해석 단계에 대한 자세한 내용은 선택한 몸체 부분 해석을(를) 참조하십시오.