선택한 몸체 부분 해석

캐릭터 골격의 특정 관절을 제어하는 데 HumanIK가 필요 없는 경우 해당 관절의 새 위치를 해석하지 않음으로써 역운동학 솔버의 성능을 높일 수 있습니다.

예를 들어 HumanIK를 사용하여 무기가 플레이어에게 겨냥하도록 캐릭터의 엉덩이와 상체를 회전하는 제어기를 작성하려는 경우 캐릭터의 다리와 발에 대한 IK 해석을 생략할 수 있습니다.

아래 설명된 것처럼 역운동학 솔버에서 해석할 몸체를 식별할 때 사용 가능한 방법은 두 가지가 있습니다.

방법 1: IK 해석 단계 설정

역운동학 솔버를 사용할 수 있으려면 대상 변경 솔버를 통해 직접적으로 또는 간적접으로 HIKEffectorSetState에서 IK 솔버에서 수행해야 하는 해석 단계를 지정해야 합니다. 해석 단계를 지정하려면 HIKSetIKSolvingStep() 함수를 호출하고 HIKSolvingStep 열거에 나열된 요소를 하나 이상 제공합니다.

역운동학 해석대상 변경 해석에 제공된 예제에서 HIKSetIKSolvingStep() 함수는 모든 해석 단계를 활성화하는 HIKSolvingStepAll 값을 통해 호출됩니다. 하지만 HIKSetIKSolvingStep() 함수를 호출할 때 HIKSolvingStep 열거에서 사용 가능한 해석 단계의 하위 세트만 지정할 수 있으며, 이를 통해 해당 계산만 수행하도록 역운동학 솔버를 구성합니다.

예를 들어 다음 호출은 역운동학 솔버가 엉덩이, 다리, 발, 롤 추출, 바닥 접점 및 스쿼시 및 늘이기를 제외한 엉덩이 위의 모든 몸체 부분을 해석하도록 구성합니다.

HIKSetIKSolvingStep (MyEffectorState, HIKSolvingStepBodyPull |
                                      HIKSolvingStepLeftShoulder |
                                      HIKSolvingStepRightShoulder |
                                      HIKSolvingStepLeftArm |
                                      HIKSolvingStepRightArm |
                                      HIKSolvingStepLeftHand |
                                      HIKSolvingStepRightHand |
                                      HIKSolvingStepHead |
                                      HIKSolvingStepSpine);

역운동학 해석대상 변경 해석을(를) 참조하십시오.

방법 2: 특정 IK 솔버 호출

HumanIK 역운동학 솔버는 여러 개의 더 작은 함수로 구분되며, 각 함수는 제한된 캐릭터 관절 세트를 제어하거나 전체 IK 프로세스에 관련된 특정 하위 세트의 계산을 수행합니다. HIKSolveForEffectorSet 함수를 호출하여 역운동학 솔버를 호출할 경우 다음 특정 함수가 순서대로 호출됩니다.

  1. HIKSolveForEffectorSetBegin()
  2. HIKSolveForEffectorSetFloorContactApprox()
  3. HIKSolveForEffectorSetBodyPull()
  4. HIKSolveForEffectorSetArmsAndLegs()
  5. HIKSolveForEffectorSetFingersAndToes()
  6. HIKSolveForEffectorSetHeadAndNeck()
  7. HIKSolveForEffectorSetFloorContact()
  8. HIKSolveForEffectorSetHipsTranslation()
  9. HIKSolveForEffectorSetRollExtraction()

HIKSolveForEffectorSet() 함수를 호출하는 대신 이러한 각각의 함수를 개별적으로 호출할 수 있습니다. 이 방법은 주로 메모리 제한으로 인해 전체 IK 솔버를 호출할 수 없는 경우 보조 처리 장치를 활용하기 위한 방법으로 만들어진 것입니다. 하지만 이 방법은 특정 몸체 부분에 대한 해석을 제한하는 다른 방법으로도 사용될 수 있으며, 이 경우 다음과 같은 제한 사항이 있습니다.

당기기 및 역운동학 프로세스

역운동학 솔버는 해석 프로세스를 시작할 때 HIKSolvingStepBodyPull 단계를 수행합니다. 이 단계는 골격의 모든 관절에 영향을 미칩니다. 솔버는 모든 이펙터에 대한 당기기 설정을 최대한 충족한 후, 다른 활성 해석 단계에 포함된 각 관절에 적용되는 이펙터의 위치, 회전, 변환 도달 및 회전 도달에 대한 요구 사항을 충족하기 위해 해당 활성 해석 단계로 이동합니다.

따라서 위 방법 중 하나를 사용하여 역운동학 솔버에서 관절 체인을 고려 대상에서 제외하더라도 관절 체인이 반드시 원래 FK 애니메이션에서처럼 동일한 상태로 유지된다는 의미는 아닙니다. 대신 이러한 관절의 최종 상태를 제어할 수는 없지만 골격의 다른 관절에 할당된 당기기 값을 기준으로 관절을 배치합니다. 예를 들어 다리와 발에 대해 해석이 명시적으로 수행되지 않은 경우에도 캐릭터 손의 당기기 값으로 캐릭터의 엉덩이, 다리 및 발을 다른 위치로 드래그할 수 있습니다.

관절에 대해 계산되는 최종 위치, 즉 원래 FK 애니메이션에 관절을 고정할지 또는 장면의 특정 위치에 관절을 고정할지를 제어하려는 경우, 해당 관절에 대한 IK 해석을 사용하고 원하는 변환 및 회전을 통해 관절이 배치되도록 도달, 당기기 및 저항 값을 적절하게 설정해야 합니다. 개요에서 도달, 당기기 및 저항에 대한 자세한 설명을 참조하십시오.