Preview Evidence level · Delivered capability

A website that plays like a film, one continuous shot, built from still photographs

RIMROCK is a self-initiated demo of a format I build for adventure and destination businesses: the whole page is one unbroken camera move through the operator's own photographs, so the visitor experiences the trip before they read a word about it.

Client
Self-initiated concept demo (RIMROCK is a fictional outfitter)
Sector
Adventure tourism, format demonstration
Role
Designed & built by me, concept, art direction, imagery, 3D engine, copy
Period
July 2026 · concept demo
Services
Cinematic scroll experience design · Art direction & brand world · Photo-to-3D depth pipeline · Front-end engineering (WebGL) · Performance-budgeted motion
Tools
three.js (vanilla, no framework layer) · Depth estimation (Depth-Anything V2, local GPU) · Lenis smooth scroll · Cloudflare Pages · Puppeteer verification harness

The business

Adventure and destination businesses sell an experience, but their websites usually sell a grid of photos. The operators who most need to show what a day with them feels like are exactly the ones who can't fund a film crew, and stock footage sells someone else's trip. Meanwhile they already own the raw material: hundreds of real photographs from real days out.

The real problem

Make a website that carries the feeling of a film, without any film. It had to run from ordinary still photographs, hold a single continuous camera move from the first pixel to the last section (no visible cuts between scenes) and still behave like a website: fast, readable on a phone, and honest to anyone who scrolls back up.

My responsibility

Everything: the concept and brand world, the imagery, the depth-and-camera pipeline that turns flat photos into a space you move through, the WebGL engine, the copy, the motion tuning, and the measurement harness that proves it stays smooth.

  • Built from stills only, no video footage, no film crew, no stock clips.
  • One continuous camera: the visitor must never see a boundary between scenes.
  • A real performance budget, measured, not 'it feels fine on my machine'.
  • Degrades to a readable page: no WebGL, reduced-motion, or an old device still gets the content.

What was built

The solution, in modules

01

Photographs become places

Each still is analysed for depth and rebuilt as a three-dimensional surface, so the camera can move into the photograph rather than across it, parallax that comes from the real shape of the scene, not a fake layer slide.

02

One camera, five worlds

The five scenes are stations along a single camera path. Scrolling doesn't switch slides; it moves the camera forward through a continuous space, which is why no cut is ever visible.

03

Transitions that happen inside the weather

Where one world becomes the next, the camera passes through a wall of drifting dust. The change happens inside the atmosphere, the way a film hides a transition in a whip-pan, the join is designed, not disguised after the fact.

04

An instrument that tells the story

A live elevation readout in the header climbs from the valley floor to the rim as you scroll, doubling as the progress indicator, narrative and navigation in the same element.

05

Proof instead of impressions

A scripted harness drives the finished page in a real browser, captures every scene at its exact scroll position, and measures per-frame timing across the whole page, so smoothness is a recorded number, not an opinion.

System view

How a photograph becomes a scene

  1. 01

    Source photograph

    A single still (ideally the operator's own) chosen for depth and light.

  2. 02

    Depth pass

    A depth model runs on my own hardware and produces a map of how far away every pixel is.

  3. 03

    Rebuilt as space

    The photograph becomes a three-dimensional surface the camera can travel into.

  4. 04

    Placed on the camera path

    Scenes are positioned along one continuous route, with atmosphere covering every join.

  5. 05

    Measured

    The finished page is driven and timed in a real browser before it is called done.

The same pipeline runs on a client's own photo library, the demo's imagery was generated locally only because the brand is fictional.

Inspectable proof

Proof you can inspect

Sanitized artifacts show the underlying work without exposing client identities, credentials, private dashboards, or customer data.

  • The live scroll-film

    Scroll it end to end: one continuous camera move from the trailhead at dawn to the canyon rim at dusk, built entirely from still images.

    Open the RIMROCK demo

    Deployed demo · verified July 2026

  • Claims boundary

    What this entry does and does not claim.

    Built & verified
    Complete five-scene scroll-film, deployed, performance measured in a real browser
    Brand
    RIMROCK is fictional - invented to demonstrate the format
    Imagery
    Generated locally for the demo; the same pipeline runs on a client's real photos
    Not claimed
    Client engagement, traffic, bookings, or business results

    Dated project status record · verified July 2026

Evidence

What backs this up

  • Live demo, publicly viewable

    Verified

    The finished five-scene scroll-film is deployed and can be scrolled end to end at rimrock-demo.pages.dev.

  • Measured smoothness, not estimated

    Project record

    A scripted full-page scroll on a 1440x900 viewport recorded a worst single frame of 26 ms and zero frames over the 50 ms jank threshold; a narrow-viewport check confirmed no horizontal overflow.

  • Pipeline proven on real client photographs

    Verified

    Before this demo existed, the photo-to-space pipeline was run on an operator's own drone photography to confirm it works on ordinary real-world images.

Results & current state

What's true today

  • A film-grade scroll experience with no film in it.

    Five photoreal scenes and one unbroken camera move, produced entirely from still images, no footage, no crew, no stock.

  • Cinematic motion inside a real performance budget.

    Worst measured frame 26 ms across a full-page scripted scroll, zero frames over the jank threshold, verified in a real browser rather than estimated.

  • The format transfers to an operator's own photo library.

    The depth-and-camera pipeline was proven on real client photographs before this demo was built; only the demo's fictional brand required generated imagery.

Do your customers see a photo grid, when they could be taken on the trip?

Describe your setup in a few sentences. You'll get a plain answer about whether and how I can help.