Nodes/Nynxz H3/H3 Mood Board
ComfyUI Node

H3 Mood Board

Six Style Images, One <Picture>, and No Competing References

By Nynxz·Created 2 months ago·Updated about 22 hours ago· 6
H3 Mood Board
  • images
  • references
  • references
◄blendaverage►
◄resolution384►
◄weights►
◄fitcover►
◄block_size1►
◄feather0.0►
◄jitter0.00►
◄seed0►
◄alpha_modeexclude►
◄label►

Here's the problem H3 Mood Board exists to solve. You have five images that share a look - the same grade, the same painted lighting, the same film grain - and none of them is the subject you want. Wire all five in as references and H3 sees five competing pictures and tries to satisfy all of them. Wire them into a Mood Board and you get one <Picture> that encodes only what they agree on.

How it works

Each board image is encoded by the vision tower separately. Then their token spans are blended position by position, and the spare brackets are cut out. Where the vectors line up they reinforce; where they disagree they partly cancel, and what's left is the shared look. That's average.

mosaic takes a different route: each grid cell comes whole from one source, checkerboard-style, so you keep each image's local coherence instead of averaging it into mush. block_size sets the cell size in grid units (1 alternates every token; bigger keeps bigger contiguous patches of one source), feather blurs the ownership field so cells meet rather than butt together, and jitter is the chance a cell goes to a different source than the pattern says - that's what breaks up a visible checkerboard. seed makes the jitter reproducible.

The resolution widget is the clever bit and the reason boards work at all: every image is fitted to the same square grid so their token grids match. It's also the board's entire cost, because Qwen3-VL spends one vision token per 32×32 pixels. 384 is 144 tokens for the whole board; 512 is 256. Low reads as mood, high starts reproducing the source detail instead.

Inputs and outputs

Required: images (an autogrow slot group, up to 9 - they're blended, not laid side by side), blend (average or mosaic), resolution, weights, fit (cover centre-crops and keeps proportions; stretch squashes).

weights is optional per-image bias like 1, 0.5, 2, one per image, blank for an equal mix. It's normalised, so raising all of them changes nothing. Note it means different things per mode: under average it's how much of the mix a source carries; under mosaic, which never mixes, it's how many cells it claims.

Optional: block_size, feather, jitter, seed (all mosaic-only except the seed), alpha_mode, label, and a references input for chaining.

alpha_mode: exclude is the sleeper feature. A transparent area drops out of the blend, so its share goes to whoever is still opaque there. Take the sky and the grade from a photo and leave its building behind.

One output: references, of the pack's NYNXZ_H3_REFS type. It chains into H3 Reference or another board, and the whole chain feeds H3 Reference to Video's references input.

Chaining, and one rule you must not break

Boards and References chain through the references input. Use BYPASS (Ctrl+B) to take one out of the chain. Do not mute it - the docs are explicit that muting breaks the chain rather than skipping a link.

Also read the encode node's picture_map before you write your prompt. Collapsing a board leaves gaps in the picture numbering, because the surviving <Picture i> label was written by the tokenizer's counter before the cut. Pictures do not run 1..N, and the picture_map is the authoritative list.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-NynxzH3

Restart, ComfyUI 0.30.0+, plus the H3 weights. Nothing extra for the board itself.

Worth knowing before you trust it

The blend engine is ported from the author's ComfyUI-QI21Remix, where the same trick needs invasive surgery on the encoder's image slots. It ports better here - H3 keeps its vision tokens and hands over a map, so a run of vision tags simply is a picture. But the pack labels this whole reference group experimental, and the honest limit is worth repeating: the plumbing is checked against core, the result isn't broadly proven. If a board doesn't move your output, drop resolution and try again with fewer images before concluding the technique is wrong.

CategoryNynxz/H3/References

Inputs (12)

NameTypeDefaultDescription
imagesCOMFY_AUTOGROW_V3Images on the board. They are blended, not laid side by side.
blendCOMBOaverage'average' — a weighted mean at every position, so agreement reinforces and disagreement partly cancels; the residual is the shared look. 'mosaic' — each cell taken whole from one source, keeping local coherence instead of averaging it away.
resolutionINT38464–1024Every board image is fitted to this square so their token grids match — which is what makes them blendable at all. It is also the board's whole cost: one vision token per 32x32 pixels, so 384 is 144 tokens and 512 is 256. Lower reads as mood, higher starts reproducing detail.
weightsSTRINGOptional per-image bias, e.g. '1, 0.5, 2' — one per image. Blank is an equal blend. NORMALISED, so raising all of them changes nothing. Under 'average' a weight is how much of the mix a source carries; under 'mosaic', which never mixes, it is how many CELLS it claims.
fitCOMBOcoverHow each image reaches the square grid: 'cover' centre-crops and keeps proportions, 'stretch' squashes the whole frame in.
block_sizeoptINT11–16mosaic only: the checkerboard cell in grid units. 1 alternates every token; larger keeps bigger contiguous patches of one source.
featheroptFLOAT0.00–8mosaic only: blur the ownership field across the grid so cells meet instead of butting together. Only weights are smoothed, never the tokens.
jitteroptFLOAT0.000–1mosaic only: the chance a cell goes to a different source than the pattern says, breaking up the regular checkerboard.
seedoptINT00–4294967295Seeds the jitter, so a board is reproducible.
alpha_modeoptCOMBOexclude'exclude' keeps a transparent area out of the blend, so its share goes to whoever is still opaque there — take the sky and the grade from a photo and leave its building behind. 'ignore' blends the whole frame.
labeloptSTRINGA name for the board, used in errors and in the picture map.
referencesoptNYNXZ_H3_REFSChain another H3 Reference or Mood Board in here.

Outputs (1)

NameTypeDescription
referencesNYNXZ_H3_REFS—