~ same prompt, different LLM — every model gets the same brief in Blender, you judge the render ~
OpenAI / GPT 6 Astra / thinking:max has entered the arena NEW!
Render Window — hero
hero render
camera + framing set up by the AI contestant
3D Viewport — camp-lantern User Persp
LOADING 3D VIEW
$0.02Cost
114sDuration
15Tool calls
16Turns
Blender 5.1.0MCP 1.22026-07-15
Tokens: 134013/2971Vision: Votes W-L-T: 0-8-0DONE ✓
B-BENCH — TRANSCRIPT Google / Gemini 3.1 Flash Lite · r1 · 2026-07-15
RUN LOG — camp-lantern · Google / Gemini 3.1 Flash Lite · r1 · ok
SYSTEM PROMPTthe control — every model on this task got these instructions
PROMPTblender-bench v7HARNESSraw-v2
SHOW FULL PROMPT · 2016 chars
You are participating in Blender-Bench, a public benchmark where AI models complete the same Blender task.

Your result will be compared head-to-head with another model. Anyone on the internet can vote, based only on the published visual outputs they can inspect: the interactive 3D scene and rendered presentation.

Complete the request as well as you can. The benchmark does not prescribe a workflow or visual style; use whichever Blender techniques you consider appropriate. Make the important requirements evident in the published result, save a complete scene, and present the work clearly in every requested output.

The final published capture is rendered by the benchmark from your saved scene using Cycles at 1536 x 1536, 64 samples, denoising enabled, and GPU acceleration when available with a CPU fallback. The saved scene is also exported to GLB with geometry, materials, the contestant camera, and supported lights for interactive inspection. Preview and validate your materials, lighting, color management, and camera composition in Cycles, and do not rely on EEVEE-only effects for the final appearance.

## Harness Instructions

You are operating Blender through the provided tools. The scene starts empty. Build what the user's prompt asks for in the current scene. Work step by step and verify your own work. Before you finish, set up a camera and lighting to frame a single, well-composed presentation image of your result — position and aim the camera, and add or adjust lights so the subject reads clearly. The final benchmark capture overrides the scene render settings and renders in Cycles at 1536x1536, 64 samples, with denoising and GPU acceleration (CPU fallback). Preview and validate materials, lighting, color management, and composition in Cycles; do not rely on EEVEE-only effects. The saved scene is also exported to GLB with geometry, materials, your camera, and supported lights for interactive inspection. When you are finished, reply with the single word DONE and no tool calls.
--TASK camp-lantern: ## Task Complete the following Blender task: <task> A classic camping lantern as a single hero prop: a metal frame with a carry handle, a glass enclosure around a warm glowing core, standing on simple ground. The floor is a recognizable lantern that glows. The ceiling is what the light does: warm light passing through the glass, a soft pool of illumination on the ground, believable metal and g…
28:56>>search_sketchfab_models({"query":"camping lantern"})
28:56<<Error searching Sketchfab models: Communication error with Blender: Unknown command type: search_sketchfab_models
28:58>>generate_hyper3d_model_via_text({"text_prompt":"classic vintage metal camping lantern with glass centered wick, high quality, standalone hero prop"})
28:58<<Error generating Hyper3D task: Communication error with Blender: Unknown command type: create_rodin_job
29:03>>execute_blender_code({"code":"import bpy\n\n# Create Metal Base\nbpy.ops.mesh.primitive_cylinder_add(vertices=32, radius=0.2, depth=0.05, location=(0, 0, 0.025))\nbase = bpy.context.active_object\nbase.name = \"LanternBase\"\n\n# Create Glass\nbpy.ops.mesh.primitive_cylinder_add(vertices=32, radius=0.15, depth=0.3, location=(0, 0, 0.2))\nglass = bpy.context.active_object\nglass.name = \"LanternGlass\"\n\n# Create Top\…)
29:03<<Code executed successfully:
29:07>>execute_blender_code({"code":"import bpy\n\n# Set up Material for Lantern (Metal)\nmat_metal = bpy.data.materials.new(name=\"Metal\")\nmat_metal.use_nodes = True\nnodes = mat_metal.node_tree.nodes\nnodes[\"Principled BSDF\"].inputs['Metallic'].default_value = 1.0\nnodes[\"Principled BSDF\"].inputs['Roughness'].default_value = 0.3\nnodes[\"Principled BSDF\"].inputs['Base Color'].default_value = (0.2, 0.2, 0.2, 1)\n\n# …)
29:07<<Error executing code: Communication error with Blender: Code execution error: bpy_prop_collection: attribute "links" not found
29:11>>execute_blender_code({"code":"import bpy\n\n# Set up Material for Lantern (Metal)\nmat_metal = bpy.data.materials.new(name=\"Metal\")\nmat_metal.use_nodes = True\nnodes = mat_metal.node_tree.nodes\nnodes[\"Principled BSDF\"].inputs['Metallic'].default_value = 1.0\nnodes[\"Principled BSDF\"].inputs['Roughness'].default_value = 0.3\nnodes[\"Principled BSDF\"].inputs['Base Color'].default_value = (0.2, 0.2, 0.2, 1)\n\n# …)
29:11<<Error executing code: Communication error with Blender: Code execution error: bpy_prop_collection: attribute "links" not found
29:13>>execute_blender_code({"code":"import bpy\n\n# Setup Camera for Product Shot\nbpy.ops.object.camera_add(location=(1.0, -1.0, 0.8))\ncamera = bpy.context.active_object\ncamera.rotation_euler = (1.1, 0, 0.785)\nbpy.context.scene.camera = camera\n\n# Simple Lighting\nbpy.ops.object.light_add(type='AREA', location=(0.5, 0.5, 2))\narea_light = bpy.context.active_object\narea_light.data.energy = 100\narea_light.data.size = 2…)
29:13<<Code executed successfully:
29:16>>get_viewport_screenshot({"user_prompt":"check the lantern scene status"})
29:17<<
29:17imgimage delivered — get_viewport_screenshot
29:21>>execute_blender_code({"code":"import bpy\n\n# Set background to dark\nbpy.context.scene.world.node_tree.nodes[\"Background\"].inputs[0].default_value = (0, 0, 0, 1)\n\n# Ensure the lantern is visible\nfor obj in bpy.context.scene.objects:\n if \"Lantern\" in obj.name or \"LightCore\" in obj.name:\n obj.scale = (2, 2, 2)\n"})
29:21<<Code executed successfully:
29:25>>get_viewport_screenshot({"user_prompt":"check scaled lantern scene"})
29:26<<
29:26imgimage delivered — get_viewport_screenshot
29:31>>execute_blender_code({"code":"import bpy\n\n# Setup Camera for Product Shot\ncam = bpy.data.objects['Camera']\ncam.location = (1.5, -1.5, 1.0)\ncam.rotation_euler = (1.1, 0, 0.785)\nbpy.context.scene.camera = cam\n\n# Adjust Light to be more dramatic\nlight = bpy.data.objects['Point']\nlight.location = (0, 0, 0.4)\nlight.data.energy = 200\n\n# Remove the Area Light\nbpy.data.objects.remove(bpy.data.objects['Area'], do…)
29:31<<Error executing code: Communication error with Blender: Code execution error: 'bpy_prop_collection[key]: key "Point" not found'
29:36>>get_scene_info({"user_prompt":"find list of objects to troubleshoot finding point light"})
29:36<<{ "name": "Scene", "object_count": 8, "objects": [ { "name": "LanternBase", "type": "MESH", "location": [ 0.0, 0.0, 0.03 ] }, { "name": "LanternGlass", "type": "MESH", "location": [ 0.0, 0.0, 0.2 ] }, { "name": "LanternTop", "type": "MESH", "location": [ …
29:41>>execute_blender_code({"code":"import bpy\n\n# Adjust Camera position for a better view\ncam = bpy.data.objects['Camera']\ncam.location = (1.5, -1.0, 0.8)\ncam.rotation_euler = (1.2, 0, 0.8)\n\n# Remove the Area Light if it exists\nif \"Area\" in bpy.data.objects:\n bpy.data.objects.remove(bpy.data.objects['Area'], do_unlink=True)\n\n# Add Point Light inside the lantern explicitly\nbpy.ops.object.light_add(type='POI…)
29:41<<Code executed successfully:
29:47>>get_viewport_screenshot({"user_prompt":"check refined lighting and camera setup"})
29:48<<
29:48imgimage delivered — get_viewport_screenshot
29:57ai>Emission
29:57>>execute_blender_code({"code":"import bpy\n\n# Fix the materials since node access failed\n# Instead of nodes, simply set the diffuse color and metallic/roughness properties on the materials\n# This is a robust way to set simple materials via Python\n\n# Material Metal\nmat_metal = bpy.data.materials.get(\"Metal\")\nif mat_metal:\n # Use Principled BSDF if possible, Blender 4.0+\n bsdf = mat_metal.node_tree.nodes…)
29:57<<Code executed successfully:
30:04>>get_viewport_screenshot({"user_prompt":"preview with final material setup"})
30:05<<
30:05imgimage delivered — get_viewport_screenshot
30:11ai>DONE
30:11--status: ok · DONE declared
>
FULL CALL INSPECTOR
OPEN RAW JSONL ↗
0 SHOWN
LOADING COMPLETE TRANSCRIPT…
Votes cast on this bench: 000482 · 157 runs · 25 contestants
Best viewed with Netscape Navigator 4.07 at 800×600 · real runs, live ratings