2 minute read

Simon Willison recently described a small experiment that says more about the direction of software than its subject. He installed Blender on a Mac, asked Codex to render “a pelican riding a bicycle”, then followed up with requests for a background and more flair. The result came from Blender’s Python API, rather than a specialised 3D model generator. The agent wrote and ran the code, inspected the output, and revised the scene. Simon’s post includes the actual project and scripts.

The interesting part is the transfer of a working pattern between disciplines. Coding agents began with repositories, tests, and command lines. The same loop now applies to a 3D scene, a research pipeline, a spreadsheet, or a simulation: understand the current state, make a change, run the tool, inspect the result, and continue. The surface vocabulary changes, while the underlying discipline is iterative work against a live artefact.

We often think about boundaries between disciplines in terms of emergence. Within certain parameters, simple interactions converge into something useful and difficult to predict from the individual parts. At the nanoscale, physical behaviour leads us towards quantum mechanics. Neurons interacting with one another produce the complex behaviour we call intelligence.

Something similar is happening when language models meet tools with a rich internal structure. Blender has objects, materials, cameras, lights, geometry, animation, rendering, and export. All of these can be manipulated through code. The model does not need to understand every panel in the user interface. It needs to map an intention onto the tool’s language, then respond to what the tool produces.

Several small projects are exploring this space. Hugging Face’s MeshGen lets agents control Blender through natural language, with local and remote model backends. MCP for Blender connects Blender to LLM clients through structured tools. LLM-Blender-Agent uses function calling to control scenes, materials, textures, and external model-generation services.

These projects are still uneven. Some are prototypes, some require technical setup, and the output can be unreliable. That is exactly why they are useful to watch. They show what happens when a capable language interface sits in front of a deep but difficult tool.

The opportunity is larger than adding a chatbot to existing software. A financial modelling environment could expose its assumptions and calculations to an agent. A CAD system could turn manufacturing constraints into editable designs. A data platform could let an agent build, test, and revise an analytical pipeline. A video editor could accept a rough narrative and return an editable timeline.

The common requirement is a tooling layer that maps language onto a structured system while preserving inspection, control, and repeatability. The more explicit the system’s operations, the more useful the agent becomes. The more destructive those operations are, the more important it is to review generated code before it runs on your machine.

Blender makes the pattern unusually visible because the output is visual. You can see the scene, render it, reject it, and ask for another version. The result comes from the interaction between the model and the tool. Neither one is enough on its own.

I keep coming back to the idea that agents will become most useful inside well-structured worlds. Blender may be an early example of what happens when a complex professional tool becomes expressible through language without giving up its underlying depth.