Character Sheet Split
Chop one approved sheet into front, rear and portrait
- sheet
- front
- rear
- portrait
- report
Models are bad at panel dividers. Ask for a three-panel character sheet - front, rear, chest-up portrait - and you'll usually get something close, with one divider five percent off centre. Character Sheet Split [Eclipse] takes that sheet and cuts it into three separate single images, so you can feed the portrait into a face input and the front view into a front input without dragging a crop node chain around.
It crops pixels. It does not detect panels and it does not repair them.
Two ways to slice
mode is the first widget, and it's the one that surprises people because it defaults to manual:
manual- uses thefront_endandrear_endfractions of the sheet width. Defaults are 1/3 and 2/3, andrear_endmust be greater thanfront_end. This is the default deliberately: existing workflows kept their saved crop behaviour when the auto mode was added, and uneven generated layouts are exactly the case manual exists for.auto- divides the actual input image width into three equal parts on every run, ignoring the saved fractions entirely. No separate width connection needed. Widths that don't divide by three produce panels differing by at most one pixel.
gutter applies in both modes: a fraction of the full sheet width trimmed from both sides of each crop, default 0.004. That's the divider-line remover. Set it to 0 if you want every pixel of each third, and lower it if part of a garment sits near a boundary - the crop will happily cut through a sleeve.
One frontend quirk worth knowing: with mode in manual you see front_end and rear_end; switch to auto and those widgets hide, keeping their saved values. If you convert mode to an input socket, the boundary widgets stay visible, because the frontend can't know the incoming mode before execution.
Inputs and outputs
In: sheet - one approved image, laid out front / rear / portrait. That's the only image input, and it's required.
Out: front, rear, portrait - three separate single images, never a batch or a list. Feed front and rear into Character Sheet Pack's dataset stage and portrait into its face input. Because they're individual images rather than lists, splitting doesn't multiply your sampler runs. There's also a report output with the pixel boundaries and gutter used - quicker than measuring the result yourself.
Install
Same pack, one command either way:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
pip install -r ComfyUI_Eclipse/requirements.txt
Or search ComfyUI_Eclipse in ComfyUI Manager. Restart ComfyUI; the node lives under 🌒 Eclipse/ Image. Dependencies for cropping are already in ComfyUI's own stack (numpy, Pillow, torch), so nothing extra to install unless you're missing opencv - the pack's requirements.txt lists it, alongside heavier audio extras you don't need for this.
What it won't fix
Auto mode assumes the generator put the panels in even thirds. It doesn't look at the image, so a shifted divider gives you a crop with half a head in it and no warning. Preview all three outputs before you build thirty dataset shots on top of them. The README's advice is right: if a panel is cropped, shifted, or there's a fourth figure fighting for space, go back and regenerate or use manual mode to re-balance the boundaries.
The other honest limit: this is a pixel crop of a generated image. If the sheet's portrait panel doesn't look like your character, splitting it just gives you a well-framed wrong face. And the portrait crop is the weakest link in a dataset chain - if the identity went sideways in the sheet, the original face reference you started from is usually the better thing to hand back to the dataset Pack, not the crop.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| sheet | IMAGE | One approved sheet: front on the left, rear in the center, portrait on the right. This node crops pixels; it does not detect or repair panel contents. | |
| front_end | FLOAT | 0.3330.01–0.98 | Manual mode only: boundary between front and rear, as a fraction of full sheet width. Ignored in auto mode. 0.333333 is one third. Check previews when adjusting. |
| rear_end | FLOAT | 0.6670.02–0.99 | Manual mode only: boundary between rear and portrait as a fraction of sheet width. Ignored in auto mode. Must be greater than front_end. Default is two thirds. |
| gutter | FLOAT | 0.0040–0.09 | Both modes: trim this fraction of full sheet width from each panel's left/right edges to remove divider lines. Set 0 for complete thirds with no pixels discarded; reduce if clothing is near a boundary. |
| modeopt | COMBO | manual | auto: split the actual input image width into three equal parts, ignoring front_end/rear_end. No separate width input is needed. Widths not divisible by three produce panels differing by at most one pixel before gutter trimming. manual: use the saved fractional boundaries for uneven layouts. Defaults to manual to preserve existing crops. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| front | IMAGE | Single front-view crop. Connect to dataset Pack front. |
| rear | IMAGE | Single rear-view crop. Connect to dataset Pack rear. |
| portrait | IMAGE | Single identity crop. Connect to dataset Pack face, or use the original face reference if this crop lost identity. |
| report | STRING | Pixel boundaries and gutter used. Check previews for clipping; generation may not follow exact thirds. |