Files
brett b8b71d1e16 Add Blender plugin (#134)
* Unbind hostname to allow localhost submissions

* Fix issue where multiple cameras were outputting to the same directory

* Add Blender plugin
2026-06-06 14:32:48 -05:00
..
2026-06-06 14:32:48 -05:00
2026-06-06 14:32:48 -05:00

Zordon Blender Add-on

Submit the current Blender file to a Zordon render server from Blender's Render properties panel.

Features

  • Submit the current .blend file directly to POST /api/jobs.
  • Choose a configured Zordon server from Blender.
  • Test the server connection before submitting.
  • Save the current file before upload.
  • Default job and output names to the .blend filename.
  • Use the current scene frame range, render resolution, FPS, and image format.
  • Select one or more cameras for submission.
  • Submit multiple selected cameras as camera-specific child jobs.

Install

  1. In Blender, open Edit > Preferences > Add-ons.
  2. Click Install....
  3. Select addons/blender/zordon_blender.zip.
  4. Enable Zordon Render Submitter.

Configure Servers

Use Discover Servers to find Zordon servers advertised with Zeroconf. Discovered servers are merged into the configured server list.

You can also open the add-on preferences and edit Servers manually.

Use a comma-separated list:

localhost:8080, render-node.local:8080

The selected server appears in Properties > Render > Zordon.

If Blender is running on the same machine as Zordon, localhost:8080 should work. If Zordon is running on another machine, use that machine's hostname or IP address.

Start the Zordon server before testing the connection:

python server.py

Discovery first tries Python's zeroconf package if it is available inside Blender. If it is not available, the add-on falls back to the macOS dns-sd command when present.

Submit A Job

  1. Open or save a .blend file.
  2. Choose a Zordon server in Properties > Render > Zordon.
  3. Click Test Connection.
  4. Set the job name, output name, and notes if needed.
  5. Choose one or more cameras. At least one camera is always required.
  6. Click Submit Current File.

The addon uploads the current .blend to POST /api/jobs as multipart form data. It uses the current scene frame range, render resolution, FPS, and image format.

Job name and output name default to the current .blend filename.

If one camera is selected, the job renders that camera. If multiple cameras are selected, the addon submits camera-specific child jobs so each camera renders as its own Zordon job.

Use All to select every camera or Active Only to render just the active scene camera.

Camera Behavior

At least one camera must be selected. The add-on prevents unchecking the final selected camera.

When one camera is selected, the add-on sends a single job with:

{
  "args": {
    "camera": "Camera"
  }
}

When multiple cameras are selected, the add-on sends child_jobs. Each child job gets its own camera argument and output name suffix, such as:

{
  "name": "scene_Camera-001",
  "output_path": "scene_Camera-001",
  "args": {
    "camera": "Camera.001"
  }
}

Troubleshooting

Could Not Reach Zordon

Make sure the Zordon server is running and reachable from Blender.

Check from a terminal:

curl http://localhost:8080/api/heartbeat

If the server is remote, replace localhost with the server hostname or IP.

No Cameras Found

Add at least one Blender camera to the scene before submitting.

Output Files Already Exist

Multiple camera jobs should use camera-specific output names. If they collide, make sure the Zordon server includes the output-path fix that preserves child job output_path values.

Packaging

The add-on source lives at:

addons/blender/zordon_blender/

The installable archive is:

addons/blender/zordon_blender.zip

Rebuild the archive from addons/blender:

python3 -m zipfile -c zordon_blender.zip zordon_blender

Notes

  • The add-on is dependency-free and uses Blender's bundled Python standard library.
  • Only http:// Zordon servers are currently supported.
  • Save Before Submit is enabled by default so the uploaded file matches the current Blender state.