Staging
StageNode is Staging's old name — the real topic is where your stages live on disk
- Stage Data
Same story as the other alias pages in this pack, so let's get it out fast: StageNode is an early/legacy name for StagingNode in ComfyUI-scene-camera-action. Loaded a workflow that references it? It works - the pack keeps old class registrations alive (alongside SceneNode, UBStagingNode, and the UB* acting/directing names) so saved graphs survive renames. Build something new and you'll pick Staging from the node menu instead; it's literally the same class.
What's actually worth reading on this page is the part the "Stage" name points at: stages are files, and knowing where they live is half of using this node well.
Where your stages actually live
A stage is a small JSON document (the format calls itself a cube_stage: a list of nodes, each a block or group with position/rotation/scale). Two places on disk feed the node's preset dropdown:
- The pack's
presets/folder -ComfyUI/custom_nodes/ComfyUI-scene-camera-action/presets/. This is where the bundled environments ship (race_track.json,industrial_ruin.json,liberty_beach.json,courthouse_square.json,gas_station.json,test-collider.json, and more) and where the widget's Save button writes your own. ComfyUI/input/staging_stages/- your input folder, which the node also scans. Drop a shared stage JSON here and it shows up in the dropdown without touching the pack directory at all.
That second path is the one to know about. It means sharing a stage is as easy as passing a JSON file - same culture as sharing a workflow, one file does the whole gray-box set. It also means a "where did this preset come from" mystery usually has a two-folder answer.
What you do with a stage
The node's wire surface stays minimal: one optional stage_data string input and a Stage Data output. You pick or build the stage in the embedded three.js viewport (orbit left-drag, pan right-drag, scroll zoom, shift-click multi-select), then the output feeds the pack's Acting node, where an actor drives across the geometry you staged. The whole thing runs in-browser on WebGL - no model download, no GPU on the server, which is why the pack's example pipeline can run with 0 AI models until the final video step.
Install
Manager (search "Scene Camera Action") or:
cd ComfyUI/custom_nodes
git clone https://github.com/arturitu/ComfyUI-scene-camera-action.git
pip install -r ComfyUI-scene-camera-action/requirements.txt
Restart, look in the scene-camera-action category. Windows portable users run the pip line with python_embeded\python.exe -m pip.
Watch out for
Don't hand-edit a preset's JSON and expect the widget to be thrilled - the viewport loads geometry and hierarchy from that file, and a typo'd transform or an id you duplicated can make a block vanish or a scene fail to load cleanly. If a downloaded stage does nothing when you pick it, it's usually not a valid cube_stage document. Back up before you overwrite, and treat the Save button as the source of truth. Old name, new habit: in any fresh workflow, it's Staging.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| stage_dataopt | STRING | Serialized JSON data of the stage configurations |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Stage Data | * | — |