손가락 끝마디만 반대로 꺾였는데, 검증은 두 번 다 통과했습니다

Max에서 손 포즈 34장을 BVH로 구워 웹 뷰어에 올렸습니다. 첫째 마디와 둘째 마디는 Max와 똑같이 나오는데 끝마디만 손등 쪽으로 100도 넘게 젖혀져 있었습니다. 편 손이 갈고리처럼 보였습니다.

배포 전에 골격 검증을 돌렸습니다. 원본 골격과 새 골격의 관절 위치를 전부 견주는 검증이고, 결과는 오차 0.0도였습니다. 리타게팅이 소스를 얼마나 정확히 재현하는지도 쟀습니다. 마디 셋 전부 방향 차이 0.0도였습니다. 그런데 화면에서는 끝마디가 반대였습니다.

세 겹을 벗겨야 나왔습니다

처음에는 리타게팅을 의심했습니다. 손목 둘레 회전을 아무도 안 맞추고 있어서 실제로 결함이 있었고, 손가락 정렬 쌍을 넣어 고쳤습니다. 끝마디가 여전히 꺾여 있었습니다.

다음에는 끝마디 자체를 봤습니다. 끝마디는 다음 뼈가 없어서 방향을 맞출 대상이 없습니다. 가상 손끝을 추정해 넣었습니다. 여전히 꺾여 있었습니다.

리타게팅을 정확하게 만들수록 끝마디가 정확하게 꺾였습니다. 여기서 방향을 바꿨습니다. 옮기는 쪽이 아니라 옮겨지는 자료 자체를 봤습니다.

원인은 파일 안에 있었습니다

Max에서 포즈를 구울 때 기준 자세가 주먹이었습니다. BVH 채널은 기준 자세로부터의 변화량이라, 모든 마디의 값이 주먹에서 얼마나 폈나로 기록됩니다. 편 손이면 마디마다 -100도 안팎의 큰 값이 들어갑니다.

이 자체는 문제가 아닙니다. 자식이 있는 마디는 기준 자세의 굽힘이 자식의 위치(OFFSET)에 남습니다. 채널의 -100도와 OFFSET의 굽힘이 합쳐져 원래 자세가 정확히 복원됩니다. FK를 돌리면 Max와 똑같은 자리에 관절이 섭니다.

끝마디는 다릅니다. 자식이 없습니다. 기준 자세의 굽힘이 파일 어디에도 남지 않습니다. 남는 것은 채널의 -100도뿐입니다. 곧게 이은 손끝에 -100도를 돌리니 손등 쪽으로 젖혀집니다.

자식이 있는 둘째 마디와 자식이 없는 끝마디의 차이
같은 -100도 채널이 둘째 마디에서는 자세를 복원하고, 끝마디에서는 뒤로 젖힌다. 차이는 자식 뼈의 유무 하나다.

34장을 전부 열어 보니 끝마디 채널이 33장에서 Z축 -97도에서 -110도 사이였고, 기준 포즈 한 장만 0이었습니다. 이 분포 자체가 진단입니다. 한 장만 0이고 나머지가 큰 한 방향이면 기준 상대 인코딩이 끝마디에서 깨진 것입니다.

검증이 왜 통과시켰는가

골격 검증은 관절의 위치를 견줍니다. 끝마디의 회전은 자식이 없으니 어떤 관절의 위치도 바꾸지 않습니다. FK를 아무리 정확하게 돌려도 잎 관절의 회전은 결과에 나타나지 않습니다. 검증이 보는 자리에 결함이 없었던 것이 아니라, 결함이 검증이 볼 수 없는 자리에 있었습니다.

리타게팅 검증도 같은 이유로 통과했습니다. 대상이 소스를 0.0도 오차로 재현했다는 것은 사실입니다. 소스가 틀렸을 뿐입니다.

고친 방법

Max에서 다시 굽는 것이 정답입니다. Biped의 손끝 마디(Nub)를 내보내기에 포함하면 끝마디에도 자식이 생기고 문제가 사라집니다. 그런데 당장 재굽기가 어려워서 파일 안에서 복원했습니다.

34장이 같은 쉬는 골격을 씁니다. 손가락마다 둘째 마디가 가장 곧은 포즈를 고르고, 그 포즈에서 끝마디도 곧다고 놓습니다. 그러면 쉬는 손끝의 위치는 그 포즈의 끝마디 회전을 거꾸로 돌린 곧은 연장선입니다. 이것을 이름 있는 End 관절로 34장에 써 넣었습니다.

결과는 이렇습니다. 편 손의 끝마디가 -106도 젖힘에서 0.4도로, 주먹의 끝마디가 -28도 반대에서 +75도 같은 방향으로 돌아왔습니다.

세 가지를 남깁니다

잎 관절에는 검증 항목을 따로 둡니다. 위치 대조로는 절대 못 잡습니다. 끝마디 채널의 분포를 봅니다. 한 장만 0이고 나머지가 한 방향으로 크면 의심합니다.

Biped 내보내기는 Nub를 반드시 포함합니다. 잎 관절의 회전을 살리는 유일한 방법입니다. 빠뜨리면 손끝뿐 아니라 발끝도 같은 일을 겪습니다.

고칠수록 나빠지면 지금 층을 의심하지 말고 아래층을 팝니다. 리타게팅을 정확하게 만들수록 결함이 또렷해졌습니다. 그 신호를 두 번 무시하고 옮기는 쪽만 손봤습니다. 옮기는 것이 정확해지는데 결과가 나빠진다면, 옮겨지는 것이 틀린 것입니다.

손 포즈 34장은 artoke.com/viewer의 포즈 탭에 있습니다. 왼손, 오른손, 양손을 골라 볼 수 있고, BVH와 FBX와 glTF로 내려받을 수 있습니다.

댓글

이 블로그의 인기 게시물

걷는 모습만 봐도 기분이 보입니다

손 하나로 캐릭터의 말이 바뀝니다