Workshop Bench
Workshop Bench
A garage woodshop at the end of the afternoon: a long fluorescent light over a scarred beech bench with hand tools, and an iPad running a cut-list app.
A garage woodshop with a laminated beech workbench, a cast-iron plane, chisels, a vise, an oil can and a hung pegboard, sawdust and curled shavings everywhere, lit by one cool fluorescent tube and a little warm daylight. One steady 13 s take in four beats: a macro on the oil can and vise, a crane up and round with a hold, a pull out to the wide shop, then a slow low push along the bench onto the shavings.
- Length
- 13 s
- Scenes
- 1
- Device
- ipad
- Style
- realistic place
- Camera
- push in, dolly, ultra closeup
//
REALISM WORKSHOP — "Workshop bench" (see SCENE.md)
A garage woodshop at the end of the afternoon, lit by one long fluorescent shop light hung on
chains over a scarred laminated-beech workbench; the garage door is up behind the camera and a
little warm daylight spills in low from the front-left. On the bench: a cast-iron hand plane on
a walnut board, its shavings, three chisels, a machinist vise, a pump oil can and an oily rag,
a mallet, an F-clamp, a whetstone, a steel try square, a tape measure and an enamel mug; a hand
saw on the pegboard. Sawdust lies drifted over the bench and the floor.
The tests: rough, oily and polished metals side by side under one cool line source; shadows
soft along the tube and crisp across it; cool tube light on warm wood against the warm spill;
fine particulates (the dust layer, shavings) on surfaces.
SET origin = the bench's front edge, centred; bench top surface Y = 900 (x -1000…1000, z -880…-180).
Back wall z = -900, left wall x = -1500, right wall x = 2100, ceiling 2600, door line z = 1400.
Y props y = surface + scale × |minY| (models/*.json), written as arithmetic beside each.
SCREEN Kerfmark, a fictional cut-list and lumber-stock app (realism-workshop.screens.html →
scripts/html-screens.mts); the stretcher row is cut while the camera holds on the iPad.
Authored look is the 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-workshop/realism-workshop.promo
promo#realism-workshop(width=1920 height=1080 fps=30)
scene#workshop(duration=13 transition=none)
renderer(tone_mapping=None exposure=1 shadow_map=true shadow_map_type=pcf-soft)
// Four beats, focus following the look-at:
// 0–2.4 s macro on the oil can, the rag and the vise, 60–90 mm above the bench, sliding right
// 2.4–4.2 crane up over the plane and round to the iPad, ~560 mm off its glass; hold to 6.8 (the row is cut at 4.9)
// 6.8–9.6 pull out to the wide from the front-right, the shop light at the top of frame; hold to 10.2
// 10.2–13 a slow low push along the bench onto the plane and its shavings
camera(dof_pass=three type=perspective fov=30 near=10 far=30000 position="-360 1040 -110" look_at="-740 965 -560" dof_range=260 dof_blur=7)
properties
frame(smooth=0.3)
keyframes
kf(time=0 position="-360 1040 -110" look_at="-740 965 -560" fov=30 dof_range=260 dof_blur=7)
kf(time=2.4 position="-270 1030 -140" look_at="-690 962 -580" fov=30 dof_range=260 dof_blur=7 easing=easeInOutSine)
// lifted over the plane on the way, so its tote never wipes the lens
kf(time=3.0 position="-60 1260 40" look_at="60 1075 -585" fov=30 dof_range=400 dof_blur=5 easing=easeInSine)
kf(time=4.2 position="318 1196 -62" look_at="260 1045 -596" fov=30 dof_range=320 dof_blur=6 easing=easeOutSine)
kf(time=6.8 position="312 1194 -58" look_at="260 1045 -596" fov=30 dof_range=320 dof_blur=6 easing=easeInOutSine)
kf(time=9.6 position="1080 1340 880" look_at="-80 1190 -560" fov=44 dof_range=1800 dof_blur=3 easing=easeInOutCubic)
kf(time=10.2 position="1080 1340 880" look_at="-80 1190 -560" fov=44 dof_range=1800 dof_blur=3)
kf(time=12.2 position="360 1070 -50" look_at="-170 950 -345" fov=32 dof_range=320 dof_blur=6 easing=easeInOutCubic)
kf(time=13 position="325 1062 -64" look_at="-180 948 -345" fov=32 dof_range=320 dof_blur=6 easing=easeOutSine)
postprocessing
step(name=render)
step(name=unreal_bloom strength=0.2 radius=0.45 threshold=0.95)
step(name=output tone_mapping=none exposure=1)
step(name=aa method=ssaa samples=4)
// the studio HDR lights only (the room hides any background); a garage is darker than a studi