Acting
UBActingNode is Acting under an old UB name — and it's where multi-actor chaining happens
- stage
- actor_color
- Acting Data
Before anything else: UBActingNode is not a separate node. It's the old class name for ActingNode in the ComfyUI-scene-camera-action pack, registered as a legacy alias so workflows saved under the pack's earlier identity - Unboring 3D Studio / UB-3D-Studio, hence the "UB" - keep loading today. If you open an old graph and see UBActingNode on the canvas, leave it alone; it's the same code as the current Acting node. In new work, just add "Acting."
Why this alias page is worth your time anyway: Acting is where this pack's most under-documented feature lives, and the name confusion tends to surface right when people start playing with it - multi-actor chaining.
The thing people miss: chaining actors
One Acting node = one actor. But the pack lets you sequence several actors on the same stage by connecting nodes in series: the stage input on Acting accepts either a Staging node's Stage Data or the Acting Data output of a previous Acting node. Wire Acting ➔ Acting ➔ Acting and each downstream node adds its own recorded actor to the growing list while the earlier takes replay as synchronized ghosts. That's how the pack's multi-actor example gets a human and a quadruped sharing one industrial-ruin set, each starting from its own spawn point, on one synchronized timeline.
Under the hood it's all JSON chaining: each Acting node's output is a serialized bundle containing the stage geometry plus an actors array. Connect a second Acting node and it parses that list, appends its own freshly-recorded trajectory, and passes the whole thing forward - which is why the wire types are the loose * wildcard rather than a typed video or image socket. Nothing touches pixels here; you're building choreography data that Directing will later film.
The fields you'll actually set
actor_type-human,car, orquadruped.actor_speed(1–30, default 10),actor_scale(0.3–2.0, default 1) - note the quadruped defaults to a smaller scale if you don't set it, so a dog-sized actor doesn't get treated like a giant.duration(4–15s, default 7) - recording window.actor_color- cosmetic but genuinely useful in a multi-actor graph: color-coding who's who in the viewport and the ghost replays saves real sanity when three actors share a stage.
Recording itself is the fun part - WASD drive in a browser three.js viewport, practice-rehearsal loop first, then a recorded take. The one hard rule: Directing downstream will refuse to run if no actor has a recorded trajectory, so a chained graph needs every actor in the chain to have a take, not just a connection.
Install & context
Pack-wide install: ComfyUI Manager → "Scene Camera Action", or clone + pip install -r requirements.txt into ComfyUI/custom_nodes/, then restart - nodes appear under scene-camera-action. No model downloads or keys; the rigged actors ship in the repo. One honest note: the pack is new and small, so there isn't a deep well of community workflows to copy yet - you're on the leading edge, which is also the fun part of a tool this playable.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| actor_type | COMBO | human | Select between Human, Car, and Quadruped |
| actor_speed | FLOAT | 101–30 | Movement speed of the 3D actor |
| actor_scale | FLOAT | 1.000.3–2 | Scale factor for the 3D actor (0.3 to 2.0) |
| duration | FLOAT | 74–15 | Recording duration in seconds |
| stageopt | * | Connect a Staging node or previous Acting node for multi-actor chaining | |
| actor_coloropt | COLOR | #F1DFBF | Color for the 3D actor mesh |
| motion_dataopt | STRING | Serialized JSON recording of actor acting (hidden) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Acting Data | * | — |