HY OmniWeaving CLIP Vision Concat
The CLIP-Vision concat node
- clip_vision_output_1
- clip_vision_output_2
- clip_vision_output_3
- clip_vision_output_4
- CLIP_VISION_OUTPUT
OmniWeaving's reference2v mode is at its best when it's given more than one reference image - combine a character shot and a style frame and it can build a video that honors both. But each reference needs to go through HY OmniWeaving Redux Vision Encode first, which means you end up with multiple CLIP_VISION_OUTPUT objects and no clean way to hand them all to the next node at once. HY OmniWeaving CLIP Vision Concat is the glue: it takes up to four CLIP-vision outputs and merges them into a single one.
Mechanically it's about as simple as a node gets. All the tensor attributes (last_hidden_state, image_embeds, penultimate_hidden_states, all_hidden_states, and the all-important mm_projected) get concatenated along the batch dimension, and the per-image sizes are collected into image_sizes. The result is one CLIP_VISION_OUTPUT where the batch is just your references stacked - which is exactly what the conditioning path expects when it forwards vision context into the model.
Inputs and outputs
- clip_vision_output_1 - required, the first encoded reference.
- clip_vision_output_2 / _3 / _4 - optional; wire as many as you have references. Unconnected slots are simply ignored.
Output is a single CLIP_VISION_OUTPUT, which feeds into HY OmniWeaving Conditioning (it gets forwarded into the positive/negative conditioning for any non-t2v task) or into HY OmniWeaving Text Encode's clip_vision_output input.
If you're only using one reference, you don't need this node - skip it and wire the Redux output straight through. It earns its keep the moment you're blending two, three, or four references, which is the whole point of reference2v.
Installing it
It's part of the hy_omniweaving_comfyui_unofficial pack. ComfyUI Manager (search "hy_omniweaving") or:
cd ComfyUI/custom_nodes
git clone https://github.com/Shiba-2-shiba/hy_omniweaving_comfyui_unofficial
Restart. No pip dependencies; needs a recent ComfyUI for the extension API. No model files of its own - it only shuffles tensors that already exist, so it can't add VRAM pressure by itself. (The two or three Redux encodes feeding it are a different story; each holds a SigLIP model in memory.)
Common issues
- Only the first reference "sticks" - check that every input slot actually has a Redux Vision Encode output, and that each encoder used the same
cropand model files. Mixing different preprocessing between references gives the concat a mismatched batch. - A
Nonemm_projectedsneaks into the merged output - this is the legacy-route symptom. The Redux node populatesmm_projected; if one of your inputs came from a different vision encoder that didn't, the concat can only merge what's there. Re-route all references through the pack's Redux node. - Shape mismatch errors - you concatenated outputs from different SigLIP configs. Flex-Redux uses a 384px SigLIP; if one encoder resolved a different config, the hidden states won't line up. Keep all references on the same encoder file.
The one opinion worth having: for a single-reference i2v run, this node is dead weight - don't add it just because it exists. Save it for actual multi-reference reference2v work, where it quietly does exactly what it should.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_vision_output_1 | CLIP_VISION_OUTPUT | — | |
| clip_vision_output_2opt | CLIP_VISION_OUTPUT | — | |
| clip_vision_output_3opt | CLIP_VISION_OUTPUT | — | |
| clip_vision_output_4opt | CLIP_VISION_OUTPUT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CLIP_VISION_OUTPUT | CLIP_VISION_OUTPUT | — |