Library Nook at Blue Hour
Library Nook at Blue Hour
A cosy library nook at blue hour: a cool dusk window against a warm open fire rakes a leather chair, and the iPad on its arm shows an e-reader page.
A library nook with a creased leather club chair, shelves of old hardbacks with visible paper edges and a flickering fireplace on the back wall, warm firelight against a cool overcast window out of frame. One slow 13 s take in four beats: low and close across the chair arm, a rise and hold, a pull out and round to the wide nook, then a sink to a floor stack of hardbacks, page edges close.
- Length
- 13 s
- Scenes
- 1
- Device
- ipad
- Style
- realistic place
- Camera
- push in, dolly, rack focus
//
REALISM LIBRARY — "Library nook, blue hour" (see SCENE.md)
The third realism set: two light sources of opposite colour fighting over soft dark materials.
A cool overcast dusk window (out of frame, front-left: behind every camera) and a warm,
flickering open fire (in frame, the back wall) both rake a creased leather club chair; old
hardbacks show their paper edges; the iPad on the chair's arm is the third, neutral source.
Props: TRELLIS from FLUX (models/, models.json); the room, the fireplace, the shelf carcass and
the flames are primitives. The teapot and the log basket were cut (their meshes failed five rounds).
SET floor y 0, x right, z toward the camera. Room x −2200 … 2200, z −2000 … 2400, ceiling 2800.
Fireplace centred x 550 on the back wall (chimney breast front z −1450, surround −1390),
bookshelf x −2150 … −350 left of it, the window on the left wall at z 500 … 1600.
Y props y = surface + scale × |minY| (models/*.json); surfaces on the chair measured with a
ray-cast height map of the GLB (top of the arm, the seat).
SCREEN Inglenook, a fictional e-reader (realism-library.screens.html → scripts/html-screens.mts).
While the camera holds over the iPad a sentence is highlighted, "Saved to Notes" arrives and
the chapter bar ticks 61 → 62 %.
FIRE no fire element: emissive teardrop flames over the TRELLIS logs, a glowing ember bed, two warm
point lights; every flicker is hand-written keys with no shared period. No authored fog (the
path tracer turns the HDR dome into fog colour with it); depth haze is the `haze` word.
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-library/realism-library.promo
promo#realism-library(width=1920 height=1080 fps=30)
scene#nook(duration=13 transition=none)
renderer(tone_mapping=None exposure=1 shadow_map=true shadow_map_type=pcf-soft)
// 50 mm-ish (fov 30) for the close beats, 34 for the wide. Five beats:
// 0–2.4 s low and close across the chair's near arm from the front-left (the window side):
// creases, the iPad's edge and page, the fire soft behind; a slow drift
// 2.4–4.2 rise over the iPad to the reader's view, 520 mm off the glass; hold to 6.4
// (the highlight sweeps at 4.6, "Saved to Notes" at 5.1, the bar ticks at 5.5)
// 6.4–9.2 pull out and round to the right: the nook wide, fire, shelf, chair; drift to 9.8
// 9.8–13 sink to the floor stack of hardbacks, page edges close, the fire behind it
// Focus follows the look-at, so the raster DOF stays on the subject.
camera(dof_pass=three type=perspective fov=30 near=10 far=20000 position="-886 650 93" look_at="-560 545 -250" dof_range=260 dof_blur=6)
properties
frame(smooth=0.3)
keyframes
kf(time=0 position="-886 650 93" look_at="-560 545 -250" fov=30 dof_range=260 dof_blur=6)
kf(time=2.4 position="-858 662 58" look_at="-562 545 -248" fov=30 dof_range=260 dof_blur=6 easing=easeInOutSine)
kf(time=4.2 position="-779 1059 -285" look_at="-570 539 -229" fov=30 dof_range=300 dof_blur=5 easing=easeInOutCubic)
kf(time=6.4 position="-774 1052 -280" look_at="-570 539 -229" fov=30 dof_range=300 dof_blur=5 easing=easeInOutSine)
kf(time=9.2 position="1500 1350 1500" look_at="-150 650 -1000" fov=34 dof_range=1800 dof_blur=3 easing=easeInOutCubic)
kf(time=9.8 position="1480 1340 1480" look_at="-150 650 -1000" fov=34 dof_range=1800 dof_blur=3 easing=easeInOutSine)
kf(time=13 position="-28 230 -161" look_at="200 150 -800" fov=30 dof_range=400 dof_blur=5 easing=easeInOutCubic)
postprocessing
step(name=render)
step(name=unreal_bloom strength=0.22