3D 캐릭터에 드레스를 입혀 걷게 만들었다. 어제 결과를 보고 다 잘 됐다고 판단했다.
오늘 영상을 다시 보다가 이상한 걸 발견했다. 드레스 윗단이 가슴이 아니라 골반쯤에 걸려 있었다. 어제 본 정지 화면에서도 이미 그 상태였다. 내가 못 본 거다.
가슴 위치를 잡는데 배꼽을 쓰고 있었다
옷을 몸에 맞추려면 기준점이 필요하다. 가슴 높이를 뼈에서 가져오는데, 뼈 하나에는 시작점과 끝점이 있다.
가슴 뼈의 시작점은 높이 1.194, 끝점은 1.388. 시작점은 배꼽 근처고 끝점이 가슴 위쪽이다. 나는 시작점을 썼다.
19.4cm 낮게 맞춘 것이다. 딱 드레스가 흘러내린 만큼이다.
같은 자리에서 두 개가 더 나왔다
고치는 김에 옆을 봤더니 두 개가 더 있었다.
옷을 움직이는 코드가 부모 기준으로 움직이고 있었다. 이 캐릭터는 부모 크기가 1.147배라, 10cm 옮기라고 하면 11.47cm 옮겨졌다. 세계 기준으로 바꿔서 해결했다.
더 고약한 건 세 번째다. 파일로 내보냈다가 다시 불러오면 옷이 56~183m 위로 날아갔다. 내보내기 방식이 위치 정보를 무시해서, 맞춰놓은 값이 통째로 증발한 거다. 옷 모양 자체에 위치를 구워 넣고 나서야 멈췄다.
모자 값은 버그를 전제로 맞춰져 있었다
여기서 재밌는 게 하나 나왔다. 모자 위치를 정확히 고쳤더니 모자가 15cm 떠버렸다.
이유가 있었다. 예전에 모자 높이를 눈으로 보면서 조금씩 맞춰뒀는데, 그때는 부모 크기 버그가 살아 있었다. 버그가 있는 상태에 맞춰 튜닝한 숫자라, 버그를 고치니까 그 숫자가 틀린 값이 됐다.
눈으로 판정한 게 문제였다
동작은 이미 숫자로 통과 기준을 만들어 검사하고 있었다. 그런데 옷은 그냥 보고 판단했다. 그래서 어제 “전부 OK”가 나왔다.
옷에도 기준을 박았다. 드레스 윗단이 겨드랑이 기준 -6cm에서 +1cm 사이, 모자는 챙 아래가 정수리보다 낮고 꼭대기가 정수리보다 높을 것. 벗어나면 실패로 뱉는다.
이제 골반까지 내려간 드레스는 사람이 안 봐도 걸린다.
① 뼈에서 위치를 가져올 땐 시작점인지 끝점인지 확인한다. 이름이 같아도 20cm 차이가 난다.
② 물체를 옮기는 코드는 어느 기준의 좌표인지 명시한다. 부모 크기가 1이 아니면 이동량이 왜곡된다.
③ 눈으로 “잘 됐다”고 판정하지 않는다. 옷도 동작처럼 숫자 기준을 만든다.
④ 버그를 고칠 땐 그 버그에 맞춰 튜닝된 값이 있는지 같이 찾는다.