ComfyUI Node

AICG-渲染器(高级)

One Node That Samples, Decodes Both Streams and Hands You a Video

By JGRFW·Created about a month ago·Updated about 13 hours ago· 261
AICG-渲染器(高级)
  • h3_context
  • model
  • sampler
  • sigmas
  • video
◄noise_seed0►
◄sampler_name▾►
◄scheduler▾►
◄steps20►
◄denoise1.00►
◄cleanup_after_run卸载模型►

The appeal is the wire count

A stock H3 render is five nodes before you've decoded anything: noise, scheduler, sampler select, basic guider, custom-sampler-advanced. Then two decoders, because H3 emits picture and audio from the same latent, and then a CreateVideo to glue them into one file with a frame rate. Fourteen-ish nodes, six of which you set once and never touch again except when something drifts.

AICG-渲染器(高级) (AICG3D_H3RenderAdvanced) collapses all of that into one box with one input and one output. Feed it the h3_context from an H3 context node, get a VIDEO out, wire that to SaveVideo. If your workflow is one clip and you're not doing latent surgery in the middle, this is the node you want - the pack's own 13-series workflows lean on it for exactly this reason.

What happens inside

Reading the source, the render function does three things in order.

Sampling. It runs the same internal path as AICG-采样器(高级): build noise from noise_seed, compute sigmas from scheduler + steps + denoise, and sample with the conditioning and latent that live inside the context. If you connect the optional sampler and sigmas inputs - an external sampler pair like a DMAD four-step setup - those take over, and the tooltips are explicit that sampler overrides sampler_name while sigmas overrides scheduler, steps and the denoise truncation.

Decoding. It tries the official joint AV decode first, splitting the combined latent into video and audio and running each through its own VAE. If that helper isn't importable it falls back to a plain VAEDecode plus vae_decode_audio - same result, slightly different path, and it means a half-broken install still gets you a picture out rather than a stack trace.

Composing. Frames and audio go into a VIDEO at the context's fps. One wrinkle worth knowing: if the context carries a locked driving audio track (Digital Human mode), that track is used instead of the generated one. Your avatar says the line you gave it, not the line the model invented.

The settings that actually matter

  • noise_seed - 64-bit. Move it until the shot works.
  • sampler_name / scheduler / steps / denoise - the standard quartet, defaulting to 20 steps at full denoise. On H3 those defaults are fine; if you've come from SDXL, resist the instinct to pile on steps, and if you've bolted on a distilled LoRA, drop the steps to whatever that LoRA documents.
  • cleanup_after_run - the one people don't read. 卸载模型 (the default) unloads the model and empties the cache after the node runs: lowest memory, slowest next run. 释放缓存 returns cached VRAM to the driver but keeps the model resident - noticeably faster on a second render. 不处理 leaves ComfyUI alone. On a 24GB card running a 33B model, the default is the right call; if you're doing three takes in a row on 48GB, switch it to 释放缓存.
  • Optional model - a patch chain. Connect it and the renderer samples your model instead of the one in the context, which is how you apply a LoRA or a sampling patch without rebuilding the context.

One output: video (VIDEO), straight into SaveVideo or a combine node.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/JGRFW/comfyui-AICG3D

Restart, then Ctrl+F5 - the frontend JS is cached hard enough that a soft reload can leave you looking at stale panels. Manager route: search the Registry for AICG3D, 短剧工作台 or MiniMax H3 (publishes as aicg3d-h3-suite).

Dependencies genuinely are light: requirements.txt contains exactly imageio-ffmpeg. If ComfyUI's Python can't find it:

python -m pip install imageio-ffmpeg

Run that in ComfyUI's environment, not your system Python. The model side is the real prerequisite - FL2VA (and optionally REF2VA) transformers, the text encoder, the video VAE and the audio VAE, all present in the folders the loader scans.

Where it bites

Memory, honestly. H3 is a 33B model; people asking whether it runs on a 3060 got the answer "slowly" on launch day, and that has not changed. This node's default cleanup is aggressive for a reason. If you OOM at the decode rather than the sample, lower resolution or frames before you touch steps.

denoise less than 1 with an external SIGMAS connected. The node logs that it's ignoring your denoise because the external schedule wins. That's correct behaviour, but if you were expecting a partial re-render, you'll get a full one.

Silent output. You skipped a VAE somewhere upstream, or the context was built in Digital Human mode with a driving track that's shorter than the clip.

Nothing renders at all. Check the context came from a whole-clip H3 node. Contexts built by the Context Segments path are multi-shot plans, and the single-pass renderers reject them by design rather than silently rendering shot one.

CategoryAICG3D/提示词与 Skill

Inputs (10)

NameTypeDefaultDescription
h3_contextMINIMAX_H3_CONTEXT—
noise_seedINT00–18446744073709550000—
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
stepsINT201–10000—
denoiseFLOAT1.000–1—
cleanup_after_runCOMBO卸载模型跑完这个节点后怎么收尾:卸载模型 = 连模型一起卸出显存并回收内存,占用最低,但下次运行要重新加载;释放缓存 = 只把 PyTorch 缓存的显存还给驱动并回收内存,模型留在显存里,下次跑得快;不处理 = 保持 ComfyUI 默认行为。
modeloptMODEL—
sampleroptSAMPLER可选外部采样器,例如 DMAD Sampler。连接后覆盖 sampler_name。
sigmasoptSIGMAS可选外部 Sigmas,例如 DMAD Sigmas。连接后覆盖 scheduler、steps 和 denoise 截断。

Outputs (1)

NameTypeDescription
videoVIDEO—