Rendering

Part of the rendering skill: these tools appear once it is loaded — by blender_enable_skill with rendering, or by find_tool when a search returns one of them.

blender_render_settings

Sets the render engine, resolution, samples, denoising, background transparency, pixel filter width (sharpness) and camera; every value optional. Returns the effective settings. Output path, format, depth, codecs and stamps live in blender_set_output; engine details in blender_set_cycles and blender_set_eevee; passes in blender_view_layer.

only adds · every call adds · stays inside Blender.

Parameter Type Required Default Description
engine string? — null EEVEE, CYCLES or WORKBENCH.
resolutionX integer? — null Pixels along this edge, 1 to 4096.
resolutionY integer? — null Pixels along this edge, 1 to 4096.
percentage integer? — null Resolution percentage 1 to 100; 50 renders a quick preview at half size.
samples integer? — null Samples per pixel; Cycles 64 to 1024, EEVEE 16 to 256.
denoise boolean? — null Cycles denoising.
device string? — null Cycles device: CPU or GPU.
filmTransparent boolean? — null Transparent background instead of the world.
filterSize number? — null Pixel filter width in pixels: 1.5 is Blender's default, 1.0 or lower renders sharper and crisper, 2 or more softer.
camera string? — null Camera object to render from.
scene string? — null Scene to act on; the current scene otherwise.
JSON Schema
{
  "type": "object",
  "properties": {
    "engine": {
      "description": "EEVEE, CYCLES or WORKBENCH.",
      "type": [
        "string",
        "null"
      ],
      "default": null
    },
    "resolutionX": {
      "description": "Pixels along this edge, 1 to 4096.",
      "type": [
        "integer",
        "null"
      ],
      "default": null
    },
    "resolutionY": {
      "description": "Pixels along this edge, 1 to 4096.",
      "type": [
        "integer",
        "null"
      ],
      "default": null
    },
    "percentage": {
      "description": "Resolution percentage 1 to 100; 50 renders a quick preview at half size.",
      "type": [
        "integer",
        "null"
      ],
      "default": null
    },
    "samples": {
      "description": "Samples per pixel; Cycles 64 to 1024, EEVEE 16 to 256.",
      "type": [
        "integer",
        "null"
      ],
      "default": null
    },
    "denoise": {
      "description": "Cycles denoising.",
      "type": [
        "boolean",
        "null"
      ],
      "default": null
    },
    "device": {
      "description": "Cycles device: CPU or GPU.",
      "type": [
        "string",
        "null"
      ],
      "default": null
    },
    "filmTransparent": {
      "description": "Transparent background instead of the world.",
      "type": [
        "boolean",
        "null"
      ],
      "default": null
    },
    "filterSize": {
      "description": "Pixel filter width in pixels: 1.5 is Blender\u0027s default, 1.0 or lower renders sharper and crisper, 2 or more softer.",
      "type": [
        "number",
        "null"
      ],
      "default": null
    },
    "camera": {
      "description": "Camera object to render from.",
      "type": [
        "string",
        "null"
      ],
      "default": null
    },
    "scene": {
      "description": "Scene to act on; the current scene otherwise.",
      "type": [
        "string",
        "null"
      ],
      "default": null
    }
  }
}

blender_render_image

Renders the current or a given frame of a scene and view layer to an image file and returns its path, size, duration, peak memory, a preview to look at and exposure statistics. Blender is busy until it finishes and the render cannot be interrupted once it starts — cancelling the call stops the waiting, not the render. Lower the resolution percentage or samples for previews, and use blender_render_job for anything long, which renders in a second Blender and can be cancelled.

only adds · every call adds · stays inside Blender.

Parameter Type Required Default Description
path string yes — Absolute path of the image to write; the extension follows the output format.
frame integer? — null Frame to render; the current frame otherwise.
scene string? — null Scene to act on; the current scene otherwise.
viewLayer string? — null View layer to render alone; every enabled layer otherwise.
preview boolean — true Return a small JPEG of the result as image content, with exposure statistics; false for the path only.
timeoutSeconds integer — 300 Seconds to wait for Blender, 1 to 600.
JSON Schema
{
  "type": "object",
  "properties": {
    "path": {
      "description": "Absolute path of the image to write; the extension follows the output format.",
      "type": "string"
    },
    "frame": {
      "description": "Frame to render; the current frame otherwise.",
      "type": [
        "integer",
        "null"
      ],
      "default": null
    },
    "scene": {
      "description": "Scene to act on; the current scene otherwise.",
      "type": [
        "string",
        "null"
      ],
      "default": null
    },
    "viewLayer": {
      "description": "View layer to render alone; every enabled layer otherwise.",
      "type": [
        "string",
        "null"
      ],
      "default": null
    },
    "preview": {
      "description": "Return a small JPEG of the result as image content, with exposure statistics; false for the path only.",
      "type": "boolean",
      "default": true
    },
    "timeoutSeconds": {
      "description": "Seconds to wait for Blender, 1 to 600.",
      "type": "integer",
      "default": 300
    }
  },
  "required": [
    "path"
  ]
}

blender_render_animation

Renders the frame range as an image sequence or a video. In the background by default: a second Blender renders the same range to the same path, this one stays free, and the reply is a job id that blender_render_job_status follows and blender_render_job_cancel stops. Pass background=false to render here instead, which holds Blender until the last frame and cannot be interrupted — a cancelled tool call stops the waiting, not the render.

only adds · every call adds · stays inside Blender.

Parameter Type Required Default Description
outputPath string yes — Output path: a folder with a prefix for image sequences (/renders/shot_ or /renders/shot_####), a file for FFMPEG. Blender adds the frame number and the extension; a finished file name such as shot_0001.png is refused, pass shot_####.png.
start integer? — null First frame; the scene start otherwise.
end integer? — null Last frame; the scene end otherwise.
step integer? — null Render every nth frame.
fileFormat string? — null PNG, JPEG, OPEN_EXR or FFMPEG for a video.
scene string? — null Scene to act on; the current scene otherwise.
preview boolean — true Return a small JPEG of the result as image content, with exposure statistics; false for the path only.
background boolean — true Render in a second Blender, the default: this one stays free, the reply is a job id and blender_render_job_cancel stops it. False renders here, which blocks Blender until every frame is done and cannot be stopped.
timeoutSeconds integer — 600 Seconds to wait for Blender, 1 to 600.
JSON Schema
{
  "type": "object",
  "properties": {
    "outputPath": {
      "description": "Output path: a folder with a prefix for image sequences (/renders/shot_ or /renders/shot_####), a file for FFMPEG. Blender adds the frame number and the extension; a finished file name such as shot_0001.png is refused, pass shot_####.png.",
      "type": "string"
    },
    "start": {
      "description": "First frame; the scene start otherwise.",
      "type": [
        "integer",
        "null"
      ],
      "default": null
    },
    "end": {
      "description": "Last frame; the scene end otherwise.",
      "type": [
        "integer",
        "null"
      ],
      "default": null
    },
    "step": {
      "description": "Render every nth frame.",
      "type": [
        "integer",
        "null"
      ],
      "default": null
    },
    "fileFormat": {
      "description": "PNG, JPEG, OPEN_EXR or FFMPEG for a video.",
      "type": [
        "string",
        "null"
      ],
      "default": null
    },
    "scene": {
      "description": "Scene to act on; the current scene otherwise.",
      "type": [
        "string",
        "null"
      ],
      "default": null
    },
    "preview": {
      "description": "Return a small JPEG of the result as image content, with exposure statistics; false for the path only.",
      "type": "boolean",
      "default": true
    },
    "background": {
      "description": "Render in a second Blender, the default: this one stays free, the reply is a job id and blender_render_job_cancel stops it. False renders here, which blocks Blender until every frame is done and cannot be stopped.",
      "type": "boolean",
      "default": true
    },
    "timeoutSeconds": {
      "description": "Seconds to wait for Blender, 1 to 600.",
      "type": "integer",
      "default": 600
    }
  },
  "required": [
    "outputPath"
  ]
}

blender_set_world

Sets the world: background colour and strength, an HDRI environment with rotation, and mist. The first thing to fix when renders look dark or flat.

only adds · every call adds · stays inside Blender.

Parameter Type Required Default Description
color array? — null [r, g, b] or [r, g, b, a] with components 0 to 1.
strength number? — null Background light strength; 1 is the default.
hdriPath string? — null Absolute path of an HDRI (.hdr or .exr) to light the scene with; empty string removes it.
rotation number? — null Rotate the HDRI around the vertical axis, in degrees.
mist boolean? — null Enable or disable mist (fog by distance).
mistStart number? — null Distance where mist starts, in metres.
mistDepth number? — null Distance over which mist reaches full density, in metres.
JSON Schema
{
  "type": "object",
  "properties": {
    "color": {
      "description": "[r, g, b] or [r, g, b, a] with components 0 to 1.",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "number"
      },
      "default": null
    },
    "strength": {
      "description": "Background light strength; 1 is the default.",
      "type": [
        "number",
        "null"
      ],
      "default": null
    },
    "hdriPath": {
      "description": "Absolute path of an HDRI (.hdr or .exr) to light the scene with; empty string removes it.",
      "type": [
        "string",
        "null"
      ],
      "default": null
    },
    "rotation": {
      "description": "Rotate the HDRI around the vertical axis, in degrees.",
      "type": [
        "number",
        "null"
      ],
      "default": null
    },
    "mist": {
      "description": "Enable or disable mist (fog by distance).",
      "type": [
        "boolean",
        "null"
      ],
      "default": null
    },
    "mistStart": {
      "description": "Distance where mist starts, in metres.",
      "type": [
        "number",
        "null"
      ],
      "default": null
    },
    "mistDepth": {
      "description": "Distance over which mist reaches full density, in metres.",
      "type": [
        "number",
        "null"
      ],
      "default": null
    }
  }
}