모션그래픽2026-11-09

빛 알갱이 32만 개로 만든 15초 «우와» 영상 — 한 점에서 빅뱅, 은하, 웜홀을 지나 로고까지

«지금 만들 수 있는 가장 볼거리 있는 15초 영상»이라는 요청 하나로, 그래픽 카드가 알갱이 32만 개의 자리를 매 순간 계산하는 우주 쇼케이스를 만든 기록입니다.

three.jsGLSL 셰이더파이썬 소리 합성헤드리스 크롬ffmpeg

이 글을 세 줄로

이 글에 나오는 말

처음 요청

너가 지금 만들 수 있는 영상 중에 우와 감탄사가 나올 정도의 가장 볼꺼리가 대단한 15초짜리 영상을 만들어볼 수 있을까?

주제도, 색도, 길이 말고는 아무 조건이 없는 요청이었습니다. Claude Code는 먼저 전에 만들어 둔 3D 견본(three.js로 만든 기둥 도시)의 부품을 확인한 뒤, «작은 것이 엄청나게 많이 모여 한꺼번에 움직이는 장면»이 15초 안에 가장 큰 놀라움을 준다고 보고 우주를 소재로 골랐습니다.

완성된 영상

어떻게 만들었나

1. 알갱이 32만 개의 자리를 그래픽 카드가 계산합니다

알갱이 32만 개는 처음에 각자 난수 8개와 «MAYAi 글자 속 자기 자리» 하나씩을 받습니다. 그다음부터는 셰이더가 장면마다 «지금 t초면 한 점 단계인지, 빅뱅인지, 은하인지»를 보고 단계별 자리를 계산해 부드럽게 섞습니다. 예를 들어 빅뱅 단계에서는 각 알갱이가 자기 난수로 정해진 방향으로 날아가고, 은하 단계에서는 팔 셋 중 하나에 들어가 안쪽일수록 빠르게 돕니다.

// 빅뱅: 자기 방향(dir)으로 터져 나가며, 껍질에 줄무늬가 생기게
vec3 pB = dir * (1. - exp(-tb * 4.)) * (6. + 50. * pow(aR.w, 1.4));
float s1 = S(1.2, 1.32, t);   // 1.2~1.32초 사이에 앞 단계(한 점)에서 빅뱅으로 넘어감
P = mix(P, pB, s1);

이렇게 «t만 보고 계산»하면 몇 번을 다시 찍어도 같은 화면이 나오고, 미리보기와 완성본의 움직임도 똑같습니다.

2. 카메라와 마무리 효과가 속도감을 냅니다

카메라는 다섯 구간(한 점 앞 → 은하를 돌며 위로 → 빛의 바다 위를 낮게 → 웜홀 안 → 글자 앞)으로 나눠 길을 정했고, 구간이 바뀔 때는 겹쳐서 부드럽게 넘어가게 했습니다. 빅뱅 · 다이브 · 웜홀 · 마지막 폭발처럼 빠른 순간에는 화면 가운데로 28번 겹쳐 그리는 «확대 흐림»과 빨강 · 파랑이 살짝 어긋나는 색 갈라짐을 더해서 속도감을 냈습니다.

3. 소리도 장면 시각에 맞춰 코드로 만들었습니다

시간화면소리
0~1.25초한 점이 숨 쉬듯 커지고 가로 빛줄기점점 높아지는 상승음
1.25초빅뱅 섬광낮은 «쿵» + 폭발 효과음
1.3~5초은하가 돔천천히 부푸는 화음 + 반짝임
5~9.4초빛의 바다로 다이브«휙» + 128BPM 킥 · 베이스 · 하이햇
9.4~11.9초웜홀하이햇이 두 배로 잘게 + 상승음
11.9~12.5초한 점으로 빨려 듦거꾸로 튼 폭발음 → 0.1초 정적
12.6~15초MAYAi 글자 + 빛 훑기«쾅» + 밝은 화음

고쳐 간 과정

미리보기를 보내기 전에 Claude Code가 낱장을 모아 찍어 보면서 고친 것들입니다.

문제원인고친 방법
화면을 찍는 브라우저가 안 열림찍을 때 쓰던 Edge가 마침 업데이트 중이었음크롬으로 바꿈
은하 · 웜홀이 하얗게 타서 모양이 안 보임가산 혼합이라 알갱이 32만 개가 겹치는 곳이 모두 하얗게 됨단계마다 알갱이 밝기를 따로 정함(한 점 · 빨려 드는 순간은 아주 어둡게), 색 보정(ACES)을 더함
웜홀 빛줄기가 점선처럼 끊김확대 흐림을 몇 번만 겹쳐 그려 간격이 보임28번 겹쳐 그리고 겹칠 자리를 조금씩 흔들어 매끄럽게
2~3.5초가 심심함빅뱅 뒤 은하가 자리 잡는 동안 색이 단조롭고 느림빅뱅 알갱이를 주황 → 파랑으로 물들이고, 터지는 동안 알갱이를 크게, 은하가 더 빨리 돌게

미리보기를 본 뒤에는 고칠 점 없이 그대로 완성본(2560×1440, 60프레임)을 만들었습니다.

숫자로 자세히 보기

걸린 시간과 작업량
항목값
요청2026-11-09 00:40
미리보기01:04 (요청 후 24분)
도구 호출33번 (명령 실행 21 · 파일 읽기 8 · 파일 쓰기 3 · 고치기 1)
만든 파일index.html(167줄) · sound.py(89줄) · render.js
알갱이320,000개
미리보기 렌더960×540 · 30프레임 · 약 39초
완성본 렌더2560×1440 · 60프레임 · 15초 · 약 12분
만든 곳이 PC (크롬 + 그래픽 카드 RX 580)

따라 해 보기

three.js 로 빛 알갱이 수십만 개가 [한 점 → 폭발 → 은하 → … → 로고 글자] 순서로
쉬지 않고 모양을 바꾸는 15초 영상을 만들어 줘.
- 알갱이 자리는 셰이더가 시간 t 만 보고 계산하게 (다시 찍어도 같은 화면)
- 빠른 순간에만 확대 흐림 · 빛 번짐을 세게
- 소리는 장면 시각에 맞춰 상승음 · 폭발음 · 비트를 합성
- 960×540 미리보기를 먼저 보여 줘

알갱이가 많을수록 겹치는 곳이 하얗게 타기 쉽기 때문에, 미리보기를 받으면 «어느 초에서 모양이 안 보이는지»를 짚어 주는 것이 가장 빨리 고치는 방법입니다.

← 제작 기록 전체 보기