모든 것이 코드로 만들어진 영상: After Effects나 Blender 같은 프로그램은 사용하지 않았습니다
요약
본 영상은 After Effects나 Blender 같은 기존 툴 없이 오직 수학 공식과 코드로만 제작되었습니다. 제작자는 빛의 광선 추적(path tracer)을 직접 작성하여, 실제 물리학 원리(광학 공식, 모션 블러 등)를 적용했습니다. 이 과정에서 수많은 반복 테스트와 디버깅을 거쳐 고품질의 시각 효과를 구현했습니다.
핵심 포인트
- 모든 픽셀과 오디오가 수학 공식으로 계산됨.
- 직접 작성한 path tracer로 물리 기반 렌더링 구현.
- 실제 광학 원리(파장별 굴절) 적용하여 사실성 확보.
- 수많은 반복 테스트와 디버깅을 통해 완성도 높임.
네, 이 모든 것은 코드입니다. 여기에는 After Effects, Blender 또는 Cinema 4D가 없으며, AI 이미지나 비디오 생성기도 없고, 스톡 푸티지, 모델, 음악이나 음향 효과도 없습니다. 모든 픽셀과 모든 오디오 샘플은 제가 이 작품을 위해 작성한 수학 공식으로 계산되었습니다.
제작 과정
1. 리서치. 저는 엘리트 모션 그래픽 작업의 특징을 파악하기 위해 연구 에이전트를 보냈습니다. 분석 대상은 Apple TV 글래스 로고(2026 Cannes Design Grand Prix), Igloo Inc, ManvsMachine, Tendril 및 수상 심사위원들의 노트였습니다. 주요 결론은 다음과 같습니다:
- 빛이 주인공이어야 하며, 색상은 장식이 아닌 물리학에서 나와야 합니다.
- 타이밍은 빠른 시작과 긴 여운(settles)에 더해 실제 유지 시간(holds)을 가질 때 가장 효과적입니다.
- 사운드는 영상과 함께 설계되어야 합니다.
- 루프는 항상 앞으로 나아가야 하며, 절대 되감기해서는 안 됩니다.
- 기본 이징(easing), 일정한 움직임, 그리고 광택이 도는 덩어리들은 이제 싸구려 같거나 AI가 만든 것처럼 보입니다.
2. 아이디어. 저는 하나의 오브젝트, 하나의 재질, 그리고 그 움직임을 정당화하는 메커니즘을 원했습니다. 색상을 드러내는 것이 회전하는 유리 슬래브 기둥을 선택했습니다.
3. 카메라와 스튜디오 구축. 저는 *패스 트레이서(path tracer)*를 작성했습니다. 이는 영화 스튜디오가 CG를 렌더링하는 방식처럼, 장면을 통과하는 개별 빛의 광선들이 반사되는 것을 시뮬레이션하는 프로그램입니다.
- 형태: 프리즘은 모델링된 메쉬가 아닌 수학 공식으로 설명됩니다.
- 빛: 각 광선은 하나의 파장을 가지고 있습니다. 유리는 빨간색보다 파란색을 더 많이 굴절시키며, 실제 광학 공식을 사용했습니다. 이것이 무지개 색상이 제가 그린 그라디언트가 아니라 진짜 물리학인 이유입니다.
- 카메라: 모션 블러를 위한 180° 셔터, 심도 표현을 위한 7엽 렌즈 조리개, 그리고 필름 스타일의 톤 커브, 할레이션(halation), 그레인을 시뮬레이션합니다.
- 렌더링: Chrome의 3D 엔진을 통해 M1 Max GPU에서 실행됩니다. Chrome은 눈에 보이지 않게 작동하며, Node 스크립트가 프레임별로 구동합니다. 최종 프레임 하나는 픽셀당 평균 512개의 빛 샘플을 사용하며, 약 16~20초 분량의 GPU 시간이 소요되어 총 600프레임을 만드는 데 약 3시간이 걸렸습니다.
4. 반복 작업 (Iterating). 약 13회의 테스트 프레임을 만들고 확대된 QA(Quality Assurance)로 각각을 검토했습니다:
- 버전 1: 회색 벽돌처럼 보였습니다. 이를 거의 검은색 스튜디오와 숨겨진 스트립 조명으로 수정했습니다.
- 무지개 없음 (No rainbow): 이는 물리적인 문제였습니다. 평행한 면을 가진 유리는 빛을 분산시킬 수 없으며, 이것이 창문에서 무지개가 생기지 않는 이유입니다. 그래서 각 슬래브를 실제 60° 삼각형 프리즘으로 만들었습니다.
- 여전히 무지개 없음 (Still no rainbow): 이 프리즘이 빛을 꺾는 각도(약 44°)를 계산하고 스트립 조명을 정확히 그곳에 배치했습니다.
- 상자처럼 읽힘 (Reading as boxes): 카메라 각도 테스트 그리드를 통해 프리즘들이 눈높이에서 직사각형으로 인식되는 것을 확인했으므로, 카메라를 약 17° 올렸습니다.
- 보라색 색조 (Purple cast): 제 자체 렌더러에서 두 가지 버그를 발견했습니다. 샘플러가 시간과 색상을 연결했고, 밝기 클램프(brightness clamp)가 녹색을 억제하고 있었습니다. 둘 다 수정했습니다.
- 바닥 줄무늬, 반점 및 루프 정밀도 (Floor streak, speckle and loop precision): 바닥 반사에서 노이즈가 있는 줄무늬를 수정하고, 중앙값 필터(median filter)로 색상 반점을 제거했으며, 부동 소수점 정밀도 문제를 수정하여 마지막 프레임이 첫 프레임과 정확히 일치하도록 했습니다.
- 스토리 (Story): 첫 번째 모션 컷은 동일한 두 개의 파도로 이루어져 있어 아크(arc)가 없었습니다. 이를 1막으로 재작성했는데, 스타카토(staccato) 방식으로 한 슬래브씩 진행하게 했고, 이후 2막에서는 바람을 감아 하나의 유동적인 나선형으로 방출되도록 했습니다.
5. 사운드 (Sound). 애니메이션이 사용하는 것과 동일한 타이밍 숫자로 합성했습니다. 따라서 모든 타격음이 해당 프레임에 정확히 떨어집니다.
- 각 슬래브는 높이에 따라 음높이가 다른 유리 음(struck glass bar 같은 비조화 배음, inharmonic overtones)을 울립니다.
- 두 개의 잠금장치는 악센트를 받으며, 두 번째 것은 서브 베이스가 깔린 싱잉볼 톤입니다.
- 공기의 고조(Air swells)는 빛의 움직임을 따라가며, 조용한 방의 톤 아래에 배치됩니다.
- 리버브는 제가 생성한 임펄스 응답(impulse response)에서 가져왔습니다. 세 개의 루프를 렌더링하고 가운데 것을 유지하면 오디오가 끊김 없이 반복되게 됩니다.
6. 마무리 (Finishing). ffmpeg을 사용하여 리버브 처리를 했고, -14 LUFS로 제한(limiting)했으며, H.264 인코딩을 일정한 24 Mbps로 진행했습니다.
이 코드가 수정 가능한 프로젝트입니다. 숫자를 변경하고 재렌더링하면 타이밍, 빛의 각도, 유리 분산, 빛의 색상, 슬래브 개수, 카메라 또는 사운드의 음악적 키를 바꿀 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 X AI 연구의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기