Nodes/AICG3D 短剧工作台 - MiniMax H3 无限视频/AICG-渲染器(高级·加速)
ComfyUI Node

AICG-渲染器(高级·加速)

Same Renderer, But the Model Is Forced Onto an Explicit Wire

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

The difference is one socket

AICG-渲染器(高级·加速) is AICG-渲染器(高级) with a single structural change, and if you don't notice it you'll spend ten minutes wondering why the node won't queue. In the plain version, model is optional - the renderer happily uses whatever model the h3_context is carrying. Here, model is a required input, and it comes first in the socket order, above h3_context.

That's it. Same sampling path, same joint audio/video decode, same VIDEO output, same noise_seed / sampler_name / scheduler / steps / denoise / cleanup_after_run widgets, same optional sampler and sigmas for external schedules. The source literally subclasses the other node and reorders the inputs.

So why does the pack ship both?

Why a required model wire is the better default

Because it makes the patch chain visible. H3's "acceleration" story is LoRAs and sampling patches - a four-step distilled LoRA, a sigma-shift node, whatever model surgery your workflow needs - and all of that happens on a MODEL between the loader and the sampler. In the plain renderer that wire is optional, so it's easy to leave it dangling and sample the base weights while your carefully loaded LoRA sits in the graph doing nothing. The model still comes from the context, the render still works, the video still looks plausible, and you have no idea your patch was ignored.

The WithModel variant takes that failure mode off the table. No model wire, no run. Two tracks on the canvas: model on top, context below.

How to wire it

Load with the pack's loader (which emits both h3_bundle and model), or build a bundle with AICG3D_H3ModelAdapter and patch the model yourself. Then:

MODEL  -> [LoRA loader] -> [ModelSampling / shift patch] -> model  (this node)
h3_context                                                 -> h3_context
video                                                      -> SaveVideo

If you have no patches at all, connect the loader's model straight in. The node doesn't care whether the chain has anything in it - it just wants the wire to exist.

Settings, briefly

Everything you'd set on the plain renderer applies here:

  • noise_seed - 64-bit, reroll until the shot is right.
  • sampler_name, scheduler, steps, denoise - 20 steps at full denoise is a sane default for H3 at native resolution.
  • cleanup_after_run - defaults to unloading the model and emptying the cache after the run. Lowest footprint, slowest second take. Switch to 释放缓存 if you're iterating on one shot with VRAM to spare.
  • sampler / sigmas (optional) - external schedule overrides, tooltip-documented as overriding sampler_name and the scheduler/steps/denoise trio respectively.

Output is the single VIDEO.

Install

Manager: search AICG3D or 短剧工作台. Manual:

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

Restart ComfyUI and hard-reload the browser (Ctrl+F5) - this pack's UI assets are versioned precisely because stale JS causes ghost bugs. The only Python dependency in requirements.txt is imageio-ffmpeg.

You'll need H3 weights in place before any of this is meaningful: FL2VA/REF2VA transformers in models/diffusion_models, the text encoder in models/text_encoders, minimax_h3_video_vae_* and minimax_h3_audio_vae_fp32 in models/vae. Note that the H3 Community License carves the US, EU, UK and South Korea out of its territory - worth reading before you build a pipeline on it commercially.

Traps

"Required input missing: model." The whole point of the node. If you migrated an existing graph from the plain renderer by swapping the class, the wire didn't come with it.

Patching after the context. If you also built the context through a path that applied its own acceleration patches, you now have two model states in play: the context's and the one on this wire. The explicit wire wins, which is the behaviour you want, but it means the context's patched model is idle and its VRAM is wasted. Pick one place to patch.

Expecting it to be faster. "加速" in the display name isn't a performance claim from this node - it's the variant that makes an acceleration chain practical. The speed comes from the LoRA and the schedule you attach, not from the node class.

CategoryAICG3D/提示词与 Skill

Inputs (10)

NameTypeDefaultDescription
modelMODEL—
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 默认行为。
sampleroptSAMPLER可选外部采样器,例如 DMAD Sampler。连接后覆盖 sampler_name。
sigmasoptSIGMAS可选外部 Sigmas,例如 DMAD Sigmas。连接后覆盖 scheduler、steps 和 denoise 截断。

Outputs (1)

NameTypeDescription
videoVIDEO—