캐릭터가 안장에 제대로 앉지 않았다. 좌우 엉덩이 높이가 14cm나 차이 났다.
사람 엉덩이가 한쪽만 14cm 올라갈 리는 없다.
왼쪽과 오른쪽을 반대로 잡고 있었다
엉덩이 좌우를 나누는 코드가 있었다. “가운데보다 오른쪽에 있으면 오른쪽 엉덩이”라는 식이다.
그 “오른쪽”이 어디인지를 확인 없이 가정했다. 보통 3D에서 +x가 오른쪽이니까.
실제로 뼈 위치를 재봤다.
왼쪽 허벅지 뼈 x = +9.62
오른쪽 허벅지 뼈 x = −9.94
이 캐릭터는 왼쪽이 +x였다. 정반대였다.
그래서 이런 게 나왔다
내가 “오른쪽 엉덩이”라고 이름 붙인 점을 열어보니, 그 점을 움직이는 뼈의 53.6%가 왼쪽 허벅지였다. 오른쪽 엉덩이가 왼쪽 다리에 매달려 있던 것이다.
자전거 페달은 좌우가 180도 어긋나서 돈다. 왼발이 아래면 오른발은 위다. 그러니 왼다리가 움직일 때마다 오른쪽 엉덩이가 따라 올라갔다. 14cm 차이의 정체가 이거였다.
이름을 믿지 않기로 했다
이제 좌우 부호를 뼈 위치를 재서 정한다. 두 허벅지 뼈의 x를 비교해서 어느 쪽이 오른쪽인지 그 자리에서 확정한다. 뼈 이름이 “Right”라고 적혀 있어도 안 믿는다.
그리고 조건을 하나 더 걸었다. 반대쪽 다리 영향이 5%를 넘으면 그 점은 탈락. 다시 잡으니 좌우 높이차가 14cm에서 0.1cm가 됐다.
재발방지 체크리스트
① 좌우·앞뒤 같은 방향은 이름이 아니라 실제 좌표로 확정한다.
② 대칭이어야 할 두 값이 크게 다르면 계산이 아니라 분류를 먼저 의심한다.
③ 한쪽 부품이 반대쪽 부품에 묶여 있지 않은지 지분을 세어본다.
④ “보통 이렇다”는 관행은 이 물건에서도 그런지 확인하기 전까지 가정일 뿐이다.
① 좌우·앞뒤 같은 방향은 이름이 아니라 실제 좌표로 확정한다.
② 대칭이어야 할 두 값이 크게 다르면 계산이 아니라 분류를 먼저 의심한다.
③ 한쪽 부품이 반대쪽 부품에 묶여 있지 않은지 지분을 세어본다.
④ “보통 이렇다”는 관행은 이 물건에서도 그런지 확인하기 전까지 가정일 뿐이다.