본문 바로가기
vfxai 잡학지식 vfxai 잡학지식

마야 IK 무릎이 반대로 꺾일 때: 폴 벡터와 선호 각도 확인

vfx 잡학지식 읽는 시간 약 11분 조회 4

IK를 켜자 무릎이 뒤로 꺾이거나 발을 들 때 반 바퀴 뒤집힌다면, 폴 벡터가 정하는 평면과 조인트의 선호 각도가 정하는 굽힘 방향을 나눠 보고 순서대로 바로잡는 방법을 정리했습니다.

마야 리깅에서 IK 핸들을 만든 뒤 무릎이 뒤로 꺾인다면 스킨 웨이트보다 조인트의 선호 각도와 폴 벡터 위치부터 확인하세요. 다리 조인트를 그리고 엉덩이부터 발목까지 IK 핸들을 만들었습니다. 발을 조금 들어 올리자마자 무릎이 앞이 아니라 뒤로, 새 다리처럼 꺾입니다. 폴 벡터 컨스트레인트를 걸면 이번엔 다리 전체가 옆으로 휙 돌아가고, 발차기 포즈를 잡으려고 발을 높이 드는 순간 무릎이 반 바퀴 돌아 엉뚱한 쪽을 봅니다.

스킨 웨이트를 다시 칠해야 하나, 조인트를 처음부터 그려야 하나 싶어집니다. 하지만 IK 무릎 꺾임의 대부분은 IK가 원래 답할 수 없는 질문 하나에 누가 답하고 있는지의 문제입니다. 무릎이 어느 쪽을 볼지는 IK 핸들이 아니라 폴 벡터와 조인트의 처음 굽힘이 정합니다. 그래서 순서도 정해져 있습니다. 조인트에 굽힘 방향을 먼저 알려 주고, 그다음 폴 목표를 올바른 평면 위에 둡니다.

IK는 무릎을 얼마나 굽힐지만 알고, 어느 쪽인지는 모릅니다

IK 핸들이 아는 정보는 두 가지입니다. 체인이 시작하는 엉덩이 위치와, 발목이 가야 할 목표 위치입니다. 허벅지와 정강이 길이는 고정되어 있으니 두 점 사이 거리만 알면 무릎을 몇 도 굽혀야 하는지는 계산됩니다.

그런데 그 각도를 만족하는 무릎 자리는 하나가 아닙니다. 엉덩이와 발목을 잇는 선을 축 삼아 무릎을 빙 돌려도 두 점 사이 거리는 그대로입니다. 가능한 무릎 위치는 그 선을 둘러싼 원 하나 전체예요. 앞을 봐도, 옆을 봐도, 뒤를 봐도 계산상으로는 모두 정답입니다.

리깅에서 폴 벡터가 무릎 방향을 고르는 구조: 엉덩이와 발목 조인트를 잇는 점선 주위로 노란 무릎 후보 원이 있고, 위는 원 위 여러 무릎 위치가 모두 같은 다리 길이를 만족하며 아래는 폴 목표와 두 조인트가 만든 파란 평면이 무릎 하나를 고르는 모습
허벅지와 정강이 길이가 같은 2본 IK를 실제로 계산하면, 무릎이 놓일 수 있는 자리는 원 하나 전체이고 폴 벡터가 그중 한 점을 고릅니다.
  • 엉덩이와 발목 사이 거리는 무릎을 몇 도 굽힐지를 정합니다.
  • 폴 벡터는 다리가 놓일 평면, 즉 원 위의 방향을 정합니다.
  • 처음 굽힘(선호 각도)은 그 평면 안에서 앞뒤 어느 쪽으로 접힐지를 정합니다.

폴 벡터는 이 원 위에서 하나를 고르는 장치입니다. 엉덩이와 발목을 잇는 선, 그리고 폴 벡터 목표점이 평면 하나를 만들고, 다리는 그 평면 안에 놓입니다. 마야 문서도 Rotate Plane 솔버는 체인 안 관절들의 회전은 계산하지만 체인 전체의 방향은 계산하지 않고, 폴 벡터와 트위스트로 직접 정하게 한다고 설명합니다.

평면은 폴 벡터가, 접히는 쪽은 처음 굽힘이 정합니다

평면이 정해져도 질문이 하나 남습니다. 그 평면 안에서 무릎이 앞으로 접힐지 뒤로 접힐지입니다. 이건 조인트를 만들 때 무릎이 조금이라도 어느 쪽으로 굽어 있었는지가 정합니다. 마야에서는 이를 선호 각도(Preferred Angle)로 저장합니다. 오토데스크 문서는 Set Preferred Angle을 실행하면 현재 무릎과 팔꿈치의 굽힘을 IK로 포즈를 잡을 때 처음 회전할 방향으로 쓴다고 설명합니다.

그래서 가장 흔한 원인은 다리를 완전히 일자로 그린 경우입니다. 곧은 다리에는 굽힐 방향 정보가 없으니 솔버는 앞뒤 어느 쪽으로든 접을 수 있습니다. 모델의 기본 포즈가 반듯하다고 조인트까지 자로 잰 듯 일자로 맞추면, IK를 켜는 순간 무릎이 뒤로 가는 이유가 이것입니다. 블렌더 쪽 답변에서도 완전히 곧은 체인은 굽힐 방향이 정해지지 않아 제대로 작동하지 않을 수 있다고 지적합니다.

옆에서 본 IK 다리 두 개. 위는 조인트를 살짝 앞으로 굽혀 그려 IK 무릎이 앞으로 접히고, 아래는 일자로 그려 무릎이 뒤로 꺾였으며 노란 앞쪽 해답도 같은 길이를 만족하는 모습
일자로 그린 다리는 앞과 뒤 두 해답이 모두 길이를 만족하므로, 처음 굽힘이 없으면 솔버가 뒤쪽을 골라도 틀린 계산이 아닙니다.

두 번째 원인은 엉덩이–발목 선이 폴 목표를 가로지를 때입니다. 목표점이 그 선 위에 놓이면 평면을 하나로 정할 수 없습니다. 마야 문서는 핸들 벡터와 폴 벡터가 교차하거나 정반대를 가리키면 체인이 갑자기 뒤집힐 수 있다고 적고 있습니다. 발을 높이 차올려 발목이 무릎 앞 폴 목표 쪽을 지나는 순간 무릎이 휙 도는 것이 이 경우입니다.

옆에서 본 IK 다리와 무릎 앞 폴 목표. 위는 발이 엉덩이와 폴 목표를 잇는 선 아래에 있어 무릎이 위를 향하고, 아래는 발을 차올려 선이 폴 목표 위로 넘어가자 무릎이 아래로 뒤집힌 모습
엉덩이와 발목을 잇는 선이 폴 목표를 넘는 순간, 폴 쪽을 향하던 무릎이 선의 반대편으로 휙 넘어갑니다.

세 번째는 폴 벡터를 거는 순간 다리가 옆으로 도는 경우입니다. 목표점이 원래 다리가 놓인 평면에서 벗어나 있으면, 컨스트레인트는 다리를 목표 쪽 평면으로 돌려 맞춥니다. 마야 문서도 목표점을 움직이면 IK 체인이 함께 회전한다고 설명합니다. 고장이 아니라 명령대로 움직인 결과입니다.

30초 진단: 무릎 방향을 누가 정하고 있는지 나눕니다

먼저 옆 뷰에서 기본 포즈의 다리 조인트를 봅니다. 무릎이 앞으로 조금이라도 굽어 있나요? 일자라면 선호 각도부터 의심합니다. 다음으로 폴 벡터 컨트롤을 무릎 정면 멀리로 옮겨 봅니다. 목표가 분명히 앞에 있는데도 무릎이 뒤로 꺾이면 원인은 폴 벡터가 아니라 처음 굽힘입니다.

무릎은 앞을 보는데 컨스트레인트를 거는 순간에만 다리가 옆으로 돈다면 목표점이 평면에서 벗어났거나 IK 핸들의 Twist 값이 0이 아닌 것입니다. 마지막으로 발 컨트롤을 샷에서 쓸 만큼 위아래, 앞뒤로 끝까지 움직여 봅니다. 특정 위치에서만 뒤집힌다면 그곳이 엉덩이–발목 선이 폴 목표를 지나는 지점입니다.

리깅을 고칠 때는 조인트부터, 폴 컨트롤은 그다음입니다

첫째, 조인트 단계로 돌아갑니다. IK 핸들을 지우고 무릎 조인트를 원하는 방향으로 몇 도 굽힌 뒤, 다리의 루트 조인트를 선택하고 Skeleton > Set Preferred Angle을 실행합니다. 오토데스크 포럼에서도 무릎을 살짝 굽혀 선호 각도를 저장하고 원래 자리로 되돌린 뒤 IK를 다시 만드는 방법이 해결책으로 채택됐습니다. 처음부터 조인트를 그릴 때 무릎을 약간 앞으로 빼 두면 이 단계가 자연스럽게 끝납니다.

둘째, Skeleton > Create IK Handle의 옵션에서 솔버를 Rotate-Plane Solver로 두고 엉덩이에서 발목까지 핸들을 만듭니다. 폴 벡터가 있는 솔버가 이쪽입니다. 마야 문서는 싱글 체인 솔버에서 뒤집힘이 생기면, 이를 다루려고 폴 벡터와 함께 도입된 Rotate Plane 솔버를 쓰라고 권합니다.

셋째, 폴 벡터 컨트롤을 엉덩이·무릎·발목 세 관절이 만든 평면 위, 무릎이 향한 쪽으로 충분히 떨어뜨려 둡니다. 눈대중으로 놓으면 평면에서 살짝 벗어나 컨스트레인트를 거는 순간 다리가 조금 돌아갑니다. 조인트 축이 굽는 평면에 맞게 정렬되어 있다면, 컨트롤을 무릎에 스냅한 뒤 무릎이 향한 로컬 축 방향으로만 이동하는 것이 가장 간단한 방법입니다. 그다음 컨트롤을 먼저, IK 핸들을 나중에 선택하고 Constrain > Pole Vector를 실행합니다.

  1. 무릎 살짝 굽히기: 조인트 단계에서 원하는 방향으로 몇 도 굽힙니다.
  2. 선호 각도 저장: 루트 조인트를 선택하고 Set Preferred Angle을 한 번 실행합니다.
  3. 평면 위에 폴 배치: 세 관절이 만든 평면 위, 무릎이 향한 쪽 멀리 둡니다.
  4. 동작 범위 테스트: 샷에서 쓸 가장 극단적인 발 위치까지 옮겨 봅니다. 앞뒤 문제는 1·2단계가, 평면과 뒤집힘은 3·4단계가 해결합니다.

넷째, 샷에 필요한 가장 극단적인 발 위치까지 옮겨 봅니다. 발차기나 깊게 앉기처럼 발이 폴 목표 쪽을 지나는 동작이 있다면 목표를 더 멀리 두거나 폴 컨트롤도 함께 애니메이션합니다. 마야 문서도 핸들 벡터가 폴 벡터를 가로지르기 어려운 곳에 폴 벡터를 두라고 안내합니다.

현장에서 폴 컨트롤은 애니메이터의 손잡이입니다

마야 문서는 캐릭터 셋업에서 팔 IK의 폴 벡터를 캐릭터 뒤쪽에 둔 로케이터에 거는 경우가 많다고 적습니다. 다리라면 무릎 앞입니다. 애니메이터는 이 컨트롤로 무릎이 안쪽을 볼지 바깥을 볼지를 연기합니다. 그래서 리깅을 넘기기 전 극단 포즈 테스트를 해 두는 것이 기본 예의입니다.

받는 쪽에서 무릎이 뒤집힌다면 “무릎이 이상해요”보다 “발을 이 높이로 들면 몇 프레임에서 뒤집힌다”고 전달하세요. 그 한 줄로 원인이 폴 목표 위치인지 선호 각도인지 바로 갈립니다.

프로그램마다 폴 벡터가 있는 자리

Maya에서는 IK 핸들을 선택하면 Channel Box에 Pole Vector X·Y·Z와 Twist가 보입니다. 선호 각도는 Skeleton > Set Preferred Angle로 저장하고 Assume Preferred Angle로 되돌립니다. 폴 컨트롤 연결은 Constrain > Pole Vector입니다.

Blender에서는 정강이 본에 Inverse Kinematics 컨스트레인트를 걸고 Target에 발 컨트롤, Pole Target에 무릎 컨트롤 본을 지정합니다. 무릎이 폴 쪽이 아닌 엉뚱한 방향을 보면 Pole Angle로 돌려 맞춥니다. 이 값은 체인 첫 번째 본의 X축을 기준으로 재는 각이라, 본의 롤에 따라 0, 90, -90, 180도 중 하나로 맞는 경우가 많습니다. 곧은 다리 문제는 여기서도 같으니 Edit 모드에서 무릎을 앞으로 살짝 굽혀 두세요.

Houdini KineFX에서는 IK Chains SOP의 Root Name, Mid Name, Tip Name에 엉덩이·무릎·발목을, Goal Name에 목표 포인트를, Twist Name에 폴 역할을 할 포인트를 지정합니다. 후디니 문서에 따르면 Twist Name을 비워 두면 Mid Name 조인트, 즉 무릎 위치를 폴 벡터로 씁니다. 이 경우 무릎 조인트의 처음 굽힘이 그대로 방향 정보가 되므로 역시 일자 다리는 피해야 합니다.

폴 벡터를 고쳐도 남는 문제

무릎 방향은 맞는데 다리가 거의 다 펴지는 순간 무릎이 툭 튀는 현상은 뒤집힘과 다른 문제입니다. 완전히 펴지는 구간에서 굽힘 각이 급하게 변하면서 생기는 현상으로, 흔히 IK 팝이라 부르며 스트레치나 소프트 IK 같은 별도 설정으로 다룹니다.

발 컨트롤을 한 축만 돌렸는데 다른 축까지 꼬인다면 IK가 아니라 회전 표현의 문제일 수 있습니다. 이때는 짐벌락과 회전 순서를 먼저 확인하세요. 무릎 방향은 맞는데 굽힌 무릎 주변 메시가 납작하게 꺼진다면 폴 벡터가 아니라 스키닝 방식과 볼륨 보존 쪽입니다.

한 줄 정리

IK로 바꾸자마자 무릎이 반대로 꺾이면 폴 벡터를 옮기기 전에 조인트에 처음 굽힘과 선호 각도가 있는지 보고, 폴 목표는 세 관절이 만든 평면 위 충분히 먼 곳에 두세요.

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.