H3 Mood Board
Six Style Images, One <Picture>, and No Competing References
- images
- references
- references
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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| images | COMFY_AUTOGROW_V3 | Images on the board. They are blended, not laid side by side. | |
| blend | COMBO | average | '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. |
| resolution | INT | 38464–1024 | Every 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. |
| weights | STRING | Optional 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. | |
| fit | COMBO | cover | How each image reaches the square grid: 'cover' centre-crops and keeps proportions, 'stretch' squashes the whole frame in. |
| block_sizeopt | INT | 11–16 | mosaic only: the checkerboard cell in grid units. 1 alternates every token; larger keeps bigger contiguous patches of one source. |
| featheropt | FLOAT | 0.00–8 | mosaic only: blur the ownership field across the grid so cells meet instead of butting together. Only weights are smoothed, never the tokens. |
| jitteropt | FLOAT | 0.000–1 | mosaic only: the chance a cell goes to a different source than the pattern says, breaking up the regular checkerboard. |
| seedopt | INT | 00–4294967295 | Seeds the jitter, so a board is reproducible. |
| alpha_modeopt | COMBO | exclude | '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. |
| labelopt | STRING | A name for the board, used in errors and in the picture map. | |
| referencesopt | NYNXZ_H3_REFS | Chain another H3 Reference or Mood Board in here. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| references | NYNXZ_H3_REFS | — |