MiniMax H3 Aicg 分段二采
The second pass that fixes resolution without breaking your seams
- h3_context
- segments
- sampler
- sigmas
- model
- refined_segments
Every long-video workflow hits the same wall: you can't sample 1080p across a hundred segments on a consumer card, and you can't just upscale the finished mp4 afterwards without it looking like a JPEG that learned to move. AICG3D_H3SegmentRefine - MiniMax H3 Aicg 分段二采 - is the pack's answer: sample small, then run a second denoise pass over each segment at the real resolution, with the segments still chained so the seams survive.
It sits in the middle of the pipeline - 分段采样 → 分段二采 → 分段解码. Skip it and you get a fast, softer preview; come back when the preview is right and you want the delivery version.
What the second pass does
For each segment it takes the first-pass latent, gets it to the new size, re-encodes it, and resamples it with the sampler and sigmas you connect - at a deliberately low sigma range, so the model sharpens and adds detail rather than inventing a new shot. Then it hands the refined tail to the next segment, exactly the way the first pass did. That's the important bit: your second pass is also a chain, so segment 7's refine still knows what segment 6 ended on.
Getting to the larger size happens one of two ways, and this is the decision that matters:
pixel_resize- decode the segment, resize the images, re-encode with the video VAE. Blunt, predictable, no extra model to download. It's the default for a reason.latent_upscale- run a learned 3D latent upscaler over the latent instead, so you skip the RGB round trip and its detail loss. Better output; you have to actually own the model. Drop it inComfyUI/models/latent_upscale_models, then pick it inlatent_upscale_model, setlatent_upscale_scale(1.0–4.0, default 1.3) and leave precision on fp16 unless you see banding.
The inputs you'll actually touch
Required inputs are heavy - this node wants the whole picture, not just the segments, because it rebuilds each segment's prompt and media references from scratch: h3_context, segments, sampler, sigmas, seed, plus the mode widgets. model is optional and only needed if the context doesn't already carry one.
Then the four that change your day:
target_width/target_height- 0 means "keep the canvas the context planned". Set both (multiples of 32) to upscale to a specific size. Set one and you'll get an odd aspect; don't.refine_execution-whole_segmentsamples the full frame in one go.tiled_low_vramwalks the frame in spatial tiles usingtile_width/tile_height/tile_overlap/tile_fade. Tiled is how a 12GB card does 1080p; it's also slower and the fade band is what hides the tile joins, so don't settile_fadeto 0 and then blame the node.segment_seeds- leave it atdefaultand every segment inherits the node'sseed. Give it a comma list and segments get individual seeds, with the remaining ones falling back to the main seed. Handy when one segment keeps producing a weird hand.refine_mode- as above. Switching tolatent_upscalewithout a model selected is a hard validation error; switching back topixel_resizeis always allowed even if the workflow remembers a filename you've since deleted.
Output is one thing: refined_segments (MINIMAX_H3_SEGMENTS), into 分段解码.
Install
Same pack, same install, no separate download beyond the optional upscaler model:
cd ComfyUI/custom_nodes
git clone https://github.com/JGRFW/comfyui-AICG3D
Restart, hard-refresh the browser, look under the AICG3D category in the node menu. Do not also install the standalone ComfyUI-AICG3D-PromptSplit or the old ComfyUI-MiniMaxH3-Easy - the pack carries its own copies now and duplicate class names fight over the frontend.
Where it goes wrong
It's slow and you didn't expect it to be. You're sampling every segment a second time; the cost is roughly first-pass × segments × extra steps. If you only need one hero shot at high res, refine with a short sigma schedule and accept the softness elsewhere.
The tile seams are visible. Overlap too small, fade too small, or the tiles are landing on high-frequency detail. Push tile_overlap up before you push steps up.
"Select an H3 latent upscaler model for latent_upscale mode." Exactly what it says - the dropdown only lists what's in models/latent_upscale_models, and an empty folder gives you a placeholder string. Either drop a model in or switch back to pixel_resize.
Denoise too high washes out the first pass. The refine path reuses your sigmas, so if you hand it a schedule that starts near 1.0 you're not refining, you're regenerating - and the per-segment conditioning will drift. Somewhere in the 0.3–0.5 starting range is the sane zone. If the packed workflow gives you a "steps / schedule" group, that's the knob it means.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| refine_mode | COMBO | pixel_resize | 2 options: pixel_resize, latent_upscale |
| h3_context | MINIMAX_H3_CONTEXT | — | |
| segments | MINIMAX_H3_SEGMENTS | — | |
| sampler | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| seed | INT | 00–4294967295 | — |
| refine_execution | COMBO | whole_segment | 2 options: whole_segment, tiled_low_vram |
| target_width | INT | 00–16384 | — |
| target_height | INT | 00–16384 | — |
| latent_upscale_model | COMBO | 1 options: (place models in: /tmp/ComfyUI/models/latent_upscale_models) | |
| latent_upscale_scale | FLOAT | 1.31–4 | — |
| latent_upscale_device | COMBO | cuda | 2 options: cuda, cpu |
| latent_upscale_precision | COMBO | fp16 | 3 options: fp32, fp16, bf16 |
| tile_width | INT | 51232–16384 | — |
| tile_height | INT | 51232–16384 | — |
| tile_overlap | INT | 12832–16384 | — |
| tile_fade | INT | 320–16384 | — |
| segment_seeds | STRING | default | — |
| modelopt | MODEL | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| refined_segments | MINIMAX_H3_SEGMENTS | — |