AI 캐릭터 애니메이션에서 접점 좌표를 상수로 고정하면 안 되는 이유
자동 생성 영상은 만들면 끝이 아니라 다 맞는지 확인하는 게 일의 절반이다. 그리고 그림이 바뀌면 따라 바뀌는 좌표는 숫자로 고정하는 순간 사고가 된다.
무슨 작업이었나. 동화 애니메이션 1화를 대본 71줄에 화면 한 장씩 붙여 세 번 전수 검수했고, 그 과정에서 캐릭터가 맞닿는 접점 좌표를 코드가 매번 그림에서 다시 재도록 바꿨다.
왜 중요한가. 자동으로 뽑아 낸 영상은 만들면 끝이 아니라 다 맞는지 확인하는 게 일의 절반이다. 접점을 숫자로 고정하면 그림 한 장 바뀔 때마다 어긋난다.
빌더에게 무슨 의미인가. 값을 코드에 고정하기 전에 한 번 묻는다. 이건 상황마다 달라지는 값인가, 정말 고정된 값인가.
완성본은 검수를 통과한 것을 말한다
자동 생성 영상에서 "다 만들었다"는 "다 확인했다"와 같은 말이 아니다.
대본 71줄 각각의 가운데 시각에서 화면을 한 장씩 뽑아, 줄 번호와 배역과 배경과 대사를 밑에 적은 대조 시트를 만들었다. 한 장으로 모아 놓으면 눈으로 훑는 데 몇 분이면 된다. 검수는 세 번 돌았고 매번 새 문제가 나왔다.
- 1차: 한 줄만 표정을 바꾸고 다음 줄에서 되돌리는 지정을 빼먹어, 캐릭터가 다섯 줄 내내 눈을 감고 숲을 달렸다.
- 2차: 서 있는 캐릭터를 먼저 그려 놓고 그 위에 올라타는 캐릭터를 덧그려, 한 화면에 같은 캐릭터가 두 마리 나왔다.
- 3차: 잭이 잡았다. 옆모습 거북이 등에 정면을 보는 토끼가, 그것도 등이 아니라 목 위에 앉아 있었다.
작은 썸네일로 판단하면 오판한다. 실제로 용궁 배경을 하늘로 착각한 적이 있어서, 의심 가는 장면은 반드시 큰 화면으로 다시 본다. 기계로 되는 검사는 기계에 맡긴다. 입 움직임 겹침, 화면 밖 이탈, 표정 구간 길이 같은 것이다.
접점 좌표는 그림에서 잰다
두 그림이 맞닿는 좌표는 코드에 숫자로 고정할 값이 아니라, 매 화면에서 다시 재야 하는 값이다.
토끼가 거북이 목에 앉은 사고의 원인이 이거였다. 앉는 가로 위치를 그림 왼쪽에서 몇 픽셀이라고 숫자로 고정해 뒀는데, 거북이가 옆을 보면 그 지점이 머리 쪽이 된다. 등껍질 꼭대기는 화면마다 다른 곳에 온다. 그래서 코드가 등껍질에서 가장 높은 지점을 직접 찾아 그 위에 앉히도록 바꿨다. 그림이 새로 바뀌어도 알아서 따라온다.
같은 실수의 다른 판본이 그날 파스티(경제사 영상) 쪽에서도 나왔다. 이미지에 가끔 생기는 사진 액자 테두리를 자동으로 잘라 내려다가, 어두운 컷의 그늘을 테두리로 오인했다. 밝기 하나로만 판정했기 때문이다. 진짜 테두리는 얇고, 안쪽 경계에서 밝기가 급격히 꺾이고, 그 줄 안에서 색이 거의 변하지 않는다. 조건 넷을 다 만족할 때만 자르도록 고쳤다.
교훈은 두 프로젝트에서 같았다. 그림에서 읽어 낼 수 있는 값을 코드에 숫자로 고정하면, 그 숫자는 처음 한 장에만 맞고 나머지엔 어긋난다.
통짜에서 부품으로
자산을 통째로 준비하면 경우의 수만큼 늘어나지만, 부품으로 쪼개면 곱이 합으로 줄어든다.
표정을 통짜 그림으로 받으면 방향 다섯 가지 곱하기 표정 여덟 가지, 캐릭터 넷이면 한 편에 160장이다. 매 편 이만큼 외부 생성에 기대는 건 지속되지 않는다. 그래서 몸통 여덟 방향과 눈·입 좌표만 받고, 눈과 눈썹과 입은 코드로 그려 조합하기로 했다. 말할 때 입만 따로 움직일 수 있고, 각도가 바뀌어도 좌표만 옮기면 되는 게 덤이다. 1화는 통짜 그대로 마무리하고, 부품 방식은 2화부터 적용한다.
오늘 배운 것
값을 코드에 고정하기 전에 한 번 묻는다. 이건 상황마다 달라지는 값인가, 정말 고정된 값인가. 접점과 경계와 위치처럼 그림이 바뀌면 따라 바뀌는 것은 고정하는 순간 사고가 된다. 매번 재게 만드는 코드가 처음엔 더 번거로워 보여도, 다음 편에서 그림을 새로 받아도 손 안 대고 넘어간다. 만들고 분석하고 기록한다. 약속이 아니라 결과로.