
Control Rig · 약 3분
Forwards Solve와 Backwards Solve의 정확한 방향
컨트롤에서 본으로 가는 계산과 본에서 컨트롤을 복원하는 계산을 구분하고 구형 노드를 안전하게 정리합니다.
Wolfgadeok · 업데이트
같은 리그를 두 방향으로 읽기
Forwards Solve는 컨트롤과 변수에 주어진 값으로 본의 자세를 만드는 방향입니다. 손 컨트롤을 움직였을 때 손과 팔이 따라오는 계산이 여기에 해당합니다. Backwards Solve는 이미 주어진 본의 자세로부터 컨트롤의 값을 계산하는 반대 방향입니다. 기존 애니메이션을 컨트롤 키로 옮겨 편집하는 과정에서 필요합니다. 두 방향을 구분할 때는 무엇을 입력으로 읽고 무엇을 결과로 움직이는지 확인합니다.
두 그래프가 있다고 해서 자동으로 서로 역함수가 되는 것은 아닙니다. 어깨 회전 하나로 손이 움직이는 결과는 만들 수 있어도, 손 위치 하나에서 원래의 모든 관절 회전을 유일하게 복원할 수는 없습니다. 리그 제작자는 어떤 컨트롤에 어느 본의 정보를 반영할지, IK와 FK 전환 시 무엇을 유지할지 명시해야 합니다.
초기화와 실행 순서 정리하기
Construction Event에는 컨트롤의 초기 위치, 필요한 리그 요소와 변수의 준비 작업을 둡니다. 게임의 생성자 코드와 완전히 동일한 수명 주기를 가정하기보다는 리그 초기화 단계라고 이해하는 편이 안전합니다. 플레이 중 반복해서 갱신해야 하는 지면 추적 결과를 초기화에만 넣으면 캐릭터가 이동해도 값이 따라오지 않습니다.
Sequence 노드로 추적, 보간, 골반 보정, IK 적용의 실행 순서를 나눌 수 있습니다. 실행선이 많다는 이유로 모두 함수로 숨기기보다 단계의 입출력 이름을 먼저 정리합니다. 구형 노드가 Outdated로 표시되면 복제한 리그에서 Upgrade Node를 적용하고, 실행 핀 연결·기본값·배열 순서를 비교합니다. 컴파일 성공만으로 이전과 같은 결과라는 결론을 내리지는 않습니다.
방향별로 확인하는 작은 테스트
먼저 한 손 컨트롤만 움직여 해당 팔의 본이 반응하는지 확인합니다. 다음에는 애니메이션을 미리보기 입력으로 넣고 Backwards Solve에서 컨트롤이 손을 따라오는지 살핍니다. 마지막으로 복원된 컨트롤을 다시 Forwards Solve에 넣었을 때 원래 포즈와 차이가 나는 관절을 찾습니다. 전체 몸이 틀어질 때보다 한 체인만 비교할 때 오프셋이나 좌표계 오류를 찾기 쉽습니다.
- 테스트용 리그 사본을 만들고 기준 포즈를 기록합니다.
- Forwards와 Backwards 미리보기를 따로 확인합니다.
- 노드 업그레이드는 한 종류씩 적용하고 전후 포즈를 비교합니다.
- 베이크가 목적이라면 키를 만든 뒤 처음·중간·마지막 프레임을 다시 재생합니다.