CD · Scene Lock
Keep your hero standing in the same room across every take
- scene
- scene_json
- scene_hash
The failure mode that ruins more multi-shot videos than anything: your character is perfect, and the room they're standing in keeps quietly changing. Shot one is a bright apartment with a window on the left. Shot three is the same apartment with the window on the right and the light coming from nowhere. The face is consistent, so it feels like it worked - until you cut them together. CDSceneLock is the Continuity Director node that makes the environment a first-class, hash-locked record instead of a hope in the prompt.
This is one of five "lock" nodes at the top of the pack's production chain (project, character, scene, shot, then the manifest that assembles them). It's governance, not generation: it doesn't render anything, it pins the environment spec down so every take derives from the same one.
What you set
- scene_id - your key, e.g.
scene-apartmentorscene-001. - location - a short string, "apartment", "forest clearing", whatever anchors the scene.
- time_of_day - a dropdown:
dawn,day,sunset,night, orinterior-controlled. That last one is a thoughtful option, because for interior scenes "time of day" is really "whatever lighting we decided", and it's useful to say so explicitly. - lighting - prose, defaults to
soft natural light. This is where you actually pin the look. - palette - the color story, default
neutral. - environment_notes - anything else: set dressing, furniture layout, "no signage", "red couch stays".
How it works
Like every lock node in the pack, it wraps your inputs into a structured CD_SCENE record and hashes it with SHA-256. The hash is the "lock": edit the lighting text and the hash flips, so a downstream chain that consumed the old scene can detect that the state changed instead of silently mixing old and new. You get three outputs - scene (the typed CD_SCENE wire for other Continuity Director nodes), scene_json (the record as text), and scene_hash (the fingerprint).
The scene plugs into CDManifestBuilder to join the project manifest, and optionally into CDShotLock so individual shots record which scene they belong to. From there CDBatchDirector stamps every take with the scene it lives in, which is the whole trick: the prompt for shot five can stop re-describing the room from scratch and instead reference a locked scene that can't drift between takes.
Installing it
Continuity Director is one of the easiest packs to install in the whole ecosystem, because it has no dependencies to fight over. No model downloads, no API keys, and requirements.txt is a single comment: "No mandatory third-party Python dependencies." Pure standard library.
In ComfyUI Manager, search "Continuity Director" and restart after install. Or from a terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/xinjian0101/continuity-director.git ComfyUI-ContinuityDirector
Restart ComfyUI. Nodes appear as CD · ..., plus a Continuity Director sidebar with an "Add starter chain" button that scaffolds the whole production path. Update with git pull.
Where people get burned
Two things. First, the environment record is a contract, not a render - it describes the scene for the human and the prompt-writer, and it stays as good as the text you put in it. If your "palette" field says "neutral" and your model renders neon green, that's a model problem this node can't fix; the value of the lock is that the mismatch is now visible and reproducible instead of random. Second, respect the hashes. If you change the scene after shots were already generated, their recorded scene hashes won't match the new lock, and CDContinuityReport will (correctly) flag the difference. That's the feature working. Re-lock deliberately - update the scene, then regenerate the affected shots - and you'll never ship a video where the room changed its mind halfway through.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| scene_id | STRING | scene-001 | — |
| location | STRING | — | |
| time_of_day | COMBO | 5 options: dawn, day, sunset, night, interior-controlled | |
| lighting | STRING | soft natural light | — |
| palette | STRING | neutral | — |
| environment_notes | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| scene | CD_SCENE | — |
| scene_json | STRING | — |
| scene_hash | STRING | — |