blender/agent-harness/BLENDER.md
Blender is a 3D creation suite supporting modeling, animation, rendering,
compositing, and video editing. Its native .blend format is a custom binary
format. The CLI uses a JSON scene description that can generate Blender Python
(bpy) scripts for actual rendering.
┌──────────────────────────────────────────┐
│ Blender GUI │
│ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ 3D View │ │ Timeline │ │ Props │ │
│ └────┬─────┘ └────┬─────┘ └────┬────┘ │
│ │ │ │ │
│ ┌────┴─────────────┴────────────┴─────┐ │
│ │ bpy (Blender Python API) │ │
│ │ Full scripting access to all │ │
│ │ objects, materials, modifiers │ │
│ └─────────────────┬───────────────────┘ │
│ │ │
│ ┌─────────────────┴───────────────────┐ │
│ │ Render Engines │ │
│ │ Cycles | EEVEE | Workbench │ │
│ └─────────────────────────────────────┘ │
└──────────────────────────────────────────┘
Since .blend is binary, we maintain scene state in JSON and generate
complete bpy Python scripts that Blender can execute:
blender --background --python generated_script.py
| Domain | Module | Key Operations |
|---|---|---|
| Scene | scene.py | Create, open, save, profiles, info |
| Objects | objects.py | Add primitives, transform, duplicate, remove |
| Materials | materials.py | Principled BSDF, color, metallic, roughness |
| Modifiers | modifiers.py | Subdivision, mirror, array, bevel, boolean |
| Lighting | lighting.py | Cameras (perspective/ortho), lights (point/sun/spot/area) |
| Animation | animation.py | Keyframes, frame range, FPS, interpolation |
| Render | render.py | Cycles/EEVEE settings, resolution, samples, output |
| Session | session.py | Undo/redo with deep-copy snapshots |
8 modifiers with full parameter validation:
subdivision_surface: levels, render_levelsmirror: axis_x/y/z, use_bisectarray: count, offsetbevel: width, segmentssolidify: thickness, offsetdecimate: ratio, typeboolean: operation (union/intersect/difference), objectsmooth: factor, iterations7 presets covering Cycles, EEVEE, and Workbench:
cycles_default: 128 samples, denoisingcycles_high: 4096 samples, denoising, transparent filmcycles_preview: 32 samples, fast previeweevee_default: 64 sampleseevee_high: 256 samples, bloom, AO, SSReevee_preview: 16 samplesworkbench: Flat/studio lighting previewBlender's Python API (bpy) provides complete access to all functionality.
The generated scripts create the exact scene described in JSON, then render.
No translation gap — bpy is the native API.
The render execute command generates a complete Python script:
Generated scripts are validated as syntactically correct Python in tests.