본문으로 건너뛰기
AI 수익화 도전기
AI로 어린이 3D 애니메이션 만들기 · 일지 1

어린이 3D 애니메이션 만들기 1편, 언리얼을 파이썬으로만 움직여 만든 5초

일지· 읽는 데 9분

AI로 만든 곰 캐릭터 모모를 언리얼 엔진 5.8에 넣고 파이썬 스크립트로만 5초 샷을 렌더했어요. 올리브색 곰, 회색 곰, 제자리걸음까지 실제 렌더 화면으로 어떻게 바뀌었는지 보여 드려요.

목차 10개

아이들이 보는 영상 정도의 3D 애니메이션을 AI 도구로 만들 수 있는지 시험해 본 첫 기록이에요. 곰 캐릭터 「모모」를 AI 3D 생성 서비스로 만들고, 언리얼 엔진 5.8에서 에디터를 거의 만지지 않은 채 파이썬 스크립트로 장면 구성부터 렌더까지 돌려 5초짜리 샷을 만들었어요. 작업은 이틀 동안 Claude Code와 했어요.

완성된 5초 샷에서 뽑은 여섯 장면. 갈색 곰 모모가 공원 산책로를 걷고 뒤쪽에 빨간 풍선이 떠 있다

원래 계획은 《모모와 날아간 빨간 풍선》이라는 60초, 8샷짜리 이야기였어요. 계획서에 "처음 성공 기준은 딱 5초"라고 적어 두고, 모모가 공원을 걷는 첫 샷부터 만들었어요. 자동차 다섯 대 시리즈는 2편에 있어요.

캐릭터 고르기

3D 생성 서비스의 자동 리깅은 팔다리가 분명한 두 발 인간형에서 잘 된다고 해서, 곰이지만 두 발로 서고 팔꿈치와 무릎이 또렷한 장난감 인형 모양으로 후보 이미지를 몇 장 만들었어요. 그중 하나를 골라 3D로 바꾸고 걷기·달리기 동작까지 받았어요.

3D로 바꾸기 전에 고른 모모 후보 이미지. 관절이 보이는 갈색 플라스틱 곰 인형이 정면으로 서 있다. 빨간 동그라미로 팔꿈치와 무릎 관절 표시

뼈 24개에 걷기 1.03초, 달리기 0.63초로 30fps에 잘 맞았어요. 여기까지는 순조로웠어요.

첫 렌더: 유령 같은 곰

언리얼 쪽은 원래 MCP로 조작할 생각이었는데 작업 세션에 연결이 안 돼 있었어요. 그래서 가져오기, 재질, 레벨 구성, 렌더, 인코딩을 파이썬 스크립트 다섯 개로 나누고 명령 한 줄로 처음부터 다시 만들 수 있게 했어요. 그렇게 나온 첫 렌더가 이거예요.

첫 렌더. 살구색으로 납작해진 모모가 여러 겹으로 겹쳐 보이고 뒤의 나무는 검은 덩어리다. 번호 1·2·3으로 겹친 몸, 스스로 빛나는 곰, 검은 나무 표시

문제가 한꺼번에 네 개였어요. 그림에 번호를 붙인 세 곳이 화면에서 바로 보이는 문제예요. 캐릭터 재질이 색 텍스처를 발광에도 연결해 들어와서 스스로 빛나는 납작한 실루엣이 됐고, 소품 모델에는 텍스처도 노멀도 없어서 나무가 검게 나왔어요. 모델 기준점이 가운데라 땅에 절반이 묻혔고, 몸이 겹쳐 보인 건 렌더의 시간 샘플이 0프레임 앞에서 기본 T자 자세를 섞어서였어요. 모든 트랙을 걷기 한 주기만큼 앞에서 시작하게 해서 겹침을 없앴어요.

올리브색에서 갈색으로

재질을 새로 만들고 나니 이번엔 갈색 곰이 올리브색으로 나왔어요.

모모가 누런 올리브색으로 보이고 뒤의 나무는 각진 어두운 덩어리인 렌더. 올리브색이 된 몸에 화살표 메모

잔디 반사광을 의심해서 잔디를 어둡게 했는데 그대로였어요. 조명을 끈 상태로 머리만 렌더해 보니 재질 색은 멀쩡한 갈색이었어요. 해가 모모 뒤에 있어서 카메라 쪽 면이 잔디에서 튄 초록빛만 받고 있었던 거예요. 해 방향을 돌리니 원래 텍스처 색이 나왔어요.

해 방향을 바꾼 뒤의 렌더. 모모는 따뜻한 갈색이 됐지만 뒤의 나무가 땅에 반쯤 묻히고 면이 각져 있다. 갈색이 된 모모에 메모, 각진 나무는 파란 동그라미로 표시

곰은 맞는 색이 됐는데 뒤의 나무가 영 이상했어요. 기준점 때문에 반쯤 땅에 박혀서 줄기 대신 잎이 땅에 붙어 있고, 노멀이 없으니 돌덩이처럼 각져 보였어요. 가장 낮은 점만큼 올려 심고 노멀을 다시 계산해서 부드럽게 만들었어요.

걷는데 제자리

그렇게 첫 5초를 "완성"했는데, 영상을 보고 걷기만 하고 바닥도 안 움직인다는 느낌이 들었어요. 첫 프레임과 마지막 프레임을 나란히 놓으니 정말 거의 같았어요.

0번 프레임과 149번 프레임을 위아래로 놓은 비교. 배경과 모모 위치가 거의 같다. 두 프레임의 모모를 빨간 네모로 표시

원인은 시퀀서에 키를 넣는 코드였어요. 언리얼 시퀀서는 1초를 24,000틱으로 쪼개는데, 키를 넣는 함수는 틱이 아니라 화면 프레임을 받아요. 프레임을 틱으로 바꿔 넣었더니 150프레임에 넣으려던 키가 12만 프레임 위치에 박혔고, 카메라는 5초 동안 2cm쯤 움직였어요. 걷기 동작은 시퀀서와 따로 재생되니 뭔가 움직이는 것처럼 보여서 더 늦게 알았어요.

# 키 시간은 틱이 아니라 화면 프레임 단위
fn = unreal.FrameNumber(int(round(frame)))
channel.add_key(fn, value, interpolation=interp)

곤란했던 건 미리 돌려 둔 검사 스크립트도 같은 틱 가정으로 계산해서 "정상"이 나왔다는 점이에요. 결국 렌더 첫 장과 마지막 장을 이미지로 비교하고서야 잡혔어요. 카메라도 모모와 같은 속도로 따라가며 고개를 돌리던 걸, 절반 조금 넘는 속도에 방향 고정으로 바꿔서 모모가 화면을 가로지르게 했어요.

조명을 다시 짜고, 회색 곰

다른 AI 영상 도구로 만든 캡처와 나란히 놓고 비교해 보니, 가장 큰 차이는 모모에게 입과 볼터치가 없다는 점이었고 조명도 밋밋했어요. 먼저 역광 림라이트와 정면 보조광을 넣고, 안개와 배경 반짝이를 더했어요.

조명을 다시 짠 장면. 모모 뒤로 나무와 덤불이 늘어서 있고, 왼쪽에 빨간 풍선, 공중에 작은 반짝이가 떠 있다. 빨간 동그라미로 풍선, 노란 화살표로 반짝이 표시

그다음 얼굴을 재질에서 그리려다 모모가 회색이 됐어요.

재질 컴파일이 실패해 기본 회색 재질로 바뀐 모모의 옆모습. 회색이 된 머리에 화살표 메모

변형 전 좌표를 읽는 노드는 버텍스 셰이더에서만 쓸 수 있는데 픽셀 쪽에서 바로 읽어서 컴파일이 실패했고, 오류 메시지 없이 회색으로 바뀌었어요. 중간 전달 노드를 끼워 고쳤어요. 나중에 한 번 더 회색이 됐는데, 그땐 셰이더 컴파일이 끝나기 전에 렌더가 시작돼서였어요.

옆걸음과 얼굴

얼굴 위치를 잡으려고 뼈대를 열어 보니 모델의 앞쪽이 제가 생각한 방향과 90도 어긋나 있었어요. 모모는 5초 내내 게걸음을 하고 있었던 거예요. 곰이 좌우 대칭이라 티가 덜 났어요.

왼쪽은 카메라에 옆모습만 보이는 모모, 오른쪽은 카메라 쪽 대각선으로 걸어오며 양쪽 눈이 보이는 모모. 전과 후에 메모

몸만 비틀면 옆걸음이 되니, 걷는 길 자체를 카메라 쪽 대각선으로 돌리고 산책로도 같이 돌렸어요. 이제 다가오면서 커지고 두 눈이 다 보여요.

얼굴 확대 비교. 왼쪽은 입 자국이 턱에 찍힌 상태, 오른쪽은 코 밑으로 옮긴 입과 옅은 볼터치가 들어간 상태. 빨간 동그라미로 입 자리, 파란 동그라미로 볼터치 표시

입은 처음에 턱에 찍혔어요. 기준으로 삼은 머리 뼈가 목 쪽에 있었거든요. 위로 옮기고 볼터치를 넣었어요. 오른쪽 그림의 빨간 동그라미가 입, 파란 동그라미가 볼터치예요. 솔직히 오른쪽도 입이라기보다 코 끝 얼룩에 가깝고, 볼터치는 확대해야 보일 만큼 옅어요. 원래 후보 이미지의 웃는 입과는 거리가 있어요.

목표를 장난감 차고로

모모 샷을 끝내고, 장난감 차고 플레이셋 이미지를 기준으로 다시 5초를 만들어 보기로 했어요. 처음엔 차량 모델이 없어서 기본 도형으로 조립했어요.

기본 도형 차고 비교. 왼쪽은 아치가 색 판과 떠 있는 고리로 보이고 차가 너무 가깝게 잡힌 화면, 오른쪽은 크림색 벽에 다섯 색 아치가 깔끔하게 들어간 화면. 떠 있는 고리에 빨간 동그라미

상자로는 구멍을 뚫을 수 없어서 아치가 판때기와 떠 있는 고리처럼 보였어요. 큰 색 원판 앞에 조금 작은 크림색 원판을 겹쳐서 깨끗한 고리를 만들었어요. 그다음 3D 생성으로 차량 다섯 대와 호박, 울타리, 집 같은 소품을 뽑아 넣었어요.

생성 차량과 소품을 넣은 차고. 크레인차, 소방차, 스쿨버스, 탱크로리, 오토바이 앞에 호박과 콘이 놓여 있다. 탱크로리를 파란 동그라미로 표시

차가 들어오니 확 장난감 같아졌어요. 이번엔 텍스처와 노멀이 다 들어 있었는데, 탱크로리만 앞 방향 축이 달라서 차량별 회전값을 따로 줬어요. 그런데 소품 수가 늘자 첫 프레임이 이렇게 나왔어요.

첫 프레임에서 차들과 지붕이 유리 조각처럼 깨져 보이는 렌더. 깨진 차들을 빨간 동그라미로 표시

지붕과 차가 산산조각 난 것처럼 보였어요. 원인은 Nanite 스트리밍이었어요. 4만 삼각형 정도인 생성 모델에는 이득이 없어서 꺼 버렸어요.

미끄럼틀에서 멈춤

마지막으로 참고 이미지 폴더를 보고 높은 단에서 다섯 색 미끄럼틀이 내려오는 맵을 만들었어요. 회전값 실수로 미끄럼틀이 눕지 않고 지느러미처럼 섰어요.

다섯 색 미끄럼틀이 경사면으로 눕지 않고 지느러미처럼 세로로 서 있는 장면. 서 있는 미끄럼틀에 화살표 메모

미끄럼틀을 눕혀 다섯 대가 각자 레인을 타고 내려오는 장면. 레인 발판 이음새가 계단처럼 보인다. 번호 1·2·3으로 이음새, 셔터, 검은 띠 표시

눕히고 나니 다섯 대가 자기 레인을 탔어요. 다만 발판 이음새가 계단처럼 보였고, 셔터가 화면 안에 걸려 있고, 수평선에 검은 띠가 있었어요. 그림의 1·2·3번이 그 세 곳이에요. 이걸 고치던 중에 작업 한도에 걸려 파일럿은 여기서 멈췄어요.

해 보니

좋았던 점은 모든 단계가 스크립트라서 몇 번이고 처음부터 다시 만들 수 있었다는 거예요. 색이 이상하면 몇 장만 뽑아 숫자로 비교하고, 고치면 전체를 다시 돌렸어요.

아쉬운 점은 언리얼이 틀린 걸 조용히 넘긴다는 거예요. 저장 안 되는 월드, 무시되는 키, 회색으로 대체되는 재질 모두 오류 메시지가 없었어요. 결과 화면을 직접 보지 않으면 못 잡았어요. 모모 자체도 아직 장난감 인형 느낌이 강하고 표정이 거의 없어요. 걷는 속도를 추정값으로 줘서 발이 살짝 미끄러지는 것도 남아 있어요.

지금 상태

  • 5초 첫 샷은 이틀째에 1920×1080, 30fps로 나왔어요. 장난감 차고 5초도 만들었어요.
  • 60초 8샷, 풍선 잡기, 토끼 토토 등장은 만들지 않았어요.
  • 이 파일럿의 언리얼 프로젝트와 렌더 파일은 지금 디스크에 없어요. 글의 화면은 작업 중에 확인용으로 열어 본 렌더를 옮긴 거예요.

이후 같은 폴더에서 자동차 다섯 대 시리즈를 블렌더로 새로 만들었어요. 2편에 있어요.

공유X에 공유

이어 읽기

댓글 0

가입 없이 써요. 비밀번호는 고치거나 지울 때 써요 · 댓글 규칙

아직 댓글이 없어요. 첫 이야기를 남겨 주세요.