H3 Build Conditioning
The node that finally hands MiniMax H3 its conditioning — everything wires into this
- semantic_reference
- latent
- first_frame
- last_frame
- image_reference
- video_reference
- audio_reference
- conditioning
If you've been poking at an H3 workflow and wondering where all those reference wires are supposed to converge, this is the answer. H3 Build Conditioning (TuringUtilsH3BuildConditioning) is the junction box. It takes the reusable semantic pass, the current-resolution VAE references, and your target latent, and produces the single CONDITIONING object your sampler actually consumes. Without it, all the encoding you did in the reference nodes is inert data.
Think of it as the difference between ingredients and a meal. The reference nodes gave you encoded latents and a Qwen semantic pass; this node assembles them into the exact structure H3's DiT expects - frame count, keyframe anchors at their resolved positions, and the reference blocks - then stamps it all onto the conditioning. It's the last node before the KSampler.
Inputs that matter
semantic_reference(required) - from H3 Semantic Reference. This carries the Qwen encode.latent(LATENT, required) - the H3 target latent you're generating into. This is where the frame count comes from.keyframes_reference,image_reference,video_reference,audio_reference(all optional) - the outputs of the four encode nodes, connected as your workflow needs them.
Output: conditioning (CONDITIONING) - wire it into your sampler's conditioning input, alongside a standard negative encode if you use one.
How it actually works
Three validation steps, then one merge. It checks that the reference structure matches what the semantic pass was built with (the manifest - see the previous node), computes the target frame count from your latent's temporal grid, and confirms any keyframe latents match the target's spatial resolution. Then it attaches minimax_frame_count, minimax_keyframes (anchored at frame 0 and the last frame), and minimax_refs to the semantic conditioning, and out comes a perfectly normal CONDITIONING tensor that ComfyUI's sampler treats like any other.
The two errors you'll actually hit
- "Semantic and DiT H3 reference structures differ." You changed the reference set between H3 Semantic Reference and this node. Same nodes, same counts on both sides - that's the fix. Re-run the semantic pass if you genuinely changed the shape of the references.
- Keyframe mismatch - "does not match target H3 spatial grid; connect the same latent to H3 Keyframes or resize upstream." If you passed a latent to H3 Keyframes, it must be the same latent you connect here. The node is refusing to condition on a 1024 keyframe against a 768 target.
Neither is a crash-and-burn failure; they're the pack refusing to hand the sampler garbage. Annoying in the moment, better than a silently wrong generation.
Installing it
Part of the ComfyUI Turing Utils pack (repo wjie98/comfyui-svdint4; the README still carries the old comfyui-turing-utils name). ComfyUI Manager - search "svdint4" or "Turing Utils" - or:
cd ComfyUI/custom_nodes
git clone https://github.com/wjie98/comfyui-svdint4
Restart ComfyUI. requirements.txt is only safetensors; the CUDA kernel (python -m pip install -v --no-build-isolation -e ./kernel) is the separate step for actually running H3 fast, while this node - conditioning assembly - needs no kernel at all.
Where it sits in the graph
All four reference nodes plus H3 Semantic Reference converge here, the latent goes in, and a real CONDITIONING comes out the other side into your sampler. If you only remember one wiring rule for this pack, make it this: every reference you connect to H3 Semantic Reference, connect to this node too - same order, same nodes - and use the same latent on both H3 Keyframes and here.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| semantic_reference | TURING_UTILS_H3_SEMANTIC_REFERENCE | — | |
| latent | LATENT | — | |
| first_frameopt | TURING_UTILS_H3_KEYFRAME_REFERENCE | — | |
| last_frameopt | TURING_UTILS_H3_KEYFRAME_REFERENCE | — | |
| image_referenceopt | TURING_UTILS_H3_IMAGE_REFERENCE | — | |
| video_referenceopt | TURING_UTILS_H3_VIDEO_REFERENCE | — | |
| audio_referenceopt | TURING_UTILS_H3_AUDIO_REFERENCE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |