ComfyUI Node

Scene

A named container for beats, and where transitions quietly happen

By wgedeon·Created 12 months ago·Updated 10 months ago· 2
Scene
  • scene_beat_1
  • scene_beat_2
  • scene
titleScene #1
positive
negative
filename_part#1

Scene is the middle layer of the pack's "play" tree: it groups a couple of scene-beats under one title and one shared prompt flavor, and it hands that bundle up to a Play-Act. In the author's theatre model, a scene is where something changes - a location shift, a character entering or leaving - "that would result in crossfade, cut, fade_to_black, etc." The beats inside carry the consistent look; the scene is the container that says "all of this belongs together."

Honestly, it's a thin node. It doesn't render anything, it doesn't compute frames - its only real work is bundling. But it matters because the play-level loop treats scenes as organizational boundaries: each scene gets its own frames_count computed by summing its beats, and its filename_part slots into the output naming. If you're sequencing a story, this is your chapter-within-a-chapter grouping.

The inputs that matter

  • positive, negative - the scene's shared prompt text, applied on top of what each beat brings. Again: plain strings, not conditioning. There's no encoding inside this pack; the prompts flow down to the sampler as text.
  • title (default "Scene #1") - names the scene in the console traversal and keeps your graph readable.
  • filename_part (default "#1") - inserted into every chunk filename that comes out of this scene's beats. fot_play_#1_#1_b1_0_0 means filename_base fot_play, act part #1, scene part #1, beat part b1. Keep it tidy.
  • scene_beat_1, scene_beat_2 (optional) - the beats, fed from Scene-Beat nodes. Only two slots, hard-coded; the README lists "make scene_beats_* a dynamic list input (currently hard-coded limit)" as a known TODO.

The scene output (type SCENE) plugs into a Play-Act's scene_1/scene_2 inputs.

Installing

Same pack, same steps. ComfyUI Manager → search "comfyui_play_traversal", or:

cd ComfyUI/custom_nodes
git clone https://github.com/wgedeon/comfyui_play_traversal
pip install -r requirements.txt

Then restart. The requirements list is chunky (diffusers, accelerate, onnxruntime, opencv-python, spandrel, peft, clip_interrogator, sentencepiece, matplotlib, lark), so the first install is the slow part. No models are downloaded by the pack.

Where people get burned

  • The two-beat ceiling. Want three beats in a scene? You can't - not with one Scene node. You'll need to fake it with more scenes or restructure. Known limitation, not a bug you've introduced.
  • Gaps break the tree. The list builders reject holes: if you wire scene_beat_2 but leave scene_beat_1 empty you'll get "Found gap in scene beats, please defragment!" Fill slots in order.
  • Every node in the tree has to exist. Play (Start) requires at least one act, which requires at least one scene, which requires at least one beat. An empty tree is an error, not an empty video.
  • Don't expect conditioning sharing yet. The README's stated goal is "sharing conditionings with sub-tree nodes," but the current build passes text strings through, not encoded conditioning. If you were hoping to reuse one CLIP encoding across the tree, that's the roadmap talking, not the code.

It's a small, young pack from a single dev - treat the console's tree-traversal prints as the documentation. If a scene title doesn't show up in the logs, your scene isn't in the play.

CategoryFeller of Trees/Play Traversal

Inputs (6)

NameTypeDefaultDescription
titleSTRINGScene #1
positiveSTRING
negativeSTRING
filename_partSTRING#1
scene_beat_1optSCENE_BEAT
scene_beat_2optSCENE_BEAT

Outputs (1)

NameTypeDescription
sceneSCENE