Scene Backdrop
Save a reusable background so your chunks all share the same world
- workspace
- image
- image_latent
- image_depthmap
Scene Backdrop is the pack's persistence layer for backgrounds. It takes a reference image, an encoded latent, and/or a depth map, bundles them with some prompt text and a seed, and writes them to disk under a named folder inside your ComfyUI output directory - <output>/workspaces/<workspace>/scene_backdrops/<name>/. The idea: one stable backdrop, generated once, reused across every chunk of your play so the scene's world doesn't drift between batches.
This is the pack's answer to a very real video problem - continuity across chunks is hard, and a fixed reference image + depth map is a cheap, reliable anchor. The README's whole thesis is "transmission of what's needed to ensure continuity between video chunks," and the backdrop is part of that toolkit. You'd generate a nice beach background once, save it here, and let every batch condition on the same reference instead of hoping the model redraws the same beach from text every time.
How it works
It's an output node - it has no outputs at all, it just writes files. On execution it:
- Creates the folder
<output>/workspaces/<workspace_codename>/scene_backdrops/<name>/. - Saves whatever you fed it: an
IMAGEtobackdrop.png, aLATENTtobackdrop_latent.pt, a depth map image tobackdrop_depthmap.png. - Writes
backdrop.jsonwith thename, prompt text,seed, and the saved file paths.
The sibling node Scene Backdrop Data reads it all back later. Nothing is returned to the graph - which is why ComfyUI treats it as a terminal/output node and why it can sit at the edge of your graph.
The inputs that matter
workspace(required,WORKSPACE) - here's the gotcha: this pack doesn't define the WORKSPACE type. It comes from the author's separate project,wgedeon/_comfyui_user_workspaces("ComfyUI Workspaces"), which is what supplies the workspace object with itscodename. You must install that sibling pack too, or these backdrop nodes won't even connect. It's git-clone-only (the author says it can't go on the registry because its name starts with an underscore).name(default "backdrop") - the folder name underscene_backdrops/. Keep it short and filesystem-safe.positive,negative- free-text descriptions stored alongside the image; Scene Backdrop Data hands them back if you want to reuse them as prompts.image,image_latent,image_depthmap(all optional) - feed at least one of these or the node writes an empty backdrop folder.imageis the common one;image_depthmapis what you'd use to lock composition via depth conditioning in the sampler.seed- stored in the JSON for reproducibility.
Installing
Install both halves:
cd ComfyUI/custom_nodes
git clone https://github.com/wgedeon/comfyui_play_traversal
git clone https://github.com/wgedeon/_comfyui_user_workspaces
pip install -r comfyui_play_traversal/requirements.txt
Restart ComfyUI. comfyui_play_traversal is also on ComfyUI Manager (search the title), but the workspaces pack is not in the registry - that one's a manual clone. Expect a heavy first install (diffusers, accelerate, onnxruntime, opencv-python, spandrel, peft, clip_interrogator, sentencepiece, matplotlib, lark).
Where people get burned
- Missing WORKSPACE. The node exists in your palette but every input is red "unknown type" until the workspaces pack is installed. This is the #1 reason people bounce off these two nodes.
- Saving vs. wiring. Because there are no outputs, beginners assume it's broken. It's not - it's a write-only node. Check
output/workspaces/<name>/scene_backdrops/<name>/for the files. - Unwired assets = empty backdrop. All three image inputs are optional and none is required; feed nothing and you'll get a JSON with null paths that Scene Backdrop Data will later choke on.
- It's an early-stage pack from a single dev - expect rough edges and read the console, which logs every file it saves.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| workspace | WORKSPACE | — | |
| name | STRING | backdrop | — |
| positiveopt | STRING | — | |
| negativeopt | STRING | — | |
| imageopt | IMAGE | — | |
| image_latentopt | LATENT | — | |
| image_depthmapopt | IMAGE | — | |
| seedopt | INT | 0 | — |
Outputs (0)
No outputs