The castle
Playground no. 1: one castle shot, rebuilt seven times by prompting Anthropic and OpenAI models.
Watch the final cut

- Me
- Direction, prompts and the final calls.
- Opus 5.5
- Anthropic, in Claude Code. The scene scripts, the camera and every render.
- gpt-6.1-sol
- OpenAI, in Codex. The rival first castle, the mills, ground work and castle details.
- gpt-6-astra
- OpenAI, in Codex. A ground pass and the gatehouse.
It started with WLOP

I've followed WLOP for years. He's self-taught, his pictures are dark with a few precious highlights, and since 2019 he builds many of his scenes in Blender before painting over them. He has no Blender tutorial, only silent timelapses.
So I asked Opus 5.5, in Claude Code, to study him: his ArtStation, YouTube, Patreon and Reddit threads about how he works. It came back with a long breakdown: light and value first, muted colour pushed warm against cool, detail spent only where you look.
Then I asked it to rebuild DeadDreams (2020) from nothing. It solved the camera from the horizon line (a 15 mm lens, 230 m up), generated about 24,000 buildings and cloth-simulated the cloak. Average brightness: 0.383, against the original's 0.384.
Before the castle, I looked for a good way to work with Blender through Claude Code. I'm still figuring out what's best, but what worked well for me was having the model write Python scripts that rebuild the whole scene from scratch on every change, then render it headless and check the result, rather than clicking around a live scene through an MCP server.
The other half is taste, so I had Opus 5.5 research how good Blender artists work and turn it into notes it reads before every scene: 15 core principles, 17 reasons CG looks fake with a fix for each, 17 places where Blender 5.2's Python API differs from older tutorials, and 11 tested scripts. My favourite fact from it: grass reflects about 12% of the light that hits it, concrete about 51%. Paint grass from memory and it comes out far too bright.
Seven versions
v1: Two first flights
I asked Opus 5.5 and gpt-6.1-sol for the same thing: a realistic medieval castle, with only the camera moving. Opus 5.5 wrote the cathedral, terrain, lake and camera path as one Python file and pulled trees, rocks and textures from Poly Haven. It looked like a render: the mountains were white blobs and nothing had ever been rained on. The gpt-6.1-sol castle was all towers and tracery, but it sat on its cliff like something on a plinth. I liked the Opus 5.5 version as a place, and gpt-6.1-sol built the better castle.
Opus 5.5: one long move over a lake and a forest, rising to the castle. gpt-6.1-sol: three moves around a castle floating on mist, about an hour from prompt to video. v2: Too perfect
It looked too perfect, so I asked for wear and clutter. Moss on ledges, rain streaks, damp near the ground, chimney smoke bending in the wind, scaffolding on one tower and a few fallen battlements. This did more for realism than any lighting change. It also took 2.5 hours to render.

v3: Best of both
I kept the Opus 5.5 camera, terrain and light and asked for the gpt-6.1-sol detailing on top. It came over as witch-hat roofs with brass seams, lancet windows and six slender turrets. The hill also stopped looking like a sand dune.

v4: Director's pass
I asked Opus 5.5 to look at the scene the way an animation director would. It handed the windmill and waterwheel to gpt-6.1-sol in Codex (you can turn them yourself further down), added reed beds, a rolling ship, a sunset sky and a dove burst at the 9.5 s reveal, then cut the music so its swell lands on that reveal. It turned down three of its own ideas: a branch sweeping past the lens (the camera never gets within 16 m of a tree), god rays (the sun is out of frame) and a moving cart (no horse).
v5: The bird at nine seconds
A low-poly dove flew right past the lens. My first idea was to fix it with Google's video model, Gemini Omni Flash, in AI Studio, but editing a video needs a paid API key, so I dropped it. Opus 5.5 rerouted the flock up and out of frame instead and re-rendered only frames 192 to 240: 20 minutes instead of 2.3 hours. After that I asked for cheap draft renders before every full one.
v4v5
v4v5
Frame 238, where the dove was 335 px wide. v6: Mountains, sky, ground
This is where Opus 5.5 started handing work to Codex instead of building everything itself. The mountains got rock, scree and erosion gullies, and I picked a cloud sky from three options. Two Codex sessions built the ground in parallel, one on gpt-6-astra and one on gpt-6.1-sol. One road came out red: the mud texture read as red asphalt, and its wet ruts reflected the sky like white lane markings. Opus 5.5 cut it.
v5v6
v5v6
Flagstones, a rim wall and footpaths. 
Three skies. I picked the middle one. v7: A grander castle
I asked for a grander castle and left Opus 5.5 to split the work. It worked out that the camera ends 108 to 165 m from the front, where only silhouette and height read, and the front was a plain wall with four squat towers. Three Codex sessions, one on gpt-6-astra and two on gpt-6.1-sol, built a gatehouse, crowned corner towers, banners and braziers, all without seeing them. The gatehouse now hides the rose window. The final render took 2 hours 27 minutes.
v5v7
At 13.3 s, where the camera ends up. 
Eight frames from the v7 draft pass, which I checked before the full render. How Opus 5.5 handed the castle to Codex
- Me. Asked for a grander castle, with the pieces going to Codex.
- Opus 5.5 in Claude Code. Brainstormed, exported the scene's layout as JSON and wrote a brief for each piece.
- gpt-6-astra and gpt-6.1-sol in Codex. Each wrote one Python module without being able to render it.
gpt-6-astra gatehouse.pygpt-6.1-sol tower_crowns.pygpt-6.1-sol castle_details.py - Opus 5.5 in Claude Code. Built them in, rendered frames 250, 300 and 320, and fixed two crashes.
- Me. Looked at the drafts and started the 2 h 27 min render.
Opus 5.5 exported the scene's layout (the road, the 46 houses, the gate gap, the camera path) to a JSON file, wrote a brief for each piece and launched the Codex sessions in parallel from the terminal. Every module had the same contract,
build(coll, ctx, mats), so Opus 5.5 could drop it into the scene and render three test frames. The OpenAI models couldn't: Blender's GPU renderer crashes inside the Codex sandbox, so they wrote everything blind. Two of the three modules crashed on first build, each fixed with one line.
The final cut
- Direction and prompts
- Aman Singh
- Scene scripts
- Opus 5.5 (Anthropic), in Claude Code
- Modules
- gpt-6.1-sol and gpt-6-astra (OpenAI), in Codex
- Renderer
- Blender 5.2 and Cycles, on a MacBook
- Length
- 14 seconds, 336 frames
- Final render
- 2 hours 27 minutes
- Music
- “Call to Adventure” by Kevin MacLeod (incompetech.com), licensed under CC BY 3.0
- Models, textures, skies
- Poly Haven, CC0
What I took from it
- The notes did more than any prompt.
- The WLOP breakdown and the research notes moved the result more than anything I typed. The models did better with rules they could check their work against.
- Drafts first, next time.
- A draft frame takes about 6 seconds and a final one about 25. I found that out after waiting 2.5 hours for a bird I didn't like.
- Opus 5.5 and the OpenAI models were good at different things.
- Opus 5.5 was better at direction, testing and stitching pieces together. gpt-6.1-sol and gpt-6-astra were better at dense, detailed 3D models. Neither side could see its own mistakes without a render.
- I still made the calls.
- Which sky, fewer birds, keeping the Opus 5.5 camera, losing the red road. Those were mine.
- Still open.
- I never ran the Gemini Omni Flash pass, because it needs a paid API key. The gatehouse hides the rose window. And Codex still can't render inside its sandbox, so every OpenAI module goes in blind. The moored ship has also been buried inside the hill since v4: its position was offset twice when it went onto its bobbing rig. It sits at the pier only in the close-up after the credits.
DeadDreams is WLOP's; the study near the top is my rebuild of it for learning, not his work.
Off the flight path
After v7, Opus 5.5 put cameras where the flight never goes, then went in close on the pieces. These skip the film's haze, grade and grain, so they look cleaner and flatter than the video.














The mills, from v4
gpt-6.1-sol wrote both in Codex. Here they are out of the film, so you can walk round them.
Live 3D · drag to turn, pinch or Ctrl-scroll to zoom
Loading the mills…






















