Shot Plan Slice
Run one planned batch across three GPUs, or just re-render shots 21–40
- plan
- prompts
- seeds
- shot_ids
Character Shot Planner will happily hand you a 40-shot plan in one go. Which is great until you want to send those 40 shots through different generation branches - a different sampler, a different LoRA strength, a different detail pass - or until render 27 fails and you'd rather not regenerate all 39 good ones. Shot Plan Slice [Eclipse] takes an existing plan and returns a range of its selected shots, keeping the three parallel lists aligned.
It creates nothing and releases nothing. It's a read of a plan that already exists.
The three widgets
plan takes the ECLIPSE_SHOT_PLAN output from Character Shot Planner. Important: a slice returns selected shots only. The two skipped close/mid/wide candidates per shot stay in the plan and do not become prompts.
start is zero-based and capped at 99 - start=0 begins at shot 1, start=20 at shot 21. Invalid ranges raise an error rather than wrapping or repeating the last item, which is the behaviour you want: a silent wrap in a 40-image batch is a nightmare to notice.
count is how many shots to return, and 0 means all remaining. For a 50-shot plan, start=25, count=25 gives you shots 26–50. Branch past the end of an ordinary plan and it errors; branch past the end of a final coverage-completed batch and it's skipped without complaint, which matters because coverage completion can return fewer shots than you asked for. A 40-shot plan split into two 20s is the canonical example:
| Branch | start | count | | --- | ---: | ---: | | Variation 1 | 0 | 20 | | Variation 2 | 20 | 20 |
Outputs
Three aligned lists, no more: prompts (this range's selected prompts, original order), seeds (the matching generation seeds) and shot_ids (original IDs - slicing does not renumber). Wire prompts to that branch's text encoder and seeds to the same branch's sampler seed input.
The alignment is the actual feature. Shuffling prompt and seed lists by hand is the classic way to end up with a beautiful image labelled with the wrong shot ID, and shot IDs are what you'd use for filenames, captions or a LoRA dataset manifest. Keep the three wires going to the same place and don't slot a node in between that reorders anything.
Underneath, each output is a ComfyUI list, so a slice feeds a branch exactly like the planner's own outputs do - one image latent per list item. If nothing in the range exists (an empty branch beyond a shortened final batch), the node hands downstream an execution blocker, which quietly halts that branch instead of failing the queue. That's why a branch with no shots doesn't explode.
Install
It ships in the same pack, so one clone covers both nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
pip install -r ComfyUI_Eclipse/requirements.txt
ComfyUI Manager users: search ComfyUI_Eclipse and restart. You'll find it under 🌒 Eclipse/ Text, next to Character Shot Planner.
One upgrade note worth reading before you clone anything: Eclipse 4.0.0 removed every legacy and deprecated node from the codebase. If you're loading an old workflow that used pre-4.0 node IDs, it will fail before any of this matters. The pack ships a Workflow Migration Tool, a python tools/migrate_workflow.py <path> script, and a manual mapping file in tools/migration_mapping.txt - all of them take backups, and it's much easier than re-wiring by hand.
When you'd reach for it
Split a batch across machines, or across two sampler configurations at once. Retry a failed middle range without duplicating reservations. Cap a test branch at the first eight shots while the rest of the plan sits reserved for later. What you can't do with it is change the plan: reservations are permanent until you reset them from the planner, so a slice is a window onto a decision you already made.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| plan | ECLIPSE_SHOT_PLAN | Connect Character Shot Planner's plan output. The slice returns selected shots only, not the skipped close/mid/wide alternatives. | |
| start | INT | 00–99 | Zero-based first selected shot: 0 starts at shot 1, 20 starts at shot 21. Must be inside ordinary plans; a branch beyond the end of a final coverage batch is skipped without error. |
| count | INT | 00–100 | Number of selected shots to return; 0 means all remaining shots. For a 50-shot plan, start=25/count=25 returns shots 26–50. The range must fit ordinary plans. Final coverage batches can be shorter: slices truncate to remaining shots or skip an empty branch. Earlier reservations remain intact. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| prompts | STRING | Selected prompts for this range, in their original order. Connect to this branch's text encoder. |
| seeds | INT | Matching generation seeds for this range. Connect to the same branch's sampler. |
| shot_ids | STRING | Original shot IDs for this range; slicing does not renumber shots. Aligned with the returned prompts and seeds. |