Files
vfxreview/BlenderPanel
twotalesanimation 3733c0c4fa
Deploy / deploy (push) Successful in 5m59s
fix(blender): send a real User-Agent so Cloudflare stops blocking the add-on
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>
2026-08-15 19:11:52 +02:00
..

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:

.\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/*.