3733c0c4fa
Deploy / deploy (push) Successful in 5m59s
Submitting failed with a 403 before the request reached the server: Cloudflare error 1010, a browser-signature ban. Python's urllib identifies itself as "Python-urllib/3.x", which is exactly the scripted signature that rule targets. The AE panel was unaffected because curl sends curl/8.x, and the worker because .NET sends its own. Verified against the live zone, same request and token, only the agent changed: Python-urllib/3.11 gets 403 while VFXReviewBlender/1.0.1 gets 200 — as do curl and a browser agent. Naming the tool is also the honest thing: the studio's logs should say what is calling them, and the version travels with it. A Cloudflare block is also no longer reported to the artist as a wall of JSON about browser signatures — it says the firewall stopped the request before it reached the server, and to ask the pipeline TD. Add-on 1.0.1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
97 lines
3.7 KiB
Markdown
97 lines
3.7 KiB
Markdown
# VFXReview — Blender Submit
|
|
|
|
A Blender add-on that queues the open `.blend` on the studio render farm instead
|
|
of rendering it locally. Ctrl+F12, but on the farm.
|
|
|
|
---
|
|
|
|
## What a Blender job is (and is not)
|
|
|
|
Deliberately the simplest thing in the pipeline: **a queue entry and nothing
|
|
more**. It has no Export, takes no shot version, and is never validated, QC'd or
|
|
delivered. The `.blend` is expected to be ready to render — output path, format
|
|
and frame range already set — and the farm just runs it.
|
|
|
|
That is the whole difference from an After Effects export, which is a shot
|
|
submission and carries the full lifecycle behind it.
|
|
|
|
---
|
|
|
|
## Install
|
|
|
|
1. **Edit → Preferences → Add-ons → Install…** and pick `vfxreview_submit.py`.
|
|
2. Enable **Render: VFXReview — Submit Render**.
|
|
3. Expand its preferences and set:
|
|
|
|
| Setting | Value |
|
|
|---|---|
|
|
| **Server URL** | `https://review.twotalesvfx.com` |
|
|
| **API Key** | matches `API_SECRET_KEY` on the server (same key the AE panel uses) |
|
|
| **Artist Email** | recorded against the job so the queue shows who submitted it |
|
|
|
|
The panel appears under **Properties → Output → VFXReview**.
|
|
|
|
---
|
|
|
|
## Submitting
|
|
|
|
1. **Refresh Projects** (the circular arrow) and pick the project.
|
|
2. Optionally set a **Label** — defaults to the `.blend` filename, and is what
|
|
the render queue shows, since there is no shot code.
|
|
3. **Urgent** makes the job claimable outside the render window, ahead of normal
|
|
work.
|
|
4. **Submit to Render Farm**.
|
|
|
|
The panel shows the frame range, engine and output path it will send, read from
|
|
the file as saved. Nothing is changed on submission.
|
|
|
|
**The file must be saved first.** The farm opens the `.blend` from disk, so
|
|
unsaved changes would render the previous state without warning — the add-on
|
|
refuses to submit a dirty file rather than let that happen.
|
|
|
|
Track the job on the web app under **Pipeline → Blender renders**: live
|
|
progress, current frame, ETA and the machine running it, with cancel and requeue.
|
|
|
|
---
|
|
|
|
## Which machines can render it
|
|
|
|
Only workers with `blenderPath` set in their `config.json` and the executable
|
|
present. The worker reports Blender at registration and the server hands
|
|
`BLENDER_RENDER` jobs only to machines that have it — a machine without Blender
|
|
can never claim work it could only fail.
|
|
|
|
Verify on a worker with:
|
|
|
|
```powershell
|
|
.\VFXReviewWorker.exe --check
|
|
```
|
|
|
|
Blender is listed as optional there: a machine without it stays perfectly valid
|
|
for After Effects work.
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
**Paths must resolve on the render machine.** The `.blend` path and its output
|
|
path are submitted as the artist sees them; the worker applies its own
|
|
`pathMappings` before opening the file. A path on a drive letter the render
|
|
account cannot see is the most common reason a job fails immediately.
|
|
|
|
**Renders as saved.** The add-on sends the scene's own settings. The manifest
|
|
supports overrides (samples, resolution %, device, engine) for future use, but
|
|
nothing in the UI sets them today — one place for render settings is the point.
|
|
|
|
**Exit code 0 with no frames is treated as a failure.** Blender exits cleanly
|
|
when a frame range is empty or an output path is unwritable, so the worker
|
|
checks that frames were actually saved before reporting success.
|
|
|
|
**The add-on sends its own User-Agent** (`VFXReviewBlender/<version>`). Python's
|
|
`urllib` otherwise identifies itself as `Python-urllib/3.x`, which Cloudflare
|
|
blocks outright as a scripted signature — a 403 with error 1010 before the
|
|
request ever reaches the server. Verified against the live zone: `Python-urllib`
|
|
gets 403, the add-on's own agent gets 200. If a future Cloudflare rule blocks it
|
|
anyway, the add-on says so in plain language rather than showing the raw JSON,
|
|
and the fix is a WAF allow rule on the agent or on `/api/ext/*`.
|