
Control Rig · 약 3분
IK 본·Control·Null과 좌표계 구분하기
발 목표와 실제 변형 본을 구분하고 Local, Rig Global, World 좌표가 섞이는 문제를 예방합니다.
Wolfgadeok · 업데이트
목표를 보관하는 본과 실제 발
마네킹 계열에서 ik_foot_l과 foot_l은 가까운 위치에 놓이지만 역할은 다를 수 있습니다. foot_l은 발 메시의 변형에 참여하고, ik_foot_l은 발이 도달해야 할 위치를 전달하는 기준으로 쓰일 수 있습니다. 목표 본만 움직였는데 메시가 움직이지 않는다면 이상한 현상이 아니라 아직 그 목표를 읽어 실제 관절을 푸는 계산이 없는 것일 수 있습니다.
접두사가 ik_라고 해서 엔진이 특별한 물리 규칙을 자동으로 부여하는 것은 아닙니다. 해당 본에 스킨 가중치가 있는지, 어떤 애니메이션이 값을 기록하는지, 리그가 어디에서 읽는지를 확인해야 합니다. 프로젝트에 따라 Control이나 Null을 목표로 사용할 수도 있습니다. 기존 애니메이션·소켓·리타겟터가 IK 본을 참조한다면 이름을 지우기 전에 그 의존성을 살펴야 합니다.
좌표에는 기준이 함께 있어야 한다
Local Transform은 부모 요소를 기준으로 한 변환입니다. Control Rig 안의 Global Transform은 리그 전체의 공통 공간을 기준으로 한 값이며 월드 변환과 동일하다고 가정하면 안 됩니다. 월드 공간은 레벨의 공통 기준입니다. 리그 공간의 발 위치와 월드 공간에서 얻은 접촉 위치를 그대로 빼면 캐릭터가 원점에 있을 때만 우연히 맞는 계산이 만들어질 수 있습니다.
Additive Global 모드에서는 선택한 공간의 기존 변환에 보정을 더합니다. 여기서 매 평가마다 이전 결과를 다시 읽어 같은 값을 누적하는지, 현재 입력 포즈를 기준으로 한 번만 더하는지를 구분해야 합니다. 특히 골반을 내린 다음 발 목표도 같은 계층을 따라 내려가면 보정량이 중복될 수 있습니다. 목표를 먼저 확보하고 적용 순서를 고정하면 이런 문제를 추적하기 쉽습니다.
원점에서 벗어나 시험하기
리그 테스트는 제자리에서만 끝내지 않습니다. 캐릭터를 멀리 이동시키고 90도 회전한 뒤 같은 턱에 서 봅니다. 월드 Z와 캐릭터의 로컬 축을 혼동하면 회전한 순간부터 발이 옆으로 이동하는 식의 문제가 드러납니다. 크기가 다른 메시를 사용할 때는 거리 상수와 단위도 함께 검사합니다. 값의 이름에 공간을 표시하는 습관은 그래프를 길게 읽는 시간을 줄여 줍니다.
- FootTarget_Rig, Hit_World처럼 값의 공간을 이름으로 구분합니다.
- 사용한 Trace 노드의 실제 핀 설명에서 입출력 공간을 확인합니다.
- 공간 변환은 한 경계에서 수행하고 같은 변환을 두 번 적용하지 않습니다.
- 목표를 움직인 결과와 실제 발 본의 결과를 디버그로 따로 표시합니다.