3줄 요약
- 일본어로 활동하는 AI 영상 크리에이터 aidoga_lab(AI動画ラボ)이 10월 30일 X에 8.5초짜리 작품을 올리고 제작 방법을 일곱 편짜리 스레드로 설명했다. 생성 영상 AI Seedance 2.0이 만든 5초짜리 애니메이션 컷에, Python 코드로 그린 SF풍 화면 표시(FUI)를 프레임마다 합성한 영상이다.
- 합성 요령은 세 가지다. 몸을 감는 고리는 등 뒤로 지나가는 절반이 인물에 가려지도록 그리고, 흐림은 실제 카메라처럼 얼굴에 초점을 맞춘 채 카메라에 가까운 요소일수록 강하게 주며, 고글 표시는 렌즈 곡면을 따라 한 글자씩 배치한다. 가장 어려웠던 작업은 고글 테두리에 표시를 맞추는 일이었고, 얼굴 위치 대신 렌즈 자체를 매 프레임 추적하자 표시의 흔들림이 사라졌다.
- 작가는 「저장용」으로 분담 기준을 정리했다. 매번 달라져도 되는 인물의 연기와 머리카락의 흔들림, 표정은 생성 AI가 만들고, 한 프레임도 바뀌면 안 되는 글자와 숫자, 선 굵기, 등장 순서, 색은 코드가 그린다. 작가는 17일 전 코드만으로 만든 SF UI 기동 화면을 올린 스레드의 댓글에서 「애니메이션에 이런 UI를 합성하고 싶다」고 했고, 이번 작품으로 그 계획을 실현했다.
어떤 작품인가
완성본 8.5초, 소리 있음. 원본은 X 스레드 첫 글에 있다.
FUI는 SF 영화나 애니메이션 속 기계 화면, 조종석 계기판, 헬멧 안쪽 표시처럼 극중 세계에만 존재하는 인터페이스를 말한다.1 스레드 첫 글은 이 작품을 “생성 영상 AI로 만든 애니메이션에 입체 FUI를 나중에 합성했다”고 소개했고, 특징을 두 가지로 요약했다. 고리는 몸 뒤쪽으로 돌아 들어가고, 표시는 고글의 곡면을 따라 놓인다. 기계 표시는 전부 코드로 그렸다.
영상 속 인물은 빨간 작업복을 입고 투명 고글을 머리에 걸친 소녀다. 옆모습으로 걷다가 정면을 향하고, 카메라가 얼굴로 다가가는 동안 고글을 눈 위로 내려쓴다. 그 사이 코드로 그린 표시가 차례로 나타난다. 몸 둘레에서는 목, 가슴, 허리를 감는 고리가 돌며 「NECK R 0.46m」 같은 반지름 라벨을 달고, 고글이 내려오면 두 눈에 빨간 조준선이 생긴다. 마지막 장면에서는 좌우 패널에 「RED STREAK」, 「PENDANT」, 「EAR TAG」 같은 항목이 수치와 함께 뜨고, 아래쪽 막대에 「FANG-07 // ONLINE」이 표시된다. 패널의 항목 이름은 인물의 실제 모습과 대응한다. 인물의 앞머리에는 붉은 브리지 염색이 있고, 목에는 펜던트를, 귀에는 태그가 달린 귀걸이를 하고 있다. 표시 전체가 이 캐릭터의 몸과 장비를 점검하는 화면처럼 꾸며져 있다.
작가는 프로필에서 AI로 영상, 웹, 음악, 캐릭터를 만든다고 소개한다. 영상은 코드만으로 만들기도 하고, 코드로 만든 그래픽과 생성 영상 AI를 섞는 실험도 한다고 적었다. 포트폴리오 사이트에는 이 작품이 「FANG-07|立体FUI(입체 FUI)」라는 제목의 모션 그래픽으로 등록돼 있다.2
합성 전과 후
위는 Seedance가 생성한 그대로의 애니메이션, 아래는 코드로 그린 FUI를 합성해 마무리한 완성본이다.
작가는 스레드의 두 번째 글에 이 비교 영상을 붙였다. Seedance가 만든 원본은 약 5초뿐이라, 모자란 길이는 마지막 프레임을 정지시켜 이어 붙였다. 그래서 완성본의 마지막 3초 남짓 동안 인물은 멈춰 있고, 그 정지 화면 위에서 고글 표시와 좌우 패널이 하나씩 켜진다. 원본의 따뜻한 크림색 배경이 완성본에서는 차가운 회백색으로 바뀌었는데, 아래 도구 표의 색 보정 단계에서 바뀐 것으로 짐작된다.
사용한 도구
세 번째 글에서 작가가 밝힌 도구 가운데 애니메이션에 쓴 것은 Seedance 하나뿐이고, 나머지는 모두 FUI 제작과 합성, 마무리에 썼다.
| 단계 | 도구 | 하는 일 |
|---|---|---|
| 애니메이션 | Seedance 2.0 | 5초짜리 한 컷. 걷기, 카메라가 얼굴로 다가감, 고글을 내림 |
| 표시 그리기 | Python (OpenCV, NumPy, Pillow) | 모든 프레임의 FUI를 코드로 그림 |
| 인물 오려 내기 | rembg | 프레임마다 인물만 따로 떼어 냄 |
| 렌즈 추적 | OpenCV | 고글 렌즈의 위치를 프레임마다 계산 |
| 촬영 처리와 색 보정 | Python | 흐림 같은 카메라 효과와 색감 조정 |
| 소리 | 코드 | 효과음 소재를 재생 시점에 맞춰 배치 |
| 출력 | ffmpeg | 최종 영상으로 인코딩 |
Seedance 2.0은 바이트댄스의 영상 생성 모델이고, rembg는 사진에서 배경을 지우고 인물이나 사물만 남기는 오픈소스 Python 라이브러리다. 촬영 처리(撮影処理)는 일본 애니메이션 제작의 용어로, 그려 둔 그림과 배경을 합치고 흐림이나 빛 번짐 같은 카메라 효과를 더하는 공정을 가리킨다.
스레드는 이 구성을 영어 한 줄로도 요약했다. “Anime: AI video generation. FUI: 100% code (Python + OpenCV), composited frame by frame.” 생성 AI가 만든 것은 인물의 애니메이션 한 컷이고, 그 위의 그래픽은 모두 코드가 프레임 단위로 그려 합성했다.
합성에서 공들인 세 가지
네 번째 글에는 합성 과정에서 공들인 요령 세 가지가 있다.
① 고리의 뒤쪽 절반은 인물 뒤에 숨긴다. 인물을 매 프레임 오려 내고, 고리 가운데 몸 뒤로 지나가는 부분은 오려 낸 인물 영역에 그리지 않는다. 작가는 “이것만으로 몸 둘레를 돌고 있는 것처럼 보인다”고 썼다. 이 가림 처리 덕분에 평면 영상 위에 그린 고리가 입체로 인식된다.
② 흐림은 실제 카메라와 같은 원리로 준다. 초점은 얼굴에 맞춘다. 카메라에 가까운 요소일수록 크고 둥글게 흐려지고, 화면 전체를 흐리게 만들지는 않는다.

고리의 가림과 앞쪽 흐림.
③ 고글 표시는 「렌즈에 붙인다」. 표시를 고글 곡면을 따라 한 글자씩 배치하고, 렌즈에 비친 하얀 반사광 아래에서는 표시를 옅게 만든다. 화면 위에 평평하게 띄운 그래픽이 렌즈 표면에 인쇄된 표시처럼 보이게 하는 처리다.
가장 어려웠던 부분
다섯 번째 글에 작가가 적은 어려움 두 가지는 모두 고글에서 생겼다.
첫째는 고글 테두리에 표시를 맞추는 일로, 작가가 “가장 힘들었다”고 꼽은 작업이다. 처음에는 얼굴 위치를 손으로 지정하는 방식을 썼는데, 인물이 멈춰 있는 장면에서도 표시가 몇 픽셀씩 흔들려 고글 테두리 밖으로 삐져나왔다. 얼굴 대신 렌즈 자체를 영상에서 매 프레임 추적하는 방식으로 바꾸자 표시가 렌즈에 고정됐다.
둘째는 테두리를 처리하는 방식이었다. 렌즈 테두리를 선으로 따라 그리면 그 선이 고글 프레임의 장식처럼 보였다. 테두리는 그리지 않고 여백을 둔 채 짧은 부품을 배치하자 표시가 렌즈와 자연스럽게 어우러졌다.

고글 확대. 위는 원본, 아래는 완성본.
댓글에서도 고글 이야기가 나왔다. 한 사용자가 “고글에 비치는 게 좋다”고 하자 작가는 “안경에 합성하는 게 정말 엄청나게 힘들었다”고 답했다.
AI와 코드의 분담
여섯 번째 글에 작가는 「저장용」이라는 표시를 달아 분담 기준을 정리했다.
| AI에 맡기는 부분 | 코드로 그리는 부분 | |
|---|---|---|
| 기준 | 매번 달라져도 되는 것 | 한 프레임도 바뀌면 안 되는 것 |
| 예 | 인물의 연기, 머리카락의 흔들림, 표정 | 글자, 숫자, 선 굵기, 등장 순서, 색 |
작가는 이유도 함께 적었다. 모든 것을 생성 AI로 만들려고 하면 화면에 표시된 글자와 선이 프레임마다 일그러진다. 「일그러져도 되는 부분」과 「일그러지면 곤란한 부분」을 구분하자 합성에 드는 수고가 크게 줄었다고 한다. 예를 들어 머리카락 끝이 프레임마다 몇 픽셀씩 다르게 그려져도 보는 사람은 바람에 날린다고 받아들인다. 반면 「RED STREAK」 같은 라벨의 글자 획이 프레임마다 바뀌면 화면이 고장 난 것처럼 보인다.
17일 전에 만든 SF UI 기동 화면
이번 스레드의 첫 글은 작가가 10월 13일에 올린 다른 스레드를 인용한다. 코드만으로 만든 SF UI 기동 화면이고, 일부러 소리를 넣지 않았다. 21초 동안 GATE-01, SCOPE-02, LADDER-03, ROUTE-04라는 화면 네 개가 차례로 켜진다. 작가는 30판을 다시 만들면서 「기분 좋은 움직임을 만드는 법」을 알게 됐다며, 그 내용을 이 스레드에 정리했다.
위는 첫 판인 v001, 아래는 서른 번째 판이자 완성판인 v030이다. 같은 기동 화면의 처음과 마지막 판을 함께 재생한다.
비교 영상에서 첫 판은 빛나는 굵은 하늘색 선과 큰 도형 위주다. 30번째 판은 선이 가늘어졌고, 작은 라벨과 눈금, 점 무늬가 촘촘하게 늘었다. 작가는 “납득할 때까지 고치다 보니 30번째 판까지 만들게 됐다”고 썼다.
작가는 이어지는 두 편의 글에 움직임에 관한 교훈 여섯 가지를 적었다.
| 항목 | 작가의 정리 |
|---|---|
| 선의 감속 | 선은 이즈 인으로 출발해 강한 이즈 아웃(Expo Out)으로 멈춘다. 멈추기 직전까지 감속시키면 또렷하게 멈춘다 |
| 등장 순서 | 부품마다 등장 시점을 다르게 주는 스태거를 중앙부터 차례로 적용하지 않는다. 부품이 무작위 순서로 등장하게 하면 스위치를 켠 느낌이 난다 |
| 주인공 도형 | 단, 주인공 도형만은 중앙부터 순서대로 빠르게 조립한다 |
| 완료 신호 | 작은 오버슈트면 충분하다. 도형이 목표 지점을 지나쳤다가 되돌아오며 1픽셀만 더 간 뒤 멈추는 「딸깍」 정도면 된다 |
| 흔들림 | 화면 전체의 드리프트(미세한 흔들림)는 넣지 않는다. 화면 전체가 흔들리면 부품 하나하나의 움직임이 또렷하게 보이지 않는다 |
| 화면 전환 | 모든 부품이 다 나온 뒤 잠시 정지했다가 다음 화면으로 전환한다 |
이즈 인과 이즈 아웃은 움직임의 처음과 끝에서 속도를 서서히 올리고 내리는 처리다. Expo Out은 지수 곡선으로 감속하는 방식이라, 처음에는 빠르게 이동하다가 끝에 가까울수록 급격히 느려진다.
이 스레드의 댓글에서 작가는 다음 계획을 밝혔다. 영화와 애니메이션에 나오는 SF 모니터 UI를 떠올리며 만들었고, “AI로 생성한 영상의 한 장면에 이 UI를 넣을 수 없을까 해서 만들었지만, 아직 합성의 기술적인 부분은 해결하지 못했다”고 썼다. 다른 댓글에서는 “애니메이션에 이번에 만든 것 같은 UI를 합성하고 싶다”며 추천할 생성 영상 모델을 물었고, 비용 부담도 있어 코드로 영상을 만드는 비중을 늘려 왔다고 했다. 17일 뒤에 올라온 이번 작품에서 작가는 그 합성을 실제로 해냈다.
가장 흥미로운 지점
「저장용」 분담표는 AI의 실력을 따지지 않는다. 작가가 묻는 질문은 「그 요소가 프레임마다 달라져도 되는가」 하나뿐이다. 따라서 생성 모델이 글자를 더 잘 그리게 되더라도 이 질문은 유효하다. 작가가 등장 순서와 색까지 코드로 정하게 한 것도 같은 이유로 이해된다. 글자가 정확하더라도 표시가 켜지는 순서나 빨강의 색조가 컷마다 달라지면 하나의 기계 화면으로 인식되지 않는다.
두 스레드를 이어 읽으면 작가가 공을 들인 대상이 달라진 것도 드러난다. 작가는 10월 13일의 기동 화면을 30판까지 고쳐 만들면서 감속 곡선과 등장 순서, 1픽셀 오버슈트처럼 시간에 관한 정확성을 다듬었다. 이번 스레드는 공간에 관한 정확성을 다룬다. 표시가 몸 뒤로 돌아 들어가고, 렌즈 곡면을 따라 놓이고, 초점 거리에 따라 흐려지는 처리다.
출처
aidoga_lab(AI動画ラボ), X 스레드, 2026년 10월 30일. 원문: https://x.com/aidoga_lab/status/2116008972499227094
인용된 스레드: aidoga_lab, 「SFのUIが起動する画面を、コードだけで作りました」, 2026년 10월 13일. https://x.com/aidoga_lab/status/2109927088954474930
작가 포트폴리오: https://aidoga-lab.pages.dev/
본문의 영상과 정지 화면은 모두 두 스레드에 첨부된 영상에서 가져왔다. 스레드 글과 댓글은 일본어 원문을 한국어로 옮겼다.
