Tilt-Shift Miniature 移轴微缩

Toy Town Rush Hour·38s·Lemo-Opuscarby Lemomo

A real-looking place photographed from high above with a tilted lens and a time-lapse camera, so the whole world reads as a tabletop model.

The demo: Morning rush hour in a town that looks like a model: traffic, trains and tiny people.

City promosReal estateTransport
Style prompt · STYLE.md

A real-looking place photographed from high above with a tilted lens and a time-lapse camera, so the whole world reads as a tabletop model. References (grammar only): Sam O'Hare's The Sandpit (2010) and tilt-shift time-lapse photography in general: high vantage points, the blur band, time-lapse rhythm, cloud shadows sweeping over streets. Copy none of its places or music; show no real landmarks, brands or logos.

1. Essence, and what it is not

A place seen from high up through a tilt-shift lens: only a thin horizontal strip of the frame is sharp, everything above and below melts into blur. The eye reads that as a macro shot of something small, so the world becomes a model. Two more things make the trick work: saturated, sunny colour (model-railway paint) and time-lapse (vehicles and people move in fast, jittery steps like wind-up toys).

Not a toy or clay render (the world is photoreal, only the lens and the clock make it small), not a game's top-down view (no UI, no clean flat shading), not drone footage (the band, the saturation and the stutter are mandatory).

2. Materials & rendering

  • Vantage: always high. Oblique views at roughly 45–55° pitch from 100–200 m with a moderately long lens (~27–30° vertical FOV); straight top-down for the most "board game" look. Real tilt-shift is never shot from street level, except for a deliberate intimate moment: a true medium close-up at the actors' height, a blurred foreground object framing sharp actors who fill ~1/4–1/3 of the frame height (a long lens from high up keeps them as dots).
  • Blur band (demo/post.js): physical depth of field mixed with a screen-space band. CoC in pixels = mix(aper·(1/focus − 1/z), sign(dy)·amp·(max(0,|dy|−w)/0.5)^1.2, mix), clamped (~30 px). Put the band on the subject; when the subject moves, project it to screen every frame and slide the band there. Narrow the band for intimacy. Gather at output resolution after a 2× supersampled render, with many spiral taps and per-pixel rotation; far samples must not bleed onto nearer sharp ones.
  • Grade: neutral tone mapping, strong saturation boost, soft added contrast, slightly warm highlights, a vignette. Lower saturation at night.
  • Light: a hard sun with sharp shadows (a big shadow map fitted to each shot), a low hemisphere fill with warm ground bounce so shadows stay blue but not murky, a sky-gradient environment map for glass and paint. Cheat the sun azimuth per shot: each time-lapse clip is its own shot, so front-light the facades you see; one fixed sun leaves half a film backlit and grey.
  • Model-like detail (what separates "filmed miniature" from "game CG"): facades with several window types, 1.6–3 m bays, dark reveals, world-space grime, sky-reflective glass and walls darkening toward the ground; roof clutter, awnings and signs; worn markings and stains; vehicles with dark glass, a soft contact shadow and brake lights; ambient occlusion over everything.
  • People are small colour capsules, like model-railway figures. Actors seen up close get organic bodies with a soft sheen material and are made 20–30 % larger than real so they read.

3. Colour logic

  • Saturated, sunny, "freshly painted model": a pale warm ground of buildings with a few candy accents, very saturated greens, dark ground surfaces so white markings and vehicles pop.
  • Shadows stay blue and clean, never grey. Night and dawn are the only low-saturation states; dawn must read as early morning (a warm low fill from the sunrise side, few lit windows), not midnight.
  • The subject you want found should be the one saturated thing in the sharp band, or move against the flow.
  • Examples: a Mediterranean harbour (whitewash, cobalt shutters, terracotta, turquoise water); a snowy ski village (white, pine green, red gondolas, long blue shadows); a desert market (sand, saffron, indigo awnings, dusty olive).

4. Type & subtitles

  • Subtitles belong to the world's own signage: a panel in the graphic language of the place's signs (road sign, platform board, harbour notice…), an open sign-revival font (Overpass, OFL, is a Highway-Gothic revival), sitting inside the lower blur band. Hold ≥ max(1.8 s, speech + 0.6 s).
  • A time-lapse clock with a speed readout (e.g. ×24 TIME-LAPSE / ×1 REAL TIME, monospace) is the audience's speedometer for the native trick; use it whenever speed changes carry meaning.
  • Titles live in the world: letters on a roof, a sign or a field, placed where nothing blocks them, lit or revealed on the beat.

5. Motion quality

  • Time-lapse stutter is the soul of the style. In fast-forward the whole world (vehicles, people, lights, sun) updates at a low rate and holds each position for several frames (8 Hz = 3 frames at 24 fps); choose the rate so every jump lands on the musical grid. The camera stays smooth on every frame. Step at a middle rate while the speed is moderate; below about ×2 the stutter disappears and motion becomes silky, which makes a drop to real time hit hard.
  • Systems run on simple simulations pre-computed per clip (car-following, signal cycles, crowds gathering and surging), with cycle offsets chosen so changes land on bar lines.
  • Hero actors get art-directed timing (scripted paths fitted through beat times), never a hope that the sim hits a beat.
  • Close-up acting: anticipation squash → stretch → land squash → settle; a failed attempt before success is the comedy engine.

6. Camera grammar

A vocabulary, not a route. Opening and ending come from the topic.

Move What it expresses Can serve
High oblique wide, very slow slide a whole system at a glance setting a place; routine; many small actors
Band follows one subject across a wide "this one" a single commuter; a delivery; a lost child
Rack of the band from one subject to another attention changing hands cause and effect; a handover; a comparison
Slow push on an intersection, station or yard a system heating up rush hour; a festival setting up; a queue
Straight top-down, slowly rotating the world as a board or machine patterns; logistics; choreography
Continuous dive from high to actor height with a speed ramp the one small thing that matters a twist; a joke; a meeting
Band narrowing to a sliver intimacy a confession; a reunion; one decision
Vertical rise with logarithmic height scale, letting go aftermath; a summary; a system becoming a pattern
Lateral track along a line (rail, river, road) a process in order a supply chain; a parade; a race
Locked frame across hours time as the actor a construction; a market day; tide

Framing: stay high; the sharp band carries the subject; vehicles and people stay tiny except in a close-up. Transitions: cuts on the beat, speed ramps, dives and rises; avoid dissolves that reveal the fake lens.

7. Sound palette

  • Ensemble: tuned percussion carries the style (marimba, glockenspiel, vibraphone, woodblocks, kalimba, celesta), pulse-based and minimalist (Reich grammar: phasing, voices added one at a time, pulsing chords), plus plucked strings or a small reed section. Not generic piano and strings.
  • Techniques, as options: world events gate the notes of a fixed phrase skeleton (vehicles crossing a line, lights changing, crowds moving each trigger an instrument), with a base fill rate so the phrase stays audible; tuned horns or bells voiced as chords; a tape-stop (varispeed down, voices dropping out) into silence when time slows; single notes for single events in a rest; phasing two identical lines apart; a music-box version of the theme for the smallest scale.
  • Sound follows speed: in time-lapse, music first with a faint granular "sped-up world" hiss, clacks and relay clicks. At real speed the world turns suddenly real: idling engines, distant traffic, birds, small voices, footsteps. On release, engines rev and wind rises.
  • Silence is the moment real time arrives: cut the music, keep one or two real sounds.
  • Voice: relaxed, few short lines, music ducked ~8 dB. Verify every line with whisper; write numbers as words and put digits in the asr field. Master to −14 LUFS.

8. Native moves

A menu: use the ones your story needs.

  • The speed drop (×40 → ×1). Time crashes to real speed on one detail. Fits content like: one worker finishing a shift; a child dropping an ice cream; a proposal on a crowded pier.
  • The band as pointer. Slide or narrow the sharp strip to steer the eye. Fits content like: a courier through a market; a single wrong-way skier; one boat leaving port.
  • God's-eye system. The place as a sequencer or machine. Fits content like: a port unloading ships; an airport's turnaround; a farm harvest.
  • Long-exposure light. At dusk, lights leave trails that draw on the world. Fits content like: ferries crossing a bay; runners with headlamps; lanterns along a river.
  • The scale reveal. Rise until the place becomes a pattern. Fits content like: a festival from setup to crowd; a school at recess; a city grid at night.
  • Cloud shadows sweeping. Weather crossing the model. Fits content like: a season turning; a mood change; a news cycle.

9. Pitfalls of the medium

  • Tall buildings plus shallow pitch hide the ground → low to mid-rise buildings, pitch 45°+.
  • The subject hides in a canyon or behind a facade → route it on the camera side and let the band follow it.
  • Instance caps silently drop actors → cull by distance from the camera (≈ 4× camera height) and raise the cap.
  • Simulated vehicles stop short of lines (the jam gap) → subtract it where the story needs contact.
  • Focus lags a frame → update actors before the camera.
  • A top-down → oblique dive twists → rotate the top-down so its screen-up matches the target shot.
  • A close-up from high up is too far → go low and close, small near plane for foreground objects.
  • Clouds wash out a rise → unlit white, low opacity, nothing below the camera. Light pools read as bubbles → denser, larger, fainter pools.
  • Scene backlit and grey → cheat the sun per shot. Dawn reads as midnight → warm low fill, fewer lit windows.

10. Engine

In demo/: post.js (tilt-shift DOF: band + physical, grade; band.follow), city.js (procedural town, facade shader, sign), geo.js (merged geometry), sky.js (clock → sun, sky, fog, env map), traffic.js (lanes, lights, IDM sim, fleet, trails, walkers), train.js, ducks.js (lathe-turned characters + hop choreography), main.js (cameras, stepping, crowds, HUD), music/score.py (sampled marimba, skeleton + event gating). A minimal new use: build a harbour from geo.js boxes, run boats as a one-lane traffic.js fleet on water, and point band.follow at one of them.

11. Variation space

You decide the place, the system, the tiny actor, the structure, the opening, the ending, the camera path, the speed curve and the palette within the colour logic. All far from our demo:

  • Structures: one day, dawn to night (a single locked vantage, the sun and the shadows sweep, one shop's light the last to go out); the relay (the band hands attention from actor to actor across a whole place, each one passing something to the next); before/after (a construction site time-lapsed from empty lot to opening day, with one real-time moment per stage).
  • Openings: mid-bustle at full density with the band already on one oddity; a top-down pattern that only slowly tilts into a place; real time first: one person at actor height, then the lens lifts and time speeds up.
  • Endings: a drop to real time that stays there (no pull-back); lights going out one by one at night from high above; the lens un-tilts: the band widens to full sharpness and the model becomes a real place.

How our demo was made (story, shots, score, end card, build): DEMO.md. Read it after your treatment exists.

Director's notes for the demo film

One example among many. Don't reuse its story, arc, shots, props or timings.

Demo: Toy Town Rush Hour (38 s) · tilt-shift.mp4 · source in demo/

Story & structure

An original procedural town wakes up at dawn and builds to rush-hour gridlock; at the peak, time crashes to real speed on a family of ducks crossing the main avenue in front of a hero car, then releases and rises until the town is a circuit board.

The old guide's adaptation recipe, kept as one example: make the topic a system with many small actors, then find the one tiny actor the system bends around (a product launch → the city's traffic flowing toward one shop; a love story → two commuters crossing on the same crosswalk every morning; a history lesson → one street time-lapsed across a century).

Arc (38 s): quiet (one light trail at dawn) → the system wakes up (actors multiply, rhythm builds) → maximum density → hard drop to real time on one detail (the ducks, with a failed hop before success as the comedy beat) → release back to fast-forward → rise to a scale reveal. One subject, one goal, one twist.

Native powers spent: long-exposure light (the dawn car trail is the whole opening), the blur band (follows the car; narrowest on the ducks), time-lapse speed (×24–×40 with the ×40 → ×1 drop at the peak), god's-eye scale (rotating top-down at peak density, the final rise).

Shots

Beat Camera
Opening High oblique wide at dawn, very slow slide; the band follows the single hero car's light trail, routed on the lane nearest the camera
Title Oblique across rooftops onto an in-world neon sign on a building facing a wide avenue, letters lighting one per 8th note; road-sign tag "A TILT-SHIFT MINIATURE"
System waking up Medium-high oblique on an intersection and a station, slow push; the band on the stop lines / platform edge; commuter train
Peak density Straight top-down, slowly rotating, gridlock
Real-time detail One continuous dive from the top-down into a low medium close-up over the hero car's hood, the car's front and lights as blurred foreground. The eye-line lands on the ducks before the body does (look target eases out faster than position). Speed ramps ×40 → ×1 during the dive; land on the narrowest band. The top-down was rotated so it ends facing the close shot's direction
Ending Vertical rise with logarithmic height (40 m → 820 m) through a thin cloud layer until the town becomes a circuit-board pattern; end card

Close-up numbers used: camera ~1.7 m up, 6–8 m away, ~12° pitch, 17° FOV, near plane 0.08 m; the ducks fill ~1/4–1/3 of frame height. Oblique shots: 45–55° pitch, 110–200 m from the subject, 27–30° vertical FOV.

Score structure

Sampled minimalist marimba ensemble (demo/music/score.py), 120 BPM, so the 8 Hz time-lapse stutter is exactly a 16th note. Fixed phrase skeleton; city events decide which notes sound: cars crossing stop lines gate marimba A, green lights play woodblock accents, crowds trigger glockenspiel, train carriages play the bass; each section has a base fill rate.

  • At peak density the skeleton is full, with phased marimba B and tuned car-horn chords (sampled brass staccato pulsing 8ths).
  • The real-time drop is a tape-stop: varispeed 1 → 0.22, voices drop out one by one, then true silence. During the rest only one soft note per story event plays, each duck hop a step up the scale.
  • The first note of the film is the top note of the final chord.

Sound design: time-lapse = music first with a faint granular sped-up city hiss, rail clacks, relay clicks; real time = idling engines, distant city, sparrows, tiny quacks and peeps, webbed feet patting asphalt; release = engines rev, wind sweeps up during the rise.

Voice: relaxed American male, Kokoro am_adam, speed 0.9–0.95, 5–6 short lines, music ducked ~8 dB.

Palette & props

  • Facades: warm whites, cream, terracotta, brick, pale yellow, mint, sky blue. Cars: white, silver, black, red, blue, yellow taxis. Park green #6fa24a. Asphalt #4b4e53. People: 0.5 m colour capsules.
  • Grade: NeutralToneMapping, saturation ×1.55, soft contrast +0.42, slight warm highlights, vignette 0.3.
  • Band values: half-width w 0.055 (0.035 on the ducks), amp 30, mix 0.55–0.7, aper 5000–9000 (metres), CoC clamp 30 px; 128 spiral taps.
  • Light: 4096 shadow map fitted per shot, hemisphere fill ~0.6. Dawn: sun ~3.5° below the horizon, pink-orange east fill #ffb48c, ~9 % of windows lit, sodium street-light pools.
  • Facade shader: punched / ribbon / curtain-wall / brick window types, glass roughness 0.08–0.22, metalness 0.35; manholes, asphalt patches, oil stains; GTAO.
  • Traffic: IDM car-following pre-computed per clip, lights on a 96 s cycle, "don't block the box" logic, a pedestrian crossing that stops all lanes; heavy inflow plus box-blocking gives honest gridlock. Crowds are closed-form: they gather at corners on red and surge on green. Stepping: 8 Hz in fast-forward, 12 Hz between ×2 and ×6, smooth below ×2.
  • Hero actors: a dawn car on a scripted path, a commuter train with kinematics fitted through beat times, lathe-turned ducks with a sheen fuzz material (MeshPhysicalMaterial, sheen 1, sheenRoughness 0.55), hop = anticipation squash (0.28 s) → stretch jump → land squash → settle, a second failed attempt before success.

Titles, subtitles & end card

  • Subtitles: a green #0f5e3c rounded road-sign panel with an inset white keyline, Overpass 600 44 px white, a tiny traffic-light icon lit green on the left, 118 px above the bottom inside the lower blur band.
  • Time-lapse clock top-left (Overpass Mono): 07:12 with small seconds, ×24 TIME-LAPSE in amber, ×1 REAL TIME in green.
  • End card: the same road-sign language over the top-down town: the title, the style name and LemoLab × Claude Opus 5.5. The "LemoLab × Claude Opus 5.5" sign-off belongs to this library's demo only; a user's film carries no LemoLab credit and no copy of this card.

Build notes

styles/tilt-shift/demo/
  post.js    tilt-shift DOF (band + physical), grade      city.js   procedural town, facade shader, sign
  geo.js     merged-geometry builder                      sky.js    clock → sun/sky/fog/env, dawn glow
  traffic.js lanes, lights, IDM sim, fleet, trails, walkers   train.js commuter train
  ducks.js   lathe ducks + hop choreography               story.js  120 BPM timeline, time windows, rate curves
  main.js    cameras, stepping, crowds, HUD, events       mix.py    ambience + foley + VO + score
  music/score.py  sampled marimba score (skeleton + event gating)   subs.mjs  subtitle export
  1. sh styles/tilt-shift/demo/build.sh rebuilds everything from scratch: TTS → whisper → events → subtitles → score → mix → 912-frame render (~60–80 s on an M-series GPU with 3 workers) → mux (−14 LUFS, grain 1) → styleframe and poster.
  2. Iterate with node core/render/still.mjs styles/tilt-shift/demo <t…> --q noev (noev skips the event scan). Debug flags: nohud, nodof, nostep, az=<deg>, cam=x,y,z,lx,ly,lz,fov, aper=, bamp=, bmix=.

Pitfalls tied to this demo's props:

  • The first pass was a skyscraper forest with no streets visible.
  • The dawn car was hidden in a street canyon until routed on the camera-side lane.
  • The neon sign was occluded until moved to face a wide avenue.
  • The instance cap (1,400 vs 2,800 cars alive) silently dropped the hero car.
  • Cars stopped 2 m short of the ducks' crossing (IDM jam gap): the stop line was moved closer and the jam gap subtracted.
  • Gridlock left the story lane empty: box-blocking starved the segment in front of the crossing, so the main avenue was exempted and the queue formed behind the hero.
  • The top-down → oblique dive first twisted 180°.
  • The peak first used a high long-lens view with the ducks at 1/15 of the frame. Headlights were moved to the car's top front edge so they read from above, and the hero car was held until the rising camera lifted clear of it.
  • Clouds washed out the ending; streetlight pools read as bubbles; street furniture cluttered the close-up area and was removed.
  • One fixed sun left half the film backlit and grey; the first dawn read as midnight (fixed by the pink east fill and ~3× fewer lit windows).