Skip to content
Docs
Open Promoeyes
Rainy Night Windowsill

Rainy Night Windowsill

A phone leans on a wet windowsill at night: its screen is the brightest thing in the room, a candle the only other light, and rain beads melt the city into bokeh.

A dark room at night with a wet painted windowsill, a window of rain beads that refract the city lights into round discs, and a single candle giving a small warm pool against cool night light. One slow, intimate 13 s take in four beats: a macro on the beads drifting down, a travel and hold, a pull out and round to the whole sill and window, then a slow drift down toward the candle.

Length
13 s
Scenes
1
Device
iphone
Style
realistic place
Camera
push in, rack focus, ultra closeup

The AI keeps this film's shots, timing and camera, and puts your app in it.

//
    REALISM RAIN — "Rainy night windowsill" (see SCENE.md)

    The low-key member of the realism series: a phone leaning on a wet painted windowsill at
    night, its screen the brightest thing in the room, a candle the only other practical, rain
    beads on the glass refracting a city that the lens melts into round discs. Props: TRELLIS
    from FLUX (models/, models.json); the beads, the puddles, the flame, the window and the
    city are primitives so the water can be real transmission and the lights real emitters.

    SET  sill top y = 900, z −260…+40 (wall face z = 0, a 260 mm reveal); window opening
         x −680…680, y 900…2300; frame front face z = −222, the glass plane z = −250 (no pane
         modelled, see the note above the beads); the city 8–40 m out along −z.
    Y    props y = 900 + scale × |minY| (models/*.json).
    SCREEN  Pluvia, a fictional minute-by-minute rain app (realism-rain.screens.html →
         scripts/html-screens.mts): "Rain stops in 18 min" turns to "Dry from 21:55" and a
         dry-spell card arrives while the camera holds on the phone.
    LIGHT  no sun, no fog: studio_small_04_2k at 0.05 for lighting only (rule C62, night),
         the screen (+ an area light at its glass), the candle (a flickering point), a faint
         cool spill through the window, hemisphere 0.025.

    Authored look is the series' common case: no tone curve (sRGB only), SSAA 4. Everything
    else is a render-time switch on the URL (gpu/realism, gpu/pathtrace).
    Preview: http://localhost:4444/runtime?project=projects/templates/realism-rain/realism-rain.promo
promo#realism-rain(width=1920 height=1080 fps=30)

  scene#sill(duration=13 transition=none)
    renderer(tone_mapping=None exposure=1 shadow_map=true shadow_map_type=pcf-soft)
    // fov 30 for the two close beats, 36 for the wide. Four beats, focus on the look-at:
    //   0–3.2 s   macro on the rain beads above the phone, ~143 mm off the glass; a slow drift down
    //   3.2–4.6   travel to the phone, ~344 mm off its glass along its normal; hold to 7.0
    //             (the forecast turns at 5.2, the dry-spell card lands at 5.8)
    //   7.0–9.8   pull out and round to the right: the whole sill, the window, the city discs
    //   9.8–13    a slow drift down and left toward the candle
    camera(dof_pass=three type=perspective fov=30 near=8 far=90000 position="46 1160 -108" look_at="24 1146 -251" dof_range=45 dof_blur=44)
      properties
        frame(smooth=0.3)
          keyframes
            kf(time=0 position="46 1160 -108" look_at="24 1146 -251" fov=30 dof_range=45 dof_blur=44)
            kf(time=3.2 position="30 1132 -112" look_at="10 1122 -251" fov=30 dof_range=45 dof_blur=44 easing=easeInOutSine)
            kf(time=4.6 position="-60 1067 128" look_at="-90 978 -233" fov=30 dof_range=140 dof_blur=34 easing=easeInOutCubic)
            kf(time=7 position="-62 1063 120" look_at="-90 978 -233" fov=30 dof_range=140 dof_blur=34 easing=easeInOutSine)
            kf(time=9.8 position="300 1330 920" look_at="-10 962 -150" fov=34 dof_range=700 dof_blur=28 easing=easeInOutCubic)
            kf(time=13 position="-210 1045 600" look_at="-215 978 -150" fov=34 dof_range=420 dof_blur=34 easing=easeInOutSine)
    postprocessing
      step(name=render)
      // a lower threshold than a day set: the flame and the city points are what should bloom
      step(name=unreal_bloom strength=0.22 radius=0.5 threshold=0.9)
      step(name=output tone_mapping=none exposure=1)
      step(name=aa method=ssaa samples=4)
    // lighting only (rule C62, night ≤ 0.25): the room is closed, the sky outside is the background colour
    environment(hdr="studio_small_04_2k" as_background=false intensity=0.05)
    background(top=#05070c bottom=#13151b)
    // No authored fog (it flattens traced frames); any depth haze is the render-time `haze` word.
    lights
      // the screen: a small cool panel just off the glass, aimed down-forward at the sill in front
      light#screen