# Make a 3D product ad with Claude Code and headless Blender on an old GPU

PaperChase agent use case (free feed entry), version 1.0. Source: [@0xFizzu on X](https://x.com/0xFizzu/status/2114356857372352630), 2026-10-25.

## What they did

450 frames at 1080x1350 took about 23 minutes on a GTX 1050 Ti, about 3 seconds a frame. The first draft lost the liquid because EEVEE could not refract through two glass layers, and the label floated until it was wrapped onto an invisible cylinder. Rendering the animation in one call instead of a frame-by-frame loop cut test shots from 11.5 to 3.9 seconds per frame. The bottle took four rounds and one shot needed three reframes. They chose plain headless Blender over a Blender MCP because the shot list was fixed.

## Worth knowing

Expect several rounds, not one prompt. Render a few test frames per shot before the full pass, and render with a single animation call. A fixed shot list does not need a live MCP link to Blender; a script is simpler.

## Workflow template

```text
Apply this workflow to [your project]:
1. Write a shot list: duration, camera move and what the viewer should notice per shot
2. Ask the agent for one Python scene script and run it with blender -b --python
3. Render three test frames per shot and fix materials before the full render
4. Render each shot with one animation call, not a loop over frames
5. Join shots, music and text with ffmpeg and keep the render log
Stop and ask me before anything irreversible: deploys, payments, sends or deletes.
```

## Steps

1. **Write a shot list: duration, camera move and what the viewer should no.** Write a shot list: duration, camera move and what the viewer should notice per shot
2. **Ask the agent for one Python scene script and run it with blender -b -.** Ask the agent for one Python scene script and run it with blender -b --python
3. **Render three test frames per shot and fix materials before the full re.** Render three test frames per shot and fix materials before the full render
4. **Render each shot with one animation call, not a loop over frames.** Render each shot with one animation call, not a loop over frames
5. **Join shots, music and text with ffmpeg and keep the render log.** Join shots, music and text with ffmpeg and keep the render log

## Credit

Workflow reported by @0xFizzu on X: https://x.com/0xFizzu/status/2114356857372352630

Summary and template written by PaperChaseWebb in our own words. Questions: mgmt@paperchasewebb.com
