mirror of
https://github.com/blw1138/Zordon.git
synced 2026-06-09 13:39:24 -05:00
Add Blender plugin (#134)
* Unbind hostname to allow localhost submissions * Fix issue where multiple cameras were outputting to the same directory * Add Blender plugin
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
# 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:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```text
|
||||
addons/blender/zordon_blender/
|
||||
```
|
||||
|
||||
The installable archive is:
|
||||
|
||||
```text
|
||||
addons/blender/zordon_blender.zip
|
||||
```
|
||||
|
||||
Rebuild the archive from `addons/blender`:
|
||||
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user