AICG3D_H3Sampler
An H3 Sampler That Takes Its Schedule From Someone Else
- h3_context
- model
- sampler
- sigmas
- sampling_plan
- sampled_latent
Where this one fits
The renderers are one-stop: they sample and decode and compose. AICG3D_H3Sampler is the sampling half on its own, exposed as a node that takes a SAMPLER and SIGMAS as real inputs. It exists because sometimes the schedule isn't yours to choose - a distilled four-step LoRA ships its own sigma table, an experimental sampler node drops its own sigmas, and you want H3's latent to go through that exact schedule with no menu in between.
In the pack's own words: without an optional sampling plan this behaves exactly like the ordinary Basic Guider path. Connect a strategy like SelfLift and the execution path switches. So the default case is boring on purpose; the interesting case is what you attach.
If you want one node with a sampler_name dropdown and a steps box, use AICG-采样器(高级) instead. This one is for when the schedule comes off a wire.
How it works
Four required inputs and one optional, and the shape of them tells you the design. h3_context supplies conditioning, latent, VAEs and fps; model is the sampler model; sampler and sigmas are the schedule you brought; seed drives the noise and carries a control_after_generate widget so you can randomise it from the node.
Internally it computes the step count straight off the sigma tensor - length minus one - reported to the native progress bar, then runs the sample through the same single-shot sampling routine the segment chain uses. So the schedule really is authoritative: the node doesn't ask you for steps because the sigmas already answered.
The optional sampling_plan input takes the pack's strategy type, which is where SelfLift hooks in. Leave it empty and you're running the plain basic-guider-equivalent path.
Output is one wire: sampled_latent (LATENT), a combined audio+video latent. Feed it to a decode path that knows about both streams, not to a plain VAEDecode - the audio half would be dropped.
The bits that bite
Segmented contexts are rejected. If the h3_context came from the Context Segments path, this node raises and tells you to use Segment Sample. It's a single-clip sampler; a multi-shot plan has no single latent to sample.
Empty conditioning or latent. The node validates both and says so plainly, but the usual cause is a context node whose reference media failed to load - the context exists, it just has nothing in it. Rebuild the context from the H3 node rather than debugging here.
Seed range. This input is 32-bit (0 to 4294967295), not the 64-bit range the renderers use, and the node folds it into 32 bits on the way through. If you're porting a seed from a renderer and getting a different result, that truncation is the reason.
The display name is untranslated. It shows up on the canvas as plain AICG3D_H3Sampler while every sibling node in the pack has a Chinese label. Not a bug, just a node the tidy-up pass hasn't reached. Search by class name and you'll find it.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/JGRFW/comfyui-AICG3D
Manager users: search the Registry for AICG3D, 短剧工作台 or MiniMax H3. Restart ComfyUI, then Ctrl+F5 to clear the cached frontend. The plugin's only pip dependency is imageio-ffmpeg (python -m pip install imageio-ffmpeg in ComfyUI's environment if the sequence combiner complains).
You'll need the H3 weights in place: FL2VA and/or 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. Whatever external sampler and sigmas nodes you plan to plug in need to be installed separately - this pack doesn't bundle them.
One packaging note: the class is registered under the pack's AICG3D_H3_ prefix even though internally it derives from the upstream MiniMax-H3-Easy code (MIT, credited). That prefix is deliberate - it's what stops two H3 plugins from silently overwriting each other's nodes. Don't try to install a second H3 pack alongside this one and expect both to work.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| h3_context | MINIMAX_H3_CONTEXT | — | |
| model | MODEL | — | |
| sampler | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| seed | INT | 00–4294967295 | — |
| sampling_planopt | default | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sampled_latent | LATENT | — |