ComfyUI Node

Acting

UBActingNode is Acting under an old UB name — and it's where multi-actor chaining happens

By arturitu·Created 2 months ago·Updated 19 days ago· 45
Acting
  • stage
  • actor_color
  • Acting Data
actor_typehuman
actor_speed10
actor_scale1.00
duration7
motion_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, or quadruped.
  • 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.

Categoryscene-camera-action

Inputs (7)

NameTypeDefaultDescription
actor_typeCOMBOhumanSelect between Human, Car, and Quadruped
actor_speedFLOAT101–30Movement speed of the 3D actor
actor_scaleFLOAT1.000.3–2Scale factor for the 3D actor (0.3 to 2.0)
durationFLOAT74–15Recording duration in seconds
stageopt*Connect a Staging node or previous Acting node for multi-actor chaining
actor_coloroptCOLOR#F1DFBFColor for the 3D actor mesh
motion_dataoptSTRINGSerialized JSON recording of actor acting (hidden)

Outputs (1)

NameTypeDescription
Acting Data*