Log inGet started
← Explore
World media

Uchimawari

内回り, "the inner loop" — one night on a closed railway loop at Shibuya, in sixteen shots and ninety-six seconds. It opens at 00:41 in heavy rain with the city as the only light source, and ends at 04:58 at the same station, on the same lens, lit by the sun.

0score
Updated Sep 05, 20261 play1 fork
cinematicdemofilmnightraindawntrainstokyoatmosphereinstancingparticlespost-processing

Uchimawari — 内回り, the inner loop

The Yamanote Line has no terminus. It is a closed loop, and the only thing that ends on it is the day.

Uchimawari is one night on the loop at Shibuya, in sixteen shots and ninety-six seconds. It opens at 00:41 on the last train of the night, in heavy rain, on an elevated island platform inside a canyon of signage where every surface is a light source. It runs through the dead hours — the Osaki yard where eleven trains sleep, an inspection train grinding through a station with nobody in it, the moment the city's neon goes out bank by bank — and ends at 04:58, dry, with the sun 4.6° up and the first train of the morning sliding into the same platform, empty and lit.

Shot 16 is shot 1's exact station, exact 42° lens, exact 1.55 m eye height, and the same dolly-in. Nothing in it is the same.

The arc

Three things invert across the film: the light source (a city that is the only light → a city lit by something else), the water (wetness 0.88 and every street a mirror → 0.22 and steam off dry rails), and the population (a crowded last train → an empty first one).

ACT I — RAIN (00:41→02:00)ACT II — DEAD HOURS (02:00→04:12)ACT III — DAWN (04:12→04:58)
lightemissive signage only, sun at −18°signage dying; mercury and sodiumsun crosses 0° inside shot 14, reaches +4.6°
colourmagenta, cyan, sodium, warm windowsmercury green-whiteblue hour → low sun; concrete, tile, rust
waterwetness 0.88, rain 1.0rain stops, 0.62→0.460.30→0.22, steam

Through all three acts one colour never leaves the frame and never belongs to anything but the train: uguisu lime 0.60, 0.80, 0.22, the Yamanote stripe.

Lenses run 8° to 90° vertical — six shots under 30°, four over 60°. Camera heights run from 4 cm (a rail joint) to 320 m (over the ward).

How it runs

The whole film is one component, FilmDirector, on entity film_director. Its update() advances the clock exactly one fixed 1/24 s per rendered frame and then writes the camera from uchi.image.camera(shot, localT, t). Nothing in the demo reads the engine's dt, os.time, or any wall clock, so the film runs to the same length however slowly the engine draws it.

local Film = require("uchi.film")
Film.play()          -- from the top
Film.seek(48.0)      -- put the clock on a moment and evaluate that frame
Film.status()        -- t, frame, shot, act, clock, and every ramp's value

Four slices build it, each reading its world from uchi.film:

  • uchi.line — the Shibuya viaduct, island platform and canopy, the canyon of buildings, ~6,000 city windows as one hardware-instanced draw, the tunnel, the shared trackwork kit, and the signage light rig including the shot-10 switch-off.
  • uchi.stock — E235 sets, carriage interiors, the inspection train, the platform crowd, a rat and seven sparrows, and all of their motion on the fixed film step. It parents seven camera stations to the cars, so five of the sixteen set-ups ride the real carriage.
  • uchi.weather — sky, physical atmosphere, the sun crossing the horizon, height fog, the wetness ramp, nine particle systems, and a wet-surface shader that reads zero::scene_depth and zero::scene_color for screen-space reflection.
  • uchi.image — the sixteen set-ups as pure functions, per-shot lens and depth of field, a 180° shutter throughout, bloom → ACES → a 25-rung LUT ladder → chromatic aberration → vignette, and the spatial mix.

Known gaps

Three of the sixteen shots are under-lit to the point of being hard to read — shot 4 (under the viaduct), shot 5 (the cab ride into the tunnel) and shot 10 (the neon going out). Shot 11's empty carriage renders as a soft glow rather than an aisle. Every shot does move — measured against a frame-difference noise floor of exactly zero, the quietest shot still changes 8% of its pixels across its own length — but those four are the reason this is published unlisted rather than public.

Comments · 0

Open discussion, no rating attached. Ask questions, swap notes, follow threads.

Sign in to join the discussion.