Painting Flythrough

One painting becomes a single-take camera flight through a 3D world built from its own brush strokes: the picture bursts into a tunnel of strokes, the camera flies over its ground, water and hills, through the clouds and into one point, then the painting reassembles.

Painting Flythrough

One painting becomes a single-take camera flight through a 3D world built from its own brush strokes. The painting holds for a beat, bursts into a tunnel of its strokes, and the strokes rebuild it as ground, a sea that runs to the horizon, cliffs and peaks, hills, houses with windows that light as you pass, the painted figures, clouds, stars and the moon. The flight is planned around what the painting is about: it reveals the main subject from far away, rises to it, passes slowly in front of it and flies into a chosen point of the picture, then pulls back while the painting reassembles. Every stroke takes its colour from the painting; the engine draws everything in code.

How it works

  1. Write scene.json and check the water and object masks and the top-down path with map.mjs

  2. Look at stills every second or two around the main subject and fix anything seen edge-on, floating, inside a mass or ending at a rim

  3. Render the 1920 × 1080 60 fps film with motion blur in Chrome; the report lists the camera's turn rates

Frequently asked questions

Does it use an image or video model?

The engine does not. Every stroke in the 3D world is a small box coloured from the painting and placed by the scene sheet, and the film is rendered frame by frame with Three.js in Chrome, so the same scene renders the same film. When a figure is the point of the picture but the scan gives it only a few hundred pixels, you can optionally repaint the figures once with an image model and point the figure at that sheet; the Monet demo did this for $0.31.

Which paintings work best?

Pictures with a clear horizon and readable shapes: villages, coasts, fields and night skies. Portraits, interiors and abstract works have no ground to fly over. Use public-domain works or paintings you hold the rights to.

Why are the figures not fully 3D?

A figure is the painted figure itself, cut from the scan and pushed out into a shallow relief: thick in the body, thin at the rim, with a matching back. It stays where the painter put it and leans toward the camera without ever turning edge-on, so it reads as painted from the front and as a rounded shape from the side. It is not a modelled person: from straight side-on you will not see arms or a profile.

Will it make me dizzy?

The camera's aim is smoothed over 0.75 s and roll is capped at about 4 degrees. render.mjs reports turn speed and turn acceleration for the whole flight; all three demos stay under 80 deg/s turn and 90 deg/s² turn acceleration at the 99th percentile.