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

마야에서 회전축이 겹쳐 손목이 꼬일 때: 짐벌락과 Rotate Order

vfx 잡학지식 읽는 시간 약 12분 조회 3

한 축만 돌렸는데 세 채널이 함께 바뀌거나 두 축이 같은 회전을 한다면 리그보다 오일러 회전의 짐벌락을 먼저 의심하고, Gimbal 모드 진단과 회전 순서 선택으로 바로잡는 방법을 정리했습니다.

마야에서 손목 컨트롤의 두 회전축이 겹쳐 같은 방향으로 돈다면 짐벌락인지 Gimbal 모드에서 확인하세요. 손목 컨트롤러를 위로 90도 꺾어 놓고, 이제 옆으로 살짝 비틀려고 합니다. 그런데 X를 돌리든 Z를 돌리든 손목은 똑같은 방향으로만 돕니다. 로컬 모드에서 링 하나만 잡고 돌렸는데 채널 박스에서는 세 값이 한꺼번에 바뀌고, 키를 두 개 찍어 재생하면 그 사이에서 손이 크게 휘돌다 제자리로 돌아옵니다.

이럴 때 먼저 드는 생각은 “리그가 고장 났다”입니다. 리거에게 메시지를 보내거나 조인트를 다시 그리기 전에 확인할 것이 하나 있습니다. 이 현상의 상당수는 리그가 아니라, 회전을 X·Y·Z 세 숫자로 저장하는 방식인 오일러 회전의 구조에서 나옵니다. 이름은 짐벌락(gimbal lock)입니다. 방향은 간단합니다. 기즈모를 Gimbal 모드로 바꿔 두 고리가 겹쳤는지 보고, 겹쳤다면 회전 순서(Rotate Order)를 바꿉니다. 아래에서 왜 그런지부터 차례로 풀어 보겠습니다.

짐벌락은 세 축의 회전 순서가 만드는 겹침입니다

Rotate X, Y, Z는 서로 독립된 다이얼 세 개처럼 보이지만, 실제로는 정해진 순서대로 차례차례 적용됩니다. 오토데스크 마야 문서도 오일러 회전을 X, Y, Z 세 각도와 “회전 순서”로 계산한다고 설명합니다. 마야 기본값인 xyz 순서라면 X가 먼저, 그다음 Y, 마지막으로 Z가 적용됩니다.

이 순서를 고리 세 개로 바꿔 보면 이해가 쉽습니다. 마지막에 적용되는 Z가 가장 바깥 고리, 가운데 Y가 그 안의 고리, 처음 적용되는 X가 가장 안쪽 고리입니다. 바깥 고리를 돌리면 안쪽 고리 둘이 통째로 따라 돌고, 안쪽 고리를 돌려도 바깥 고리는 그대로입니다. 실사 카메라 삼각대 헤드를 떠올리면 됩니다. 좌우로 도는 팬 축 위에 위아래로 까딱이는 틸트 축이 얹혀 있어서, 팬을 돌리면 틸트 축도 함께 돌아가죠.

가운데 축이 90도가 되면 바깥과 안쪽 고리가 겹칩니다

문제는 가운데 고리가 90도 가까이 돌 때 생깁니다. 가운데 고리가 누우면서 안쪽 고리의 회전축이 바깥 고리의 회전축과 같은 방향을 가리키게 됩니다. 그러면 X를 돌려도, Z를 돌려도 화면에서는 같은 회전이 일어납니다. 세 개였던 회전 자유도 중 하나를 잠시 잃은 상태예요. 오토데스크 문서는 이를 한 축의 회전이 다른 축에 원치 않는 회전을 일으키거나 축들이 일치하게 되는 현상으로 설명합니다.

짐벌락 상태의 회전 고리 비교: 마야 xyz 회전 순서의 짐벌 고리. 위는 세 고리가 서로 직각이고, 아래는 Y를 90도 돌리자 안쪽 X 고리와 바깥 Z 고리가 한 평면에 겹친 모습
가운데 Y가 90도가 되면 안쪽 X 고리가 바깥 Z 고리와 같은 축에 눕기 때문에, X를 돌리든 Z를 돌리든 같은 방향으로만 돕니다.

그렇다면 잃어버린 방향으로 돌리고 싶을 때는 어떻게 될까요? 한 채널만 바꿔서는 그 방향이 나오지 않으니, 로컬이나 월드 모드의 회전 툴은 세 채널을 동시에 조금씩 바꿔 원하는 방향을 만들어 냅니다. 채널 박스의 세 값이 한꺼번에 변하는 이유입니다. 그리고 키와 키 사이의 보간은 이 세 숫자를 각자 따로 이어 붙입니다. 시작과 끝 방향은 맞아도, 중간 경로는 짧은 길이 아니라 크게 돌아가는 길이 되기 쉽습니다.

비슷해 보이지만 다른 현상도 있습니다. 오토데스크 문서는 보간 중에 각도가 ±180도를 넘어가며 예기치 않게 감기는 것을 플리핑(flipping)으로 따로 구분합니다. 예를 들어 179도 다음 키가 -179도로 저장되면, 실제로는 2도만 움직이면 되는데 반대쪽으로 358도를 돌아갑니다. 짐벌락은 축이 겹친 문제이고, 플리핑은 숫자 표기가 튄 문제입니다. 그래서 고치는 도구도 다릅니다.

Graph Editor의 rotateY 커브. 위는 175도 다음 키가 -175도로 저장돼 커브가 아래로 크게 떨어지고, 아래는 Euler Filter 뒤 185도로 이어져 커브가 매끄럽게 올라가는 모습
같은 방향인데도 -175도로 저장되면 보간이 반대로 350도를 돌고, Euler Filter는 이를 185도로 바꿔 10도만 움직이게 합니다.

30초 진단: 짐벌락인지 Gimbal 모드로 확인하세요

로컬 모드의 회전 링은 지금 오브젝트가 향한 방향을 기준으로 그려지기 때문에 언제나 세 축이 반듯하게 보입니다. 겹침이 화면에 드러나지 않는 이유입니다. 마야에서 회전 툴을 더블클릭해 Tool Settings를 열고, 회전 축 방향 옵션(버전에 따라 Rotate mode 또는 Axis Orientation)을 Gimbal로 바꾸세요. 오토데스크 문서에 따르면 Gimbal 모드는 X, Y, Z 값 중 하나만 바꾸고, 로컬·월드 모드는 여러 채널을 함께 바꿀 수 있습니다. 즉 Gimbal 모드의 링 하나가 채널 하나에 정확히 대응합니다.

두 링이 거의 겹쳐 보이고 가운데 채널 값이 90도나 -90도 근처라면 짐벌락입니다. 링은 겹치지 않는데 키 사이에서만 한 바퀴 돈다면 Graph Editor를 여세요. 회전 커브 하나가 한 프레임 사이에 180도나 360도 가까이 절벽처럼 떨어진다면 플리핑입니다. 둘 다 아니라면 문제는 회전 표현이 아니라 조인트 축이나 스키닝 쪽일 가능성이 큽니다.

  1. 회전 툴을 Gimbal 모드로 바꿉니다. 로컬 링은 늘 반듯하게 그려져 겹침이 보이지 않습니다.
  2. 두 고리가 겹치고 가운데 채널이 ±90도 근처라면 짐벌락입니다. 회전 순서를 바꾸되, 키가 있으면 애니메이션을 보존하는 방법으로 바꿉니다.
  3. 고리는 멀쩡한데 Graph Editor에서 커브가 180도나 360도씩 절벽처럼 튄다면 플리핑입니다. Euler Filter로 숫자를 정리합니다.
  4. 둘 다 아니라면 회전 표현 문제가 아닙니다. 조인트 축과 스키닝을 점검합니다.

링이 겹쳤는지, 커브가 튀었는지를 먼저 가르면 엉뚱한 곳을 고치느라 시간을 쓰지 않습니다.

고칠 때는 숫자 정리, 순서 선택, 애니메이션 보존 순서로 갑니다

첫째, 플리핑이라면 Graph Editor에서 회전 커브를 선택하고 Curves > Euler Filter를 실행합니다. 같은 방향을 가리키는 다른 각도 표현으로 값을 바꿔 커브를 이어 주는 기능이라, 오토데스크 문서도 모션 캡처 데이터의 망가진 회전 커브를 정리하는 예로 소개합니다. 다만 문서 표현대로 “고칠 수도 있는” 도구이지, 축이 실제로 겹쳐 생긴 짐벌락까지 모두 풀어 주지는 않습니다.

둘째, 짐벌락이라면 회전 순서를 고릅니다. 기준은 하나입니다. 90도까지 갈 일이 가장 적은 축을 가운데에 둡니다. 가장 크게, 자주 돌릴 축은 마지막 글자인 바깥 고리에 두면 나머지 두 축을 흔들지 않고 크게 돌릴 수 있습니다. 카메라가 대표적인 예입니다. 좌우 팬(Y)은 크게 돌고, 위아래 틸트(X)는 수직까지 갈 일이 드물며, 롤(Z)은 거의 쓰지 않습니다. 그래서 오토데스크 포럼 답변에서도 마야 카메라는 ZXY 순서로 두라고 권합니다. 좌우는 크게 돌리고 위아래는 덜 꺾는 머리 컨트롤도 같은 논리로 따져 볼 수 있습니다.

같은 카메라를 좌우로 90도 팬한 포즈. 위의 xyz 순서에서는 X와 Z 고리가 겹치고, 아래의 zxy 순서에서는 팬 Y 고리가 바깥에 있어 세 고리가 모두 따로 서 있는 모습
카메라 방향은 두 장이 똑같지만, 팬 축 Y를 바깥 고리에 둔 zxy에서는 90도를 돌려도 고리가 겹치지 않습니다.
자리zxy에서의 축카메라 동작이 자리에 둔 이유
첫 글자 · 안쪽 고리Z롤(기울임)거의 쓰지 않음
가운데 글자X틸트(위아래)수직 90도까지 갈 일이 드묾
마지막 글자 · 바깥 고리Y팬(좌우)크게 돌려도 나머지 두 축을 흔들지 않음

셋째, 이미 키가 찍혀 있다면 Rotate Order 값을 그냥 바꾸지 마세요. 오토데스크 문서가 적은 대로 회전 순서를 바꾸면 같은 숫자라도 최종 방향이 달라져, 잡아 둔 포즈가 전부 틀어집니다. 마야 2024부터는 Modify 메뉴의 Reorder Rotation이 애니메이션을 바꾸지 않고 회전 순서를 변환하고, 어떤 순서가 짐벌락 위험이 적은지 평가해 줍니다. 그 이전 버전이라면 방향을 보존해 변환하는 스크립트를 쓰거나, 순서를 바꾼 뒤 키를 다시 맞춰야 합니다.

넷째, 굴러가는 주사위처럼 모든 방향으로 도는 물체라면 어떤 순서도 완벽하지 않습니다. 이때는 Graph Editor의 Change Rotation Interp로 회전 보간을 쿼터니언으로 바꾸는 방법이 있습니다. 문서에 따르면 쿼터니언 보간은 짐벌락과 플리핑을 겪지 않지만, 360도를 넘는 스핀을 표현하지 못하고 채널별로 커브를 다듬는 자유도 줄어듭니다. 캐릭터 컨트롤처럼 애니메이터가 커브를 만져야 하는 곳에는 보통 오일러를 유지하고 순서를 고르는 쪽이 다루기 쉽습니다.

현장에서는 애니메이터가 키를 찍기 전에 정해 둡니다

회전 순서는 리그를 넘길 때 함께 정해지는 약속에 가깝습니다. 오토데스크의 리깅 튜토리얼도 조인트마다 Rotate Order를 조절해 짐벌락을 줄이라고 안내합니다. 도중에 바꾸면 포즈가 틀어지니, 컨트롤마다 주로 어느 방향으로 크게 도는지 따져 리깅 단계에서 미리 정해 두는 편이 안전합니다.

애니메이터 입장에서도 할 수 있는 일이 있습니다. “리그가 이상해요” 대신 Gimbal 모드 화면을 캡처해 “이 컨트롤이 이 프레임에서 두 축이 겹친다”고 전달하면, 리거는 순서를 바꿀지 컨트롤 구조를 바꿀지 바로 판단할 수 있습니다. 다른 프로그램으로 넘길 때도 마찬가지입니다. 오토데스크 문서는 다른 3D 소프트웨어에서 가져온 애니메이션이 의도대로 보이도록 Rotate Order를 원래 프로그램의 순서와 맞추라고 설명합니다. 같은 세 숫자라도 순서가 다르면 다른 방향이기 때문입니다.

프로그램마다 회전 순서가 있는 자리

Maya에서는 오브젝트나 조인트를 선택하고 Attribute Editor의 Transform Attributes에서 Rotate Order를 봅니다. 기본값은 xyz입니다. 기즈모 전환은 회전 툴의 Tool Settings, 뒤집힘 정리는 Graph Editor의 Curves > Euler Filter, 애니메이션을 유지한 순서 변환은 마야 2024 이후 Modify > Reorder Rotation입니다.

Blender에서는 N 패널의 Item > Transform에 있는 Rotation Mode에서 XYZ Euler부터 ZYX Euler까지 여섯 가지 순서와 Quaternion, Axis Angle 중에 고릅니다. 블렌더 매뉴얼은 Rotate 기즈모의 방향을 Gimbal로 두고, XYZ Euler라면 가운데 축인 Y를 돌려 보면 고리가 사실상 두 개만 남는 모습을 직접 확인할 수 있다고 안내합니다.

Houdini에서는 오브젝트 노드의 Transform 탭에 있는 Transform Order를 봅니다. 왼쪽 메뉴는 이동·회전·스케일을 적용하는 순서이고, 오른쪽 메뉴가 X, Y, Z 회전 순서입니다. 후디니 문서도 캐릭터에 따라 특정 회전 순서가 조인트 변형을 다루기 쉽게 만든다고 설명합니다.

회전 순서를 바꿔도 그대로라면 다른 계열의 문제입니다

첫째, 조인트의 로컬 축이 뼈가 굽는 방향과 어긋난 경우입니다. 팔꿈치를 한 축으로만 굽혔는데 팔이 옆으로 같이 비틀린다면, 짐벌락이 아니라 조인트 방향 자체가 팔의 굽힘과 맞지 않게 잡혀 있을 수 있습니다. 이때는 Gimbal 모드에서도 링이 겹쳐 보이지 않습니다.

둘째, 회전값은 맞는데 메시만 꼬여 보이는 경우입니다. 손목을 비틀었더니 팔뚝이 사탕 껍질처럼 짜부라진다면 회전 순서가 아니라 스키닝 방식의 문제입니다. 이 부분은 스키닝 방식과 볼륨 보존 글에서 따로 다뤘습니다.

셋째, 축도 커브도 멀쩡한데 움직임만 어색한 경우입니다. 그래프 에디터에서 커브가 매끄럽게 이어지는데도 동작이 튄다면 회전 표현보다 키 사이의 타이밍과 간격을 먼저 보세요.

한 줄 정리

한 축만 돌렸는데 다른 축까지 꼬이면 리그를 탓하기 전에 Gimbal 모드로 고리가 겹쳤는지 보고, 90도까지 갈 일이 가장 적은 축을 가운데에 두는 회전 순서를 키를 찍기 전에 정하세요.

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.