Nodes/⚗ AlchemicaSampler/⚗ Alchemica Hybrid (fuse the traits of photos)
ComfyUI Node

⚗ Alchemica Hybrid (fuse the traits of photos)

Fusing traits of several photos into one new creature

By Nessuno76·Created about a month ago·Updated 21 days ago· 4
⚗ Alchemica Hybrid (fuse the traits of photos)
  • clip
  • image_1
  • image_2
  • image_3
  • image_4
  • subject
  • report
◄weight_11.00►
◄weight_21.00►
◄weight_31.00►
◄weight_41.00►
◄idea►
◄subjectcreature / animal►
◄words70►
◄creativity0.00►
◄seed0►
◄mix_modeone trait = one photo►
◄idea_prioritybalanced►
◄unique_facetrue►
◄face_croptrue►

Hybrid fuses up to four photos into one new subject - a creature, a person, an object - and hands you a written description instead of a latent. It's the general-purpose member of the pack's "mix several things" family: where Face Blend blends every trait numerically between people, Hybrid allocates traits, whole or blended, across a set of reference photos.

Want a creature with a wolf's coat, a lynx's ears and something odd about the tail? Feed three photos, and get a paragraph the model can actually render.

The three steps

  1. LOOK - the text encoder (Qwen3-VL, loaded as krea2) reads each photo. The reading is cached in memory and on disk (ComfyUI/user/alchemica/schede_foto.json), so changing a weight or your idea re-reads nothing and a photo is read once even across restarts. For a person the face is read from a close crop found by an insightface detector - in a full-body photo it's too small to describe. face_crop off reads the whole photo, which is what the 1.0 node did.
  2. SHARE - code allocates the traits. mix_mode decides how: one trait = one photo takes every trait whole from a single photo, so weights set how many traits each photo contributes; blended traits makes every trait an in-between of all the photos, so weights set how much each pulls. The second is the real mix; the first is the readable one.
  3. WRITE - the encoder writes the final description from the shared sheet, with your idea folded in.

Inputs

clip and image_1 are required; image_2 … image_4 are optional. weight_1 … weight_4 are normalised, so 1 and 1 is half each and 2 and 1 is two thirds from photo 1; 0 ignores a photo.

The ones that decide whether you're happy:

  • subject - creature / animal by default, or person, object, generic. It picks which traits get compared. Person gets the 17-trait sheet with 14 of them on the face; animal gets body, coat, ears, muzzle, eyes, tail.
  • mix_mode - as above. Start with whole traits if you want to understand what each photo contributed; switch to blended when you want a genuinely new thing.
  • idea_priority - balanced by default. traits win means the idea sets pose, clothes and mood but never overrides the traits from the photos (for a person, the face and hair stay); idea wins lets your text steamroll them.
  • unique_face - on by default, and it's a good default: it strips generic beauty words ("perfect", "flawless", "beautiful", "symmetrical") that pull every generated face toward the model's average. If you've ever wondered why so many AI people look like siblings, that's the mechanism.
  • words - 70 for a creature; 110–140 for a person with all 17 traits plus the idea.
  • creativity - 0 is deterministic: same photos plus same weights gives the same description, which makes it usable for datasets and repeatable characters. 0.5–0.9 gives wording variants; change the seed (seed only matters above 0). The trait allocation never changes, only the phrasing.

Outputs: subject (STRING) and report.

Which of the three mixers to reach for

  • Hybrid - traits described in words, whole or blended. Best for creatures, animals, and anything where "explain the mixture" beats "average it".
  • Face Blend - people only, every trait blended, plus a per-trait guide and measured skin colour. Better when you want a child-of-two-parents result and control down to the jaw.
  • Image Mix - no words at all, the photos become a blended start latent and the sampler resolves it. Best when you want the model's visual knowledge rather than a description, and don't need to explain yourself.

Installing

# ComfyUI Manager: search "AlchemicaSampler"
cd ComfyUI/custom_nodes && git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler

ComfyUI 0.36+ - CLIP.generate is what does the writing, and it isn't in older builds. No pip dependencies. Restart the server. insightface is optional and only affects the face crop.

Where people get burned

Expecting likeness. This is text-level. Nothing is injected into the model, so the result is a described hybrid, not a photographic one. That's also why it doesn't collide with LoRAs, unlike the FaceID/PuLID generation of adapters that stopped at SDXL.

Weights that sum to something weird. They're normalised - only ratios matter. Setting everything to 0 gives you a divide-by-nothing situation and a description with no photos in it.

Reading a portrait photo with face_crop on and getting hair-and-shoulders traits only. That's the crop doing its job, but if you wanted body traits, turn it off or add a second, fuller shot.

Changing the text encoder and getting stale readings. The disk cache is keyed on the reading, not the encoder. There's no reread flag on this node; the pack's Face Blend has one. Delete ComfyUI/user/alchemica/schede_foto.json if the cache is lying to you.

Category⚗ AlchemicaMente/characters

Inputs (18)

NameTypeDefaultDescription
clipCLIPKrea 2's text encoder (Qwen3-VL-4B): it looks at the photos and writes the description
image_1IMAGE—
weight_1FLOAT1.000–4Weight of photo 1. Normalised: it sets the SHARE of this photo (1 and 1 = half each; 2 and 1 = two thirds from photo 1). 0 = ignore
weight_2FLOAT1.000–4Weight of photo 2. Normalised: it sets the SHARE of this photo (1 and 1 = half each; 2 and 1 = two thirds from photo 1). 0 = ignore
weight_3FLOAT1.000–4Weight of photo 3. Normalised: it sets the SHARE of this photo (1 and 1 = half each; 2 and 1 = two thirds from photo 1). 0 = ignore
weight_4FLOAT1.000–4Weight of photo 4. Normalised: it sets the SHARE of this photo (1 and 1 = half each; 2 and 1 = two thirds from photo 1). 0 = ignore
ideaSTRINGOptional: extra instruction for the final description. How much it weighs against the photos: 'priorita_idea'
subjectCOMBOcreature / animalWhich traits are compared: animal (body, coat, ears, muzzle, eyes, tail...), person (17 traits, 14 of the face), object, or generic
wordsINT7030–220Length of the hybrid description. Person: 110-140 (17 traits + the idea)
creativityFLOAT0.000–1.50 = deterministic (same photos + weights = same description: use it for datasets). 0.5-0.9 = wording variants, change the seed. The allocation of traits never changes
seedINT00–18446744073709550000Only matters when creativity > 0
image_2optIMAGE—
image_3optIMAGE—
image_4optIMAGE—
mix_modeoptCOMBOone trait = one photoone trait = one photo: every trait comes whole from one photo (weights = how MANY traits). blended traits: every trait is an in-between of all photos (weights = how MUCH each pulls): the real mix of the characters
idea_priorityoptCOMBObalancedHow much the idea weighs against the photos. 'traits win': the idea sets pose, clothes and mood but never changes the traits from the photos (person: the FACE and hair stay from the photos, the idea may still set the body). 'idea wins': the idea overrides them
unique_faceoptBOOLEANtruePerson: removes generic beauty words (perfect, flawless, beautiful, symmetrical...) that pull every face to the model's average face, and asks for a specific individual
face_cropoptBOOLEANtruePerson: reads the face from a close crop (insightface detector, CPU). On a full-body photo the face is too small to describe. Off = whole photo, as in 1.0.x

Outputs (2)

NameTypeDescription
subjectSTRING—
reportSTRING—