리깅

FK와 IK 셋업 및 스위치 셋업

뚜_ 2025. 4. 10. 18:48

Part 3. Maya Rigging II

Setup Arm (IK/FK)

원본 조인트들에 IK와 FK를 모두 셋업하는 것은 너무 복잡하므로, 팔 조인트를 복사하여 각각에 IK, FK 셋업 후 연결하는 방식으로 진행한다. 컨트롤러 - FK/IK 조인트 - 원본 조인트 식의 구조를 갖는다.

  1. 어깨부터 손목 조인트까지의 조인트 복사본을 두 개 생성하여 각각의 조인트에 IK 컨트롤러와 FK 컨트롤러를 만들어준다.
  2. 어깨, 팔꿈치, 손목 세 개의 IK용 조인트와 FK용 조인트를 먼저 선택 후 원본 조인트를 선택하여 Parent Constraint 로 연결한다.
  3. 원본 조인트가 IK용 조인트를 따라갈지, FK용 조인트를 따라갈지 설정해주기 위해 스위치를 만들어준다.
    1. 스위치용 컨트롤러를 만들어 IKFKSwitch 어트리뷰트를 추가해준다. Data Type을 Enum으로 하여 IK는 0, FK는 1의 값이 들어가도록 설정해준다.
    2. IKFKSwitch 어트리뷰트 값이 IK(=0)이 되면 IK용 조인트와 원본 조인트의 Parent Constraint weight 값이 1이 되도록 노드 에디터에서 reverse 유틸리티 노드를 이용하여 연결해준다. FK는 값이 1이기 때문에 reverse 노드 필요 없이 바로 연결해주어 FK용 조인트와 원본 조인트의 Parent Constraint weight 값이 1이 되도록 해준다.
    3. 스위치를 통해 IK 또는 FK가 활성화 된 경우 비활성화된 컨트롤러를 숨기기 위해 노드 에디터를 통해 IKFKSwitch의 값과 컨트롤러의 Visibility 속성을 연결해준다.

공부하며 궁금했던 점

1. 한 개의 오브젝트에 여러 개의 Constraint를 걸면 어떻게 동작하는가?


 ChatGPT  

Maya에서 하나의 오브젝트에 여러 개의 Parent Constraint를 걸면, 기본적으로 모든 컨스트레인트의 영향을 혼합(Blending)하여 최종 변형을 결정합니다.

🔹 동작 방식

  1. 각 Parent Constraint는 Weight 값에 따라 기여
    • 한 개의 오브젝트에 여러 Parent Constraint가 걸려 있으면, 각 컨스트레인트는 자신의 Weight 값에 따라 영향을 미칩니다.
    • 예를 들어, 두 개의 Parent Constraint가 있고 각각의 Weight가 0.5라면, 두 컨트롤러의 변형이 반반씩 합쳐집니다.
  2. Weight 합이 1이 되도록 자동 정규화(내부적으로 처리됨)
    • 만약 A의 Weight를 1로 하고, B의 Weight를 2로 설정하면, 내부적으로 (1:2 비율)로 나누어 반영됩니다.
  3. Weight 조절로 컨트롤 변경 가능
    • ParentConstraint1.target[0].targetWeight
    • ParentConstraint1.target[1].targetWeight
    • 애니메이션을 하면서 특정 Parent Constraint의 Weight를 0에서 1로 바꾸면, 자연스럽게 컨트롤을 넘길 수 있음 (애니메이션 핸드오프).
  4. "Maintain Offset" 옵션
    • Parent Constraint 추가 시 "Maintain Offset"을 체크하면, 기존 위치를 유지한 채 영향을 받게 됨.
    • 체크 해제하면 즉시 타겟 위치로 이동함.

🔹 예제 시나리오

예를 들어, 하나의 오브젝트가 A 컨트롤러(0.7), B 컨트롤러(0.3)에 의해 Parent Constraint를 걸었다면:

  • A 컨트롤러가 70% 영향을 미치고
  • B 컨트롤러가 30% 영향을 미친다.

이런 식으로 여러 개의 컨스트레인트를 조합하여 자연스러운 컨트롤 전환이나 애니메이션 블렌딩을 할 수 있음.