Character Sheet Pack
The four-stage pipeline that builds a reference sheet from a face photo
- layout
- face
- wardrobe
- front_body
- rear_body
- front
- rear
- positive
- negative
- image_1
- image_2
- image_3
- report
Building a character reference sheet by hand is a chore: blank mannequin, then the outfit on the mannequin, then a three-panel front/rear/portrait sheet, then three separate crops you can actually feed a dataset or a LoRA training run. Character Sheet Pack [Eclipse] is that chore as one node with a stage dropdown - four tasks that each expect different inputs and produce up to three numbered images plus a prompt.
The four stages, and why the inputs change per stage
stage is the first widget and it's the one that matters:
mannequin- generate a blank body to dress later. Two modes here:generation_mode=Presetskips every image input and builds the figure from the body dropdowns (gender,build,muscularity,breast_size,chest_breadth,hip_width,buttock_size) plus a blank size-setting canvas;Referenceignores the presets and usesfront_body(and optionallyrear_body) as physique photographs. The README is careful about this: those body presets are qualitative prose instructions, not measurements, andunspecifiedadds nothing rather than guessing.wardrobe- garment-only product views, from an outfit source photo. Wearers and mannequin supports are meant to be excluded; prints and openings on the source garment are preserved, as is whatever is visible through sheer fabric.sheet- the actual three-panel character sheet. Needs the approved mannequin guide inimage_1and afaceportrait, plus an optionalwardrobeboard. If you turn offuse_wardrobe, you must supply a complete written outfit indetails.dataset- individual approved panels:frontplusface, optionallyrear.
The image numbering follows the stage and compacts. On the mannequin stage with only a rear physique photo supplied, that photo is image_2, not image_3. Read report before you trust a slot: it lists the actual label-to-role mapping, the omitted references and both the target canvas and each reference's real dimensions.
Inputs you'll touch
width/height (1536×864 by default) set the canvas, and the Qwen encoder must run at resolution 0 for that canvas size to be honoured. In the mannequin and sheet stages only the first image gets fitted to the canvas; supporting face and wardrobe references keep their aspect ratio, are never upscaled, and are capped at 1024px on the long side. Other stages pad without stretching.
details is the free-text field that changes job per stage: physique for mannequin, missing outfit pieces for wardrobe, identity and outfit continuity for sheet and dataset. The four toggles - use_front_body, use_rear_body, use_wardrobe, use_rear - are per-stage and skip their input branch when off, so an unrelated image left connected to the wrong socket gets ignored rather than silently polluting the prompt.
positive_override and negative_override replace the stage text from prompts/character_sheets.json, but the node still resolves roles and appends details. Keep uppercase role names like FACE, WARDROBE, FRONT BODY in any custom prompt - the Pack rewrites those to the real <imageN> labels.
Outputs
positive and negative go to the same encoder; on the dataset stage, positive is the thing you send to Character Shot Planner's character_lock. image_1/image_2/image_3 go to that same encoder's image inputs - unused slots return nothing. report is your map, and the reason to wire up Show Any.
Install
ComfyUI Manager → ComfyUI_Eclipse, or:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
pip install -r ComfyUI_Eclipse/requirements.txt
Restart, then find it under 🌒 Eclipse/ Image. You'll also need a Qwen image encoder node - Eclipse's loaders and encoders moved to the sibling ComfyUI_SmartModelLoader pack, so install that too if a red missing-node box shows up on load.
Realistic expectations
This is a multi-pass pipeline at 1536×864 with up to three references. On 8–12GB you want the quantized/lightning Qwen-Edit path (nunchaku 2509 Lightning is the usual advice) or you'll be watching a very slow sampler. And don't expect free wins: sheets generated at 3 panels still need inspection - the sheet prompt asks for specific framing, but it can't enforce it, so if a divider lands in the wrong place or a figure goes missing, fix it before feeding the crops into a dataset. Generation instructions are not a geometric constraint, and the node says so itself.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| stage | COMBO | sheet | mannequin: choose Preset controls or Reference images; wardrobe: outfit source; sheet: approved mannequin + face + optional wardrobe; dataset: individual front + portrait + optional rear panels. Changing stage also requires updating connected prompt overrides. |
| generation_mode | COMBO | Preset | Mannequin only. Preset skips every image input and uses a blank canvas plus selected attributes. Reference uses optional layout/front/rear images and ignores hidden body presets. |
| gender | COMBO | unspecified | Mannequin: Gender applies in both modes; body attributes apply only in Preset. All attributes are independent of gender. Unspecified adds no instruction. Explicit details refine only named attributes. Selection names and descriptions come from mannequin_attributes in prompts/character_sheets.json. After adding entries, restart ComfyUI and refresh the browser. |
| build | COMBO | average | Mannequin: Gender applies in both modes; body attributes apply only in Preset. All attributes are independent of gender. Unspecified adds no instruction. Explicit details refine only named attributes. Selection names and descriptions come from mannequin_attributes in prompts/character_sheets.json. After adding entries, restart ComfyUI and refresh the browser. |
| muscularity | COMBO | unspecified | Mannequin: Gender applies in both modes; body attributes apply only in Preset. All attributes are independent of gender. Unspecified adds no instruction. Explicit details refine only named attributes. Selection names and descriptions come from mannequin_attributes in prompts/character_sheets.json. After adding entries, restart ComfyUI and refresh the browser. |
| breast_size | COMBO | unspecified | Mannequin: Gender applies in both modes; body attributes apply only in Preset. All attributes are independent of gender. Unspecified adds no instruction. Explicit details refine only named attributes. Selection names and descriptions come from mannequin_attributes in prompts/character_sheets.json. After adding entries, restart ComfyUI and refresh the browser. |
| chest_breadth | COMBO | unspecified | Mannequin: Gender applies in both modes; body attributes apply only in Preset. All attributes are independent of gender. Unspecified adds no instruction. Explicit details refine only named attributes. Selection names and descriptions come from mannequin_attributes in prompts/character_sheets.json. After adding entries, restart ComfyUI and refresh the browser. |
| hip_width | COMBO | unspecified | Mannequin: Gender applies in both modes; body attributes apply only in Preset. All attributes are independent of gender. Unspecified adds no instruction. Explicit details refine only named attributes. Selection names and descriptions come from mannequin_attributes in prompts/character_sheets.json. After adding entries, restart ComfyUI and refresh the browser. |
| buttock_size | COMBO | unspecified | Mannequin: Gender applies in both modes; body attributes apply only in Preset. All attributes are independent of gender. Unspecified adds no instruction. Explicit details refine only named attributes. Selection names and descriptions come from mannequin_attributes in prompts/character_sheets.json. After adding entries, restart ComfyUI and refresh the browser. |
| width | INT | 1536256–2048 | Output/reference canvas width. Use a landscape canvas for sheets and a portrait canvas for individual dataset shots. Qwen encoder resolution must be 0. |
| height | INT | 864256–2048 | Output canvas height. Mannequin/sheet stages: only the first image sets the canvas; supporting body, face and wardrobe references keep their own aspect ratios, are never enlarged, and are capped at 1024 pixels on the longest side. Other stages pad references without stretching. Without a mannequin template, width/height set the blank generation canvas. When using a template, match its aspect ratio for accurate panel splits. |
| details | STRING | Additional task specification. Mannequin: physique; wardrobe: missing outfit choices; sheet: identity and outfit; dataset: identity/wardrobe continuity only, without fixed pose instructions. Required when sheet has no wardrobe image. | |
| use_front_body | BOOLEAN | true | Mannequin Reference mode only: use the connected frontal body image. Off skips this input branch. Has no effect on other stages. |
| use_rear_body | BOOLEAN | true | Mannequin Reference mode only: use the connected rear body image. Off skips this input branch. No effect on the final sheet's rear panel, which is always generated. |
| use_wardrobe | BOOLEAN | true | Sheet stage only: use the wardrobe board. Off uses the written outfit specification and skips this input branch unless another output separately requests it. |
| use_rear | BOOLEAN | true | Dataset stage only: include the approved rear crop alongside front and face. Off can reduce rear-view influence while retaining front/portrait references. It does not change planner camera choices. |
| layoutopt | IMAGE | Mannequin Reference mode: leave disconnected to generate from the written three-panel layout; the node supplies a blank size-setting canvas. Optionally connect a pose template for framing only. Sheet stage: the approved generated mannequin guide is required and supplies poses and proportions. | |
| faceopt | IMAGE | Required for sheet/dataset: one identity portrait. Dataset normally uses the extracted portrait panel. Remains a separate image even when a rear reference is enabled. | |
| wardrobeopt | IMAGE | Wardrobe stage: source outfit photograph. Sheet stage: approved wardrobe board. Different board views describe one outfit. Ignored by mannequin/dataset stages. | |
| front_bodyopt | IMAGE | Optional original frontal physique reference, used ONLY in mannequin Reference mode; Preset skips it. Never routed into dressed-character or dataset generation. No extraction or undressing required. | |
| rear_bodyopt | IMAGE | MANNEQUIN Reference mode only (Preset skips it): original rear body photograph for visible physique/proportions. Its clothing and identity are ignored. Different from rear, which accepts the finished dressed character's rear panel for the dataset stage. Ignored by wardrobe/sheet/dataset stages. | |
| frontopt | IMAGE | Dataset: approved front panel, one image. Supplies established outfit and proportions. A contact sheet or image batch is not appropriate here. | |
| rearopt | IMAGE | DATASET stage only: approved rear panel cropped from the finished dressed character sheet, preserving the chosen outfit and rear appearance. Different from rear_body, the original physique photograph. Ignored by mannequin/wardrobe/sheet stages. Does not request every shot to face away. | |
| positive_overrideopt | STRING | Replace the stage's file task text with an editable String Multiline input. The Pack adds the reference-role map, fixed mannequin layout, Gender, active Preset selections and details, then resolves uppercase role names such as FRONT BODY, FACE and WARDROBE to the actual <image1>, <image2>, etc. throughout the final task text. This keeps optional-input numbering correct. Connect positive to Show Any to inspect the resolved prompt. Disconnect this input to load current file text. | |
| negative_overrideopt | STRING | Replace this stage's file negative independently. An empty connected string intentionally clears it. File edits do not change connected workflow text. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| positive | STRING | Stage prompt plus actual reference mapping. In dataset stage, connect to the shot planner's character_lock; other stages connect directly to their encoder. |
| negative | STRING | Negative for this stage's encoder. Sheet negatives allow exactly three panels; dataset negatives prohibit panels. At sampler CFG=1 the negative has no effect; higher CFG enables it. |
| image_1 | IMAGE | Connect to the same encoder's image_1. Roles depend on stage and enabled inputs; check report. Unused slots return no image. |
| image_2 | IMAGE | Connect to the same encoder's image_2. Roles depend on stage and enabled inputs; check report. Unused slots return no image. |
| image_3 | IMAGE | Connect to the same encoder's image_3. Roles depend on stage and enabled inputs; check report. Unused slots return no image. |
| report | STRING | Lists actual image labels, role mapping, omitted references, target canvas and individual reference dimensions. No images are generated by this node. |