Character Reference Select
The quiet node that lets you skip a whole sampler branch
- reference
- generated
- image
Character Reference Select [Eclipse] has one required input, one optional input and one output, and it still earns its place. Its job is to answer a single question - does this reference role use the original image, the generated one, or nothing at all - and to do it lazily, so the branch you didn't want never runs.
How it decides
reference is the ECLIPSE_CHARACTER_REFERENCE control object produced by Character Reference Prepare. That object carries the role and the mode you picked, and the mode is what Select obeys:
| Prepare's mode | Select's image output |
| --- | --- |
| reference | the original source image |
| extract | the image from the preparation sampler |
| generate | the image from the preparation sampler |
| disabled | nothing |
That's it. No widgets, no CFG, no model loading - the whole node is routing logic.
The interesting part is under the hood. generated is declared as a lazy optional input, which in ComfyUI means the node can refuse to request it at execution time. Select's lazy check asks for generated only when the mode is extract or generate and the input hasn't been evaluated yet. In reference and disabled modes the branch behind that socket is never requested, so you don't pay for a preparation sampler run you didn't ask for.
Practical consequence: set a role to disabled and you get the skip-a-branch behaviour of muting, without muting anything and without a second workflow copy.
Where it plugs in
In: reference from Prepare, and generated from the decoded output of that role's preparation sampler - the node between Prepare's prompts and this input is your encoder/sampler pair.
Out: a single IMAGE. Nothing else. Send it to the corresponding face, body, clothing or rear socket on Character Reference Pack, preview it first if you used extract and care about fidelity, and remember it's one image, not a batch. The Pack's inputs expect single images and the whole reference pipeline is built around that.
One trap, straight from the docs
Lazy evaluation skips this node's request for the branch - it does not stop the branch from running if something else asks for it. If your preparation sampler also feeds a Save Image or a Preview node that's an execution output, ComfyUI happily runs that path anyway. So "disabled means nothing runs" is true only when Select is the sole consumer. If you're counting on the savings, run the preview branch alone and check what actually executed.
The second, softer trap: extract output goes downstream as a generated image, not your source. That's fine for references, but if you were hoping for a pixel-faithful copy of your photo, use reference mode and let the original through untouched.
Installation and dependencies
Part of the same pack, so one install covers it:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
pip install -r ComfyUI_Eclipse/requirements.txt
ComfyUI Manager users can search ComfyUI_Eclipse instead. Restart ComfyUI, and look under 🌒 Eclipse/ Image for the Character nodes - Prepare, Select and Pack are meant to be used together, and the Pack is where the numbered image_1…image_5 slots and the resolved prompt actually get built.
There's nothing exotic here to break. If Select returns nothing, check Prepare's mode first: disabled is a no-op by design, and it's the setting people forget they flipped. If the wrong image comes through, the mode is probably reference while you expected an extraction. Both are one widget away from fixed, which is more than can be said for most of this hobby.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| reference | ECLIPSE_CHARACTER_REFERENCE | Connect reference from the matching Character Reference Prepare. Its mode decides whether this node uses the original, requests generated, or returns no image. | |
| generatedopt | IMAGE | Connect the decoded image from this reference's preparation sampler. Evaluated only in extract/generate modes. Reference/disabled modes skip this branch through Select; other independent output nodes can still execute it. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | The chosen single image, or no image when disabled. Connect to the corresponding face/body/clothing/rear input on the Pack; preview it first to check extraction fidelity. |