Grey Box Studio
A Whole 3D Editor Hiding in a Node With No Outputs
- studio
Queue this node and nothing happens. That's not a bug - it's the entire design. Grey Box Studio is an editor wearing a node as a disguise, and the node's job is to exist so the panel has somewhere to live.
What it is for
You use it to block a shot before H3 sees it: build a set out of plain shapes, put the cast on labelled marks, key a camera for each shot, then render grey video that H3 uses as a layout and motion reference. Same renderer as Grey Box Shot; the difference is that this one gives you a viewport, a timeline, an outliner and an inspector to work in.
The node itself has a single input, studio, of the pack's own NYNXZH3_GREY_BOX_STUDIO type, and no outputs at all - execute literally returns an empty result. Its schema description says the quiet part: "An editor: nothing to run. Renders come from its Render menu (or Grey Box Shot)."
How it works under the hood
The editor pops out into a ZenKit panel and shares one session with the node. The panel is a Vue app built from frontend/; the node is the anchor that keeps it attached to a workflow.
Everything you build is plain JSON on disk - no binary scene format, no database. A Codex show keeps its grey box in nynxz-codex/<show>/greybox/, split into cast.json, sets/<set>.json, props/<prop>.json and scenes/<scene>.json. That matters for two reasons. First, changes save about half a second after you stop dragging, and edits made to the files outside the editor get picked up within a few seconds - you can have the JSON open in an editor beside it. Second, agents can drive it: ZenAgent exposes greybox.projects, greybox.read, greybox.act (one action list for shapes, marks, actors, keys, shots and cameras), greybox.look for a sheet or a single frame, and greybox.new_scene. When an editor is open, those edits go through it and land on screen as one undo step.
There's a command line too, if you'd rather work outside ComfyUI entirely:
cd ComfyUI
.venv/bin/python custom_nodes/ComfyUI-NynxzH3/nodes/greybox/cli.py sheet path/to/scenes/scene.json
.venv/bin/python custom_nodes/ComfyUI-NynxzH3/nodes/greybox/cli.py frame path/to/scenes/scene.json --shot 1A --at 2.4
.venv/bin/python custom_nodes/ComfyUI-NynxzH3/nodes/greybox/cli.py video path/to/scenes/scene.json --shot 1A
The build-and-look loop is the point: sheet is every shot as a row of frames plus the plan from above, frame is one still for checking a detail, video writes the mp4. A sheet takes about a second on CPU.
Renders from the studio's Render menu go through a different, internal node on the queue - that's why a mystery Grey Box Render (internal) node shows up in your history after you click it.
Installing it
Same pack install as the rest:
cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-NynxzH3
Restart ComfyUI (0.30.0+). Building from source needs pnpm install && pnpm build; ComfyUI Manager's package already ships the compiled panel. ZenKit is listed as optional - that's the framework the pop-out panel is built on, so if the panel misbehaves, check ZenKit is current before blaming the pack. Nothing else to install: grey box rendering is torch and exact ray–shape intersection, no meshes, no third-party 3D lib.
Where people get stuck
"I queued it and got nothing." Correct behaviour. It renders from its own menu, not from the graph.
"I need the grey video in a workflow." Use Grey Box Shot - same renderer, real sockets, so the frames and depth can go straight into your H3 chain.
The panel doesn't open or comes back blank. Almost always the frontend, not the Python: either the web/ bundle wasn't built (hand-cloned) or the browser is serving a stale one. Hard-refresh, then check the console.
Layout looks mirrored. Y is up, yaw 0 faces +Z, and looking toward +Z, +X is on your left. Check the plan view rather than trusting your instinct - the docs say so, and they're right.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| studio | NYNXZH3_GREY_BOX_STUDIO | — |
Outputs (0)
No outputs