H3 RefCap Select
One character per node, chained into a cast
- pack
- REFCAP_PACK
The problem it solves
A RefCap holds exactly one subject. That's a deliberate design choice, not a limitation the author forgot to lift: one file per character, object or place, so you can say "the elf" and mean a specific thing. The moment you want two people in a shot - or a person and a location, which is the more common case - one file is no longer the right unit.
H3 RefCap Select is the join. Each one picks some views out of one RefCap and appends them to a chain. Wire Select into Select into Select and you have a pack: this many angles of her, this many of him, three of the room. H3 RefCap Replay Pack then turns the chain into one conditioning, with <Picture 1> through <Picture N> renumbered across the whole thing in chain order.
This is the node that makes H3 feel like a small studio instead of a one-character toy. Two-consistent-characters-in-one-scene is still the thing people complain about most in image land; in video, with H3's reference path, it's genuinely tractable - provided you can address each character separately in the prompt, which is exactly what renumbering buys you.
What you're picking
Two required inputs and three optional ones:
refcap- the file. Any version: plain photo captures, view sets with yaws, or a baked cast.views- which views, as text.all(the default),none, or 0-based numbers and ranges like0,2,5-7. Out-of-range indices throw with the count it actually has, which is a nicer failure than silently dropping a picture.pack(optional) - the previous Select in the chain. This is the only wiring that matters; it's how ordering works.clips(optional) - 1-based clip numbers, orall. Only meaningful on version-3 RefCaps (built with H3 RefCap Build View Set).audios(optional) - same, for standalone audio references.
Output is a REFCAP_PACK, which exists for exactly one consumer: another Select, or Replay Pack.
The Pick views... button is the part you'll actually enjoy. It opens a thumbnail browser over everything in models/refcaps, drawn from the photos the files store, showing each view's angle when the file has one, with a search box and a running count against the reference node's 9-image cap. That counter is doing real work - the cap is per render, not per RefCap, so it's the one number that has to stay under nine across your entire chain.
Install
Manager → ComfyUI-RefCap → Install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/AEmotionStudio/ComfyUI-RefCap.git
No dependencies beyond ComfyUI and the H3 models. If the picker's thumbnails come up blank, you're looking at a RefCap whose views were captured without pixels - those files have latents only and can't render a preview.
Getting the selection right
The temptation is to throw all at every Select and let the caps sort it out. Resist it, for a reason that's easy to miss: every image you attach costs reference tokens in both channels, and the DiT pays for them on every step. Roughly, five thousand reference tokens is your budget, and that buys 5 views at 1024 px or 9 at 736 px. A 24-view turnaround with all is not a better reference, it's a slower render with each view getting less attention.
So the shapes that work are:
- Two characters, one shot - 4 views each, front and both three-quarters, so the prompt can say
<Picture 1>and<Picture 5>and mean two different faces. - Character plus room - 5 of the person, plus 3 or 4 of the place, which is the shape the pack's own H3 RefCap 7 - Two characters template uses.
- Costume swap - same character, two RefCaps, different outfits. The model binds clothing to the pictures you point at, so
<Picture 3>for the coat and<Picture 6>for the hat is a legitimate thing to prompt.
Two tells that you've over-selected: the render slows down noticeably, and both characters start looking like an average of each other. The second is the real failure - reference bleeding - and fewer, sharper views is the fix.
Where people get burned
Chaining in the wrong direction is the classic. The pack input takes the previous node, so the last Select in the chain is the one Replay Pack reads, and it defines the numbering. If your character order comes out reversed, you wired the chain backwards.
Second: selecting nothing. A Select with views set to none and no clips or audios throws "nothing selected", which sounds obvious until you're debugging a chain of five and can't tell which one is empty.
Third, and worth internalising before you build a library: Select stores references to files, not copies. Rename or overwrite a RefCap and every saved workflow that chains it is now pointing at something else. Which is the exact problem H3 RefCap Bake Pack exists to solve - freeze the pack once you're happy with it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| refcap | COMBO | 0 options: | |
| views | STRING | all | which views: all, none, or 0-based numbers and ranges (0,2,5-7). Use the picker button |
| packopt | REFCAP_PACK | another H3 RefCap Select, to add this one after it | |
| clipsopt | STRING | clip numbers to add (1,2,3) or all | |
| audiosopt | STRING | audio reference numbers to add (1,2,3) or all |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| REFCAP_PACK | REFCAP_PACK | — |