Build a 20-second 1080x1350 30fps cinematic in Python (numpy + opencv + PIL), no 3D software, CPU only. Story: the moon falls toward Earth, a steel rocket launches on an intercept, hits it, and the moon is pushed back into orbit. End frame matches the first so it loops. 1. Get the free NASA-based earth (day, night lights, clouds, specular) and moon textures from the three.js repo on GitHub. 2. Write a ray-tracer for two spheres: per-pixel ray-sphere hits, equirect texture lookup, one sun light. Earth: day/night blend with city lights on the dark side, clouds, ocean glint, blue rim plus a thin atmosphere halo. Moon: soft lunar shading with a little earthshine. 3. Stars: 9k points + a faint milky-way band, motion streaks when the camera moves fast. Scale star density with the field of view. 4. Shots: wide approach (0-3s), tracking shot behind the moon (3-6s), telephoto from low orbit with the moon over Earth's limb (6-9s), rocket launch with a glowing plume (9-11s), nose-cam rush into the moon (11-12.4s), impact (12.4s), moon recedes (12.4-17.6s), back to the opening wide shot. 5. Impact: white flash, 3-frame color inversion, camera shake, glowing crater with fissures that cool down, a shockwave ring across the surface, 3,000+ debris particles with streaks that cool from white to orange to grey. 6. HUD in a mono font: lunar distance in km (starts at 384,400), closing speed, countdown, small "render · schematic" tag. 7. Post: bloom, filmic tonemap, vignette, light grain, chromatic aberration only on the impact. 8. Sound with numpy, no melody: rumble that rises toward impact, soft clicks on 8th notes that speed up, low thumps on every cut, rocket roar, a huge low boom, half a second of near-silence, then airy breathing noise that ramps back into the opening. Low-pass at 7 kHz, -14 LUFS, true peak under -1 dB. 9. Render stills at key moments first and fix framing before the full render. Encode H.264 + AAC, faststart.
Comments
Loading…