Nodes/Omnichar Character (.char)/Character References Split
ComfyUI Node

Character References Split

Five Slots, One Node, No Wrong Order

By omnichar·Created 23 days ago·Updated 16 days ago· 96
Character References Split
  • refs
  • image_0
  • image_1
  • image_2
  • image_3
  • image_4
  • count

MiniMax H3 is the video model this pack was built alongside, and H3 takes references in numbered slots: ref_image_0, ref_image_1, and so on. You could fill those with one Character Reference node per slot. This node fills all of them at once, in the order the prompt already numbers them.

Which one to reach for

Two nodes, both correct, different jobs.

Character References Split: one node, five outputs, image_0 through image_4, matching H3's widest slot set. Best when you just want the whole reference list spread across the model's slots and nothing clever.

Character Reference: one node per slot, you name the index. Best when a model has more than five slots, or when you want to hand-pick which slot gets what.

The naming is the tell that these are built for real models, not tidy demos: the outputs are numbered from zero because H3's inputs are, while the prompt calls the first image "Image 1", because that's how H3's addressing syntax is written.

How it behaves

Input is refs from Decode Character - the resolved list, already filtered and ordered. The output images come out at their own sizes, one picture per socket, exactly like the single-slot node.

The interesting decisions are in the spare sockets. If your character has three references, image_3 and image_4 come back empty rather than as black frames, and that's on purpose: a placeholder image would be treated by the model as a real reference, and the prompt's numbering would then stop describing what the model received. Leave the unused sockets unwired and everything stays honest.

count is the number of references Decode sent - the full count, not a capped-at-five one. So if you see 7 there and only five images come out, nothing is broken; the extra two were trimmed for the slot count. That is the one genuinely confusing thing about this node, and the clean fix is to set max_references on Decode Character instead of ignoring outputs. Decode splits the cap across face, body and wardrobe rather than cutting the end off, so a capped character keeps its outfits - a plain truncation here would just drop whatever came last.

Install

Part of the same pack, no separate anything:

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

Restart ComfyUI. Or in ComfyUI Manager, search Omnichar and install "Omnichar Character (.char)". Characters go in ComfyUI/models/characters/; there's nothing else to download.

Troubleshooting

If every output is empty, refs never arrived - check the wire from Decode Character and the error on that node, because Decode raises rather than passing an empty list down. If the images look cropped or letterboxed, that's not this node: splitting hands out references at native size, so whatever you're seeing came from how the character was built, or from the video model's own reference preprocessing.

And keep the position-to-slot mapping in mind while you're debugging. The prompt that Decode Character produced says "Pictures 1, 2 and 3 show…", and those numbers are positions in the resolved list. If you reshuffle which socket goes where in your graph, you haven't changed what the prompt says - you've just made it wrong. The numbered contact sheet on Decode's sheet output exists precisely so you can eyeball the ordering without guessing.

CategoryOmnichar

Inputs (1)

NameTypeDefaultDescription
refsCHARACTER_REFS—

Outputs (6)

NameTypeDescription
image_0IMAGE—
image_1IMAGE—
image_2IMAGE—
image_3IMAGE—
image_4IMAGE—
countINT—