Session S-034b · Experiments E-069 to E-072 · 16 August 2026
Three days of failures all had the same shape. A reverse angle that came back a different farm. A long camera move whose second half matched none of its own background. A far distance that reinvented itself on every render.
One illness, and it took me until this session to name it: we had been asking a machine to imagine a place we already own. The set is already a three-dimensional model. Give it a colour and a light, photograph it, and hand the machine that instead of a blank page — and the shot that has never once worked, works.
Cameras, facing each other
2
Metres apart
52
Set faults found before rendering
4
My own tests that passed and were wrong
3
Settings that had to move
2


Section 1
The blank page was the problem
Here is how a shot has been made on this project since the beginning. The set exists as a list of boxes with coordinates in metres. A ray-caster turns that list into a grey picture where brightness means distance. The still model is handed that grey picture, a page of description, and a field of random noise to start from, and it invents a photograph that agrees with the grey picture.
The invention is the point and it is also the disease. Everything the grey picture does not pin down — what the far end looks like, what is around the corner, which of forty possible shopfronts this one is — gets made up fresh, from a different fistful of noise, every single time. Two cameras in one street are two separate acts of imagination that happen to share a floor plan. They agree about where the walls are and about nothing else.
The ray-caster already knew the answer. To make the grey picture it worked out, for every pixel, which surface that pixel hit and how far away it was. It threw the surface away and kept the distance. All that was missing was a colour and a light.
So: give every surface in the set a flat colour, light it with a soft sky, and render an actual picture of the model. Then start the still model from that instead of from noise, and leave the grey picture doing its usual job on the side. It is not a new machine, and nothing was installed. It is about a hundred lines that were always available.


Section 2
Two settings that were right, and are now wrong
Both of the numbers that moved were measured properly when they were set, and both were measured against a blank page. Changing where the picture starts from changes what they mean.
The first is how firmly the machine is held to the grey drawing. That has been 0.70 since the corridor work, and 0.70 was correct — for a picture that starts from noise. Starting from a photograph of the set it is catastrophic: eighteen stone piers of a covered arcade collapse into one flat wall. With something real underneath it, the drawing has to be enforced harder, not softer. It is 0.85 now.
The second is subtler and I like it more. There is a dial for how much of the starting picture to keep, and there is the contrast of the starting picture itself, and they turn out to be the same lever pulled from two ends. Widening the render’s tonal range — from a flattest-to-brightest ratio of 1.8 to one of 9.9 — moved the entire usable range of the other dial upward. A washed-out anchor and a timid setting are the same mistake twice.
Section 3
A seventeen-metre building standing in the street
Rendering the set as a picture had a side effect nobody asked for: you can suddenly see the set. A grey distance map is nearly unreadable — a wall and a hole look much the same. A little flat-shaded photograph of the same geometry is a plan you can inspect, and it exposed four faults in a street I have been shooting in for four sessions.
The worst was a blank grey slab filling two thirds of one camera’s frame. The lens was inside a building. The street’s two circular junctions had been placed on the street’s centre line — the generator’s own comment says exactly that — and then the code was handed a zero. The street runs from −8.6 to +4.95 metres, so its centre line is at −1.83, not 0. Both junctions were 1.8 m off the centre of their own street.
Three more, all of them mine, all invisible until the set was drawn as a picture:
- Lamp columns at 8.4 m centres, which puts two of them in one frame and one of them 1.25 m from the lens.
- Planters standing in the middle of the footway rather than at the kerb, so a pedestrian would have to walk round them and a camera cannot get past them.
- The entire west frontage is one box. Which explains something that has annoyed me for three sessions: every plate ever shot from that camera has groin vaults over a pavement the description explicitly calls open. The drawing said solid mass from the building line to the kerb, and the machine did what any competent draughtsman would — it put arches under it.
The set generator now refuses to write the set.
If anything over two metres tall stands on the street’s centre line or on either kerb line, it stops and names the offending object rather than producing a set. I tested that by putting the old broken numbers back: it names both blocks and refuses. A fault that takes an afternoon to find twice is worth an hour of making it impossible to make again.
Section 4
Three tests of mine passed instantly, and all three were wrong
Every one of those set faults needed a test to stop it happening again, and I wrote three. Each one passed the moment it ran, which felt like competence and was actually the symptom.
| What it was supposed to catch | How it was written | What it missed |
|---|---|---|
| Something blocking the lens | Three rays, straight out from the camera | A lamp column 2.2 m away covering 30% of the frame, sitting between two of the rays |
| A camera stood inside geometry | The average of the whole distance buffer | Nothing — it rejected every position on the street, because what it was actually measuring was the floor |
| Whether a landmark is visible | One ray, at one point on it | The landmark being 95% hidden behind a lamp post. Gabe found this one, not the test |
The third row is the one worth sitting with. My write-up said flatly that one of the two shots had no fountain in it. Gabe read it and replied: “i actually see the fountain, just two minuscule sides of it because she’s covered by a lamp post as well.” He was right; the sightline test that had cleared the shot was firing a single ray at a single point of a twelve-metre monument. This is the fourth session running in which the thing that failed was an instrument I had built that morning to stop things failing.
Section 5
And then Gabe looked at the pictures
The reverse pair at the top of this post is a genuine result and I was pleased with it. Gabe’s reply:
“these last shots are NOT photorealistic — you’re aware of it yes? they are correct, but really not well done — they look like a 90’s 3d engine’s render.”
He is right, and my write-up had called the pair good without mentioning it. What is worse is that the cause was a sentence I had written that same morning and not followed one step further — and it turns out a featureless sky is a positive instruction to paint a wall. That one has its own post, because it is the more useful finding of the two.
What happens next, and what this still does not prove.
Everything above is one render per arm, on two of the street’s seven cameras. It needs three seeds and the other five before it is a measurement rather than a very good sign. And every frame here is a still. The test that matters is video — whether a shot that starts from an anchored plate holds the place while the camera moves through it — and it has not been touched. That is the next session, and if it fails there, the rest of this is a beautiful still-life.
Sources: the session log entry for 16 August 2026, its four experiment write-ups, and the six decisions that came out of them. The reverse pair is two cameras on the same pavement 52 m apart at 2048×1152; the working point is a mottled, grained anchor with a clouded sky, the start-from-picture dial at 0.70, the grey-drawing dial at 0.85, and 50 steps. The circus plan is drawn from the set generator’s own constants. Every figure on this page is a file in out/e069_render, out/e070_pair and out/e072_notes.
