Nodes/ComfyUI Eclipse/Character Reference Pack
ComfyUI Node

Character Reference Pack

Four reference photos in, one locked character prompt out

By r-vage·Created 12 months ago·Updated 14 days ago· 38
Character Reference Pack
  • face
  • body
  • clothing
  • rear
  • anchor
  • character_lock
  • anchor_prompt
  • negative
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • report
◄width832►
◄height1216►
◄identityThe same adult character throughout the dataset.►
◄body_description►
◄outfitPlain grey cardigan, blue jeans and white sneakers.►
◄scenePlain white studio background and light floor, soft natural light.►
◄extra_rules►

If you have ever tried to keep a character's face, body and outfit straight across forty generated shots, you already know the failure mode: the face drifts, the jacket changes shade, and by image twelve you've invented a new person. Character Reference Pack [Eclipse] is the node that turns a pile of separate reference images into one written character definition plus a correctly numbered set of Qwen image slots. It generates nothing. It is pure prompt and wiring discipline, which is exactly what character consistency workflows are missing most of the time.

What it actually does

The node sits between your references and a Qwen image encoder. You feed it up to five images - face (required), plus optional body, clothing, rear and anchor - and it produces role instructions that tell the model which numbered image does what. The role prompts and the general negative come from prompts/character_references.json, which Eclipse extracts on first startup into its own repo folder. Edit that file and the next execution picks it up; no restart.

It has two lives, and mixing them up is the main way people confuse themselves:

  • First pass (assembly). Leave anchor empty. Wire anchor_prompt to your encoder's positive, image_1…image_5 to the encoder's image inputs, and generate one clean full-body review character against the scene you set.
  • Second pass (dataset). Connect that approved image into anchor, then send character_lock to Character Shot Planner instead of anchor_prompt. Now the review pose and the studio scene are gone, and what's left is the part you want repeated: identity, physique, wardrobe.

That distinction is the whole point of having two prompt outputs. anchor_prompt is the complete positive for the review shot; character_lock deliberately excludes the fixed pose and the scene so the planner can vary camera and pose without fighting your text.

Inputs worth setting

width and height (832×1216 by default, 256–2048 in multiples of 32) set the padded reference canvas. Images are padded, never stretched or cropped, so nothing about your subject gets mangled - but share the same dimensions between your assembly Pack and your dataset Pack or the numbering and framing drift.

Then it's prose, all multiline: identity (age, hair, distinctive features), body_description (relative proportions - chest-to-waist, limb lengths), outfit (fixed wardrobe, and explicit choices for missing pieces; clear the sample cardigan-and-jeans if you're using a clothing reference), scene (review image only), and extra_rules, which is appended to both prompts. Keep poses out of extra_rules if you want the planner to vary them.

face is marked optional in the widget but the node won't execute without it. body and clothing are genuinely optional - skip them and physique and wardrobe come from your written text instead.

Outputs

  • character_lock → Character Shot Planner's character_lock (dataset phase).
  • anchor_prompt → the assembly encoder's positive (first phase).
  • negative → the same encoder's negative. The file's general assembly negative, separate from each Prepare node's per-role negative.
  • image_1 … image_5 → the Qwen encoder's image inputs. These sockets have no fixed role. Active roles are packed consecutively: anchor if supplied, then face, body, clothing, rear.
  • report → the actual image-number-to-role map, canvas size and omitted references. Send it to Show Any before you debug anything.

Install

ComfyUI Manager → search ComfyUI_Eclipse → install, or clone it yourself:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
pip install -r ComfyUI_Eclipse/requirements.txt

Portable installs should use python_embeded\python.exe -m pip install -r custom_nodes\ComfyUI_Eclipse\requirements.txt. Restart ComfyUI. The declared dependencies are modest - torch, numpy, Pillow, opencv-python, safetensors, pilgram, PyYAML, aiohttp - but requirements.txt also pins faster-whisper and stable-ts for Eclipse's lyric/transcription nodes. If you don't want that weight, install the small list by hand.

Where people get burned

Everything here is prompt text and a single image per input - batches are not supported, so a face sheet fed into face is one image, not five. And the reported role order is the only authority on what image_3 means; if you re-solve the graph by hand later, check report again rather than assuming. Finally, these are model instructions, not a guarantee: the README is blunt that role separation needs review, and the node doesn't measure BMI or infer concealed anatomy. On 2026 models the honest expectation is that an edit-model pass with a good reference does more for likeness than any amount of stacked adapter cleverness - pack the references properly here, then let Qwen-Edit do the heavy lifting.

Category🌒 Eclipse/ Image

Inputs (12)

NameTypeDefaultDescription
widthINT832256–2048Reference canvas width, 256–2048 in multiples of 32. Images are padded without stretching or cropping. For native Qwen 2.1, use encoder resolution=0 and its latent output to preserve this canvas size.
heightINT1216256–2048Reference canvas height, 256–2048 in multiples of 32. Together with width, sets the padded reference dimensions. Share these settings between assembly and dataset Packs for consistent sizing.
identitySTRINGThe same adult character throughout the dataset.Identity details preserved in review and dataset prompts, such as age, hair and distinctive features. Supplements the face image; does not generate a face reference by itself.
body_descriptionSTRINGDescribe visible build and relative proportions to preserve, such as chest-to-waist relationship or limb lengths. Supplements a body image, or guides physique without one. Not a measured BMI or numeric anatomy control.
outfitSTRINGPlain grey cardigan, blue jeans and white sneakers.Fixed wardrobe and explicit choices for missing items. Keep consistent with the clothing reference and its completion inventory; clear the example outfit when using a different reference. Used for assembly and later shots, not for the separate clothing extraction sampler.
sceneSTRINGPlain white studio background and light floor, soft natural light.Background and lighting for anchor_prompt's review image only. Not included in character_lock: set the planner's scene separately for dataset shots, or connect one shared text node to both.
extra_rulesSTRINGAdditional instructions appended to both character_lock and anchor_prompt. File role/assembly rules still apply; this is not a full override. Avoid fixed poses here if the planner should vary them.
faceoptIMAGERequired to execute: one face reference controlling identity, hair and skin tone. Connect the face Select output or a direct image. This role does not control body proportions or wardrobe.
bodyoptIMAGEOptional single image controlling visible physique/proportions. Its face and clothing are excluded by the role prompt, but model adherence needs review. Without it, physique comes from the body description/approved character.
clothingoptIMAGEOptional outfit reference or completed garment flat lay. Controls garments, materials, colors and accessories, not the original wearer. Check missing pieces before assembly; keep written outfit choices consistent. Underwear stays beneath opaque outer layers when worn.
rearoptIMAGEOptional compatible back-view reference for rear hair and garment details when visible. Does not force rear-facing shots or override the selected face, physique or wardrobe.
anchoroptIMAGEApproved assembled character image, not a text prompt. Leave empty in the first Pack that creates the review character. Connect the reviewed image here in the dataset Pack to preserve the combined look. Becomes image_1; pose/framing may still vary.

Outputs (9)

NameTypeDescription
character_lockSTRINGShared identity, physique, wardrobe and numbered reference-role instructions. Connect to Character Shot Planner's character_lock for varied dataset shots. Excludes the fixed full-body review pose and Pack scene.
anchor_promptSTRINGComplete positive prompt to generate the first full-body REVIEW CHARACTER. Connect to the assembly encoder. Normally unused on the second/dataset Pack, whose character_lock goes to the planner instead. This is text, not the anchor image.
negativeSTRINGGeneral assembly/dataset negative from prompts/character_references.json. Connect to the corresponding encoder's negative input. Separate from each Prepare node's role-specific negative override.
image_1IMAGEConnect to Qwen encoder image1. Active roles are packed consecutively: anchor if supplied, then face, body, clothing, rear. This socket has no fixed role; check report. Unused slots return no image. Keep paired with this Pack's prompt.
image_2IMAGEConnect to Qwen encoder image2. Active roles are packed consecutively: anchor if supplied, then face, body, clothing, rear. This socket has no fixed role; check report. Unused slots return no image. Keep paired with this Pack's prompt.
image_3IMAGEConnect to Qwen encoder image3. Active roles are packed consecutively: anchor if supplied, then face, body, clothing, rear. This socket has no fixed role; check report. Unused slots return no image. Keep paired with this Pack's prompt.
image_4IMAGEConnect to Qwen encoder image4. Active roles are packed consecutively: anchor if supplied, then face, body, clothing, rear. This socket has no fixed role; check report. Unused slots return no image. Keep paired with this Pack's prompt.
image_5IMAGEConnect to Qwen encoder image5. Active roles are packed consecutively: anchor if supplied, then face, body, clothing, rear. This socket has no fixed role; check report. Unused slots return no image. Keep paired with this Pack's prompt.
reportSTRINGLists actual image-number-to-role mapping, canvas size and omitted optional references. Connect to Show Any when checking which image the prompt calls image1, image2, etc.