3D 캐릭터 가족 여덟 명을 만드는 작업이었다.
이미지에서 3D 모델을 뽑고,
자동 리깅 도구에 한 명씩 넣어 뼈대를 심는다.
아빠, 엄마, 할아버지, 할머니,
성인 남녀, 남자아이, 여자아이.
여덟 번 돌렸고, 출력 폴더에 파일 여덟 개가 이름도 가지런히 생겼다.
나는 폴더를 닫았다.
끝났다고 생각했다.
파일 여덟 개가 눈앞에 있는데 무슨 의심을 하겠나.
아빠랑 할아버지 몸이 똑같았다
이상함은 다음 작업에서 왔다.
캐릭터들을 불러와서 보는데 뭔가 걸렸다.
아빠랑 할아버지 몸이 똑같아 보였다.
처음엔 착시라고 생각했다.
대머리 가족 콘셉트라 원래 다 비슷하니까.
근데 실루엣 수준이 아니었다.
어깨 폭, 배 나온 정도, 팔 길이까지 같았다.
얼굴만 다르고 몸이 복사판이었다.
지문을 떴다 — 8개가 아니라 2개였다
설마 하고 파일 지문(해시, MD5)을 여덟 개 전부 뽑아 나란히 놓았다.
성인 여섯 개 — 지문 완전 동일.
아이 두 개 — 서로 동일.
여덟 개 파일의 실체는 두 개였다.
남자 몸 하나, 아이 몸 하나.
나머지 여섯은 이름만 다른 복사본.
여덟 명을 리깅한 게 아니라,
두 명을 리깅하고 여덟 번 저장한 거였다.
범인은 내보내기였다
리깅 자체는 죄가 없었다.
이 도구는 내보내기 화면에서 아바타 선택이 풀린 채로 버튼을 누르면,
직전에 내보낸 캐릭터를 그대로 다시 출력한다.
에러도 경고도 없다.
새 파일 이름으로 멀쩡히 저장되니까 겉보기엔 완벽한 성공이다.
함정은 하나 더 있었다.
한 세션에서 내보내기를 거듭하면 메모리가 쌓여 내보내기 자체가 죽는다.
실제로 성인 여섯 종을 연속으로 뽑은 뒤
아이 차례에서 “Failed to export”가 3회 연속.
앱을 재시작하니 그제야 풀렸다.
복구는 두 갈래.
윈도우 파일 히스토리에서 원본 리깅 데이터를 건졌고,
아바타 선택을 매번 눈으로 확인하며 다시 내보냈다.
이번엔 판정 기준을 바꿨다.
성인 약 5.49MB, 아이 약 2.55MB,
지문 여덟 개 전부 상이 — 이게 나와야 완주다.
개수는 거짓말을 한다
곱씹을수록 무서운 건 도구가 아니라 내 판정 방식이었다.
“폴더에 파일 8개가 있다 = 작업 8개가 끝났다.”
자동화하는 사람은 전부 이 셈법을 쓴다.
렌더 100장 시켰으면 파일 100개를 세고, 100개면 통과.
나도 그랬다.
근데 개수는 겉포장만 센다.
겉포장 여덟 개 안에 알맹이가 두 개일 수 있다.
개수는 거짓말을 한다.
내용물 검증 한 줄이 몇 시간짜리 재작업을 막는다.
📋 재발 방지 규칙 (같은 도구·상황이면 복붙)
- ☐ 내보내기 직전, 대상(아바타) 선택 상태를 눈으로 확인 — 미선택이면 직전 캐릭터가 에러 없이 재출력된다
- ☐ 배치 내보내기 끝나면 파일 해시(MD5) 전수 대조 — 전부 달라야 완주, 크기가 같으면 1차 경보
- ☐ 대여섯 회 내보내기마다 앱 재시작 — 인메모리 누적으로 export가 실패한다
- ☐ 저장 대화상자의 기본 폴더를 믿지 말 것 — 입력 폴더로 열린다, 출력 경로를 직접 지정
- ☐ 파일 개수 ≠ 작업 완료 — 완주 판정은 개수가 아니라 내용물(해시)로만