尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
A concrete halo restaurant above a sea of clouds — real-time Three.js world + a 45 s cinematic drone film rendered frame by frame from it. 구름바다 위 링 레스토랑, 실시간 3D와 드론 필름
翻译准备中
正在加载完整 README。
查看完整 README ↗구름바다 위에 떠 있는 콘크리트 링 레스토랑 — 실시간 Three.js 월드와, 그 안을 드론처럼 날며 렌더링한 45초 시네마틱 필름
A concrete halo restaurant above a sea of clouds · real-time Three.js world + a 45 s drone film rendered from it
yo claude make a cinematic 3d render video in that world. some shots should be pretty wide some close up and overall make it pretty creative. fly around like with a drone and render that video. ~45s is enough
Threads에서 본 @aicoffeechat의 글(“three.js로 Opus 5.5가 만든 세상”)의 프롬프트를 그대로 받아, 구름바다 위 링 레스토랑이라는 콘셉트만 참고해 장면·셰이더·카메라·사운드를 전부 새로 만들었습니다. 외부 3D 모델이나 텍스처, 음원 파일은 하나도 쓰지 않았고 모든 것이 코드로 생성됩니다.
| # | 샷 | 시간 | 카메라 |
|---|---|---|---|
| 01 | ESTABLISHING | 0:00 | 망원 30mm 느낌의 초광각 설정샷. 노을 띠 앞에 작은 헤일로, 타이틀 |
| 02 | CLOUD SKIM | 0:06 | 구름 꼭대기 4 m 위를 시속 118 km로 스치는 FPV, 뱅크 후 링을 향해 상승 |
| 03 | THE HALO | 0:12 | 링 주위를 반 바퀴 도는 오빗 |
| 04 | DINING ROOM | 0:17 | 유리 파사드를 따라 미끄러지는 클로즈업 돌리 — 촛불, 펜던트, 손님 |
| 05 | HALO DROP | 0:23 | 정수리 위 탑다운에서 회전하며 링 구멍을 통과해 구름 속으로 낙하 → 화이트아웃 |
| 06 | UNDERSIDE | 0:28 | 화이트아웃이 걷히며 링 아래에서 올려다보는 로우 앵글 |
| 07 | LAST CABIN | 0:33 | 구름 위를 건너오는 케이블카와 나란히 비행 |
| 08 | FAREWELL | 0:38 | 테라스에서 풍등과 함께 시작해 하늘로 빠지는 롱 풀백, 엔드 카드 |
scripts/soundtrack.mjs)https://jeiel85.github.io/nimbus-ring/
Space로 일시정지?q=low / ?q=high로 품질 강제 (모바일은 자동으로 low)npm install
npm run serve
http://localhost:5180에서 실시간 월드를 볼 수 있습니다.
npm run render
헤드리스 Chrome으로 페이지를 띄워 필름 시계를 1/30초씩 옮기며 캡처하고, ffmpeg로 인코딩한 뒤 사운드트랙을 합쳐 media/nimbus-ring.mp4를 만듭니다. Chrome과 ffmpeg가 필요하며, Chrome 경로가 다르면 CHROME_PATH로 지정합니다. Radeon 780M 내장 GPU에서 1350프레임이 약 9분 걸렸습니다.
npm run stills
샷마다 스틸 한 장씩 out/stills/에 저장합니다. 옵션: --fps 24, --width 1280 --height 720, --out out/draft.mp4, --stills 3,9.5,20, --duration 2.
렌더러는 필름 그레인 덕분에 매 프레임이 달라야 한다는 점을 이용해, 직전과 똑같은 스크린샷이 나오면(검게 페이드되거나 하얗게 날아간 전환 구간 제외) 다시 찍고 4번 연속이면 인코딩을 멈춥니다.
npm run bench
품질 단계(high / low)별로 샷마다 프레임당 GPU 시간을 잽니다. 셰이더나 지오메트리 예산을 바꾼 뒤 성능이 떨어졌는지 확인할 때 씁니다. Radeon 780M 기준: high 1600×900 최악 26 ms, low 1600×900 14 ms, low 412×915 6 ms.
three.js는 CDN 없이 vendor/three/에 필요한 파일만 들어 있습니다. three 버전을 올렸다면 npm run vendor로 다시 복사하세요.
index.html 페이지, 오버레이(타이틀·캡션), 컨트롤 UI
src/main.js 렌더러, FILM / EXPLORE / 캡처 모드
src/world.js 하늘·구름·암봉·헤일로·케이블카·풍등·눈·안개
src/terrain.js 암봉과 원경 산맥 높이 함수
src/shaders.js GLSL (하늘, 구름, 안개, 눈, 필름 그레이드)
src/shots.js 8개 샷의 카메라 경로·렌즈·흔들림·전환
src/post.js 블룸 → 톤매핑 → 그레이드 컴포저
scripts/render.mjs 프레임 캡처 → ffmpeg → 오디오 먹싱
scripts/soundtrack.mjs 절차적 사운드트랙(WAV)
scripts/bench.mjs 품질 단계별 프레임 시간 측정
scripts/vendor.mjs 사용하는 three.js 파일만 vendor/three/로 복사
vendor/three/ three.js r170 (MIT, 13개 애드온)
WebGL 2를 쓸 수 없거나 GPU가 컨텍스트를 회수하면, 빈 화면 대신 렌더 영상 링크가 있는 안내 화면이 뜹니다. 실시간 장면은 GPU 속도에 맞춰 해상도를 내리고, 여유가 생기면 다시 올립니다.