VNCCS Sheet Manager
Split a sprite sheet into twelve panels, or build one back up
- images
- images
VNCCS's whole trick for keeping a character consistent is to generate a bunch of related sprites in one pass instead of firing off twelve separate runs and hoping they match - a full emotion set, or every pose in an outfit, sharing latent context in a single generation. That process spits out one big image: a 2×6 grid, twelve panels, one sheet. Sheet Manager is the node that takes that sheet apart afterward - or, less often, puts one back together from separate images.
Split or compose, not both at once
The mode switch is the whole story: split cuts a sheet into its twelve component panels, compose runs it backward, stacking up to twelve source images into one sheet. Default is split, and split is what you'll reach for most of the time - you generated a sheet, now you want the individual sprites out of it for saving, upscaling, or feeding one at a time into whatever the rest of your workflow expects. Compose is for the opposite direction: you've got twelve separate images and want them reassembled into a single sheet, maybe to hand off to a downstream step that expects sheet-shaped input, or just to eyeball the whole set as a contact sheet.
If all you want is one panel back out of a sheet, not all twelve, VNCCS Sheet Extractor does that more directly with a part_index. Sheet Manager always processes the whole batch, in either direction.
The inputs that matter
images(IMAGE) - the sheet to split, or the set of images to compose, depending onmode.target_width/target_height- defaults 1024×3072, the tall, sprite-shaped ratio you'll see across the pack. Read this part twice: in split mode both dimensions apply per panel, same as Sheet Extractor. In compose mode the node builds a square canvas sizedtarget_height×target_height-target_widthgets ignored. That's straight from the node's own description, not a guess, and it's exactly the kind of thing that bites you if you leave both values at their split-mode defaults and switch to compose expecting a portrait sheet back.safe_margin(optional, off by default) - no tooltip beyond the name, but it reads as a bit of padding at panel boundaries. If panels come out cropped a touch too tight against a sprite's edge, or you want less bleed between cells, this is the first thing to toggle.
Output is images, always a list - in split mode that's your twelve panels; in compose mode it's the one assembled sheet, just still wrapped as a list, since the node doesn't change its output type between modes.
How to install it
Bundled with the main pack, nothing extra to fetch for this specific node:
- ComfyUI Manager - search
VNCCS - Visual Novel Character Creation Suite, install, restart. - Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/AHEKOT/ComfyUI_VNCCS.git, thencd ComfyUI_VNCCS_Utils && pip install -r requirements.txt, restart, and let Comfy Manager grab anything else the graph references (Pose Studio's home repo, VNCCS-Utils, etc.) via Install missing custom nodes.
Common issues
Compose output comes out square when you expected target_width to matter. It doesn't, in compose mode - see above. Set target_height to whatever square size you actually want out.
Panels look stretched or bleed into their neighbor. Same trap as Sheet Extractor: this node assumes a clean, evenly spaced 2×6 grid with no gutters between cells. A sheet generated with visible padding between panels extracts or composes slightly off. Check your sheet-generation step's actual output dimensions before assuming Sheet Manager mis-split something.
Fewer than twelve images fed into compose mode. The description says "up to 12" - a partial set is fine, the node won't refuse it. It also won't invent placeholder panels for the slots you didn't fill, so check what actually lands in the empty cells before treating the composed sheet as final.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | split | 2 options: split, compose |
| images | IMAGE | — | |
| target_width | INT | 102464–6144 | — |
| target_height | INT | 307264–6144 | — |
| safe_marginopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |