ComfyUI Node

MiniMax H3 Aicg 3D人物白模

Turn your own footage into a grey 3D mannequin — motion reference without the actor

By JGRFW·Created about a month ago·Updated about 16 hours ago· 309
MiniMax H3 Aicg 3D人物白模
  • media_bundle
  • video
  • background
  • white_video
  • white_frames
  • audio
  • fps
  • status
◄目标提示词person►
◄sam3_checkpointsam3.1_multiplex_fp16.safetensors►
◄rtdetr_modelrt_detr_v4-x-hgnet_fp16.safetensors►
◄body_modelsam_3d_body_dinov3_bf16.safetensors►
◄moge_modelgeometry_estimation\moge_3_vitg_fp16.safetensors►
◄启用MoGefalse►
◄MoGe分辨率等级5►
◄MoGe细化步数0►
◄最大人物数16►
◄检测阈值0.50►
◄检测间隔1►
◄长边像素736►
◄推理批大小64►
◄渲染模式mesh►
◄着色器default►
◄人物颜色衰减1.00►
◄启用表情true►
◄启用平滑true►
◄保留原始音频true►
◄保留原视频场景false►
◄绿色背景false►
◄逐人锁定颜色true►
◄人物颜色排序左到右►
◄人物颜色强度0.75►

Say you have a clip of someone moving exactly the way your scene needs, and you want that motion on a different character in a different location. The classic answer is a pose preprocessor: DWPose or OpenPose spits out a 17-keypoint stick figure, you feed it to a ControlNet, and you spend the evening fighting hands.

「MiniMax H3 Aicg 3D人物白模」 takes the newer route. It reads a video, reconstructs each person as an actual 3D body mesh, and renders that as an animated grey mannequin clip with the original audio kept - ready to drive a character or scene replacement pass. A mesh carries depth, body volume and facing direction that a skeleton can't, and that's what decides whether a replacement shot looks like the same performance or a mime act.

How it works, stage by stage

Everything happens inside one node, which is why it has twenty-odd widgets and no visible sub-graph. In order:

Frames come from media_bundle (the pack's 资源库 node; defaults to its first video) or a plain video input, which wins if you connect both. They get scaled so the long side matches 长边像素 (736 default, snapped to multiples of 16) - that downscale matters, since every later stage runs at that size.

Detection is two passes. sam3_checkpoint is text-encoded with 目标提示词 (default person) and fed to SAM3 video tracking, which produces ID-stable tracks using 检测阈值, 最大人物数 and 检测间隔. In parallel an RT-DETR model supplies per-frame person boxes. Then, if 启用MoGe is on, MoGe estimates scene geometry and hands back an FOV so the body model knows what lens it's looking through; with it off the node assumes a default ~53°, which is why the tooltip tells 16GB cards to leave it off and see if that's good enough.

The 3D work is SAM3D-Body: predict the body, optionally add 启用表情 face detail, optionally 启用平滑 a gaussian pass over the pose tracks so jitter doesn't become a twitch. Then it renders. 渲染模式 picks what you see - mesh for the shaded body, silhouette for flat cutouts, openpose_2d/openpose_3d if downstream wants a skeleton, scail for the mask look - and 着色器 recolours it (normals, depth, rainbow variants).

The inputs that change the result

Three inputs matter more than the rest. 保留原视频场景 decides the background: off means a plain black backdrop, on overlays the mannequin onto your original footage so you keep the room. 绿色背景 only bites when the previous switch is off, and gives you a chroma-ready green plate. And the per-person colour block - 逐人锁定颜色 with 人物颜色排序 (左到右, 面积优先, 跟踪顺序) and 人物颜色强度 at 0.75 - assigns a stable colour per tracked person from a fixed blue/red/green/magenta/cyan/yellow palette. If you're doing 替换1 and 替换2, that colour is how you tell your two bodies apart when they cross. Push the strength to 1.0 and you get flat, unmistakable colours with slightly flattened surface detail; 0.75 keeps the mesh shading legible.

The outputs are white_video (the clip, audio muxed in when 保留原始音频 is on), white_frames for nodes that want images, audio separately, fps, and status - a plain string reporting frame count, resolution and how many colour IDs were assigned. Read status; it's the fastest way to know whether tracking found one person or six.

This needs a recent ComfyUI, and four model files

The node doesn't ship its own inference code - it calls ComfyUI's native SAM3, SAM3D-Body, RT-DETR, MoGe and SCAIL nodes. On a build from before those existed you get a ModuleNotFoundError on comfy_extras.nodes_sam3 the moment you queue. Update ComfyUI first.

Where to put them - the four dropdowns are populated from your folders, which tells you exactly that:

cd ComfyUI/custom_nodes
git clone https://github.com/JGRFW/comfyui-AICG3D
cd comfyui-AICG3D && pip install -r requirements.txt
  • sam3_checkpoint → models/checkpoints/ (e.g. sam3.1_multiplex_fp16.safetensors)
  • rtdetr_model → models/diffusion_models/ (anything with rt_detr in the name)
  • body_model → models/detection/ (sam_3d_body in the name)
  • moge_model → models/geometry_estimation/ (only if you enable MoGe)

The pack does not download these. The dropdowns will happily display their fallback filename even when the file isn't on disk, then fail at load - so if the node errors on a model it named itself, that's your missing file, not a broken install.

Where it goes wrong

MoGe on is the classic VRAM ambush; the author's own tooltip says turn it off first on 16GB. Detection is threshold-sensitive - 检测阈值 at 0.5 drops background extras but will also lose a second person at the edge of frame, so lower it before concluding the node can't see them. 检测间隔 above 1 speeds things up a lot and leans harder on SAM3's tracking between detections: a good trade on clean footage, a bad one with occlusions.

And keep the downstream expectation honest: the mannequin transfers body type along with the motion, the same limitation the pose-ControlNet route has always had. If your reference actor and your target character are built differently, the replacement inherits the actor's proportions. Not a bug in this node - that's what motion transfer does.

Finally, the pack itself. AICG3D is a one-maintainer Chinese project, weeks old, with no English-language community discussion I could find - Chinese labels, Chinese release notes, workflows numbered 11 through 15. Ambitious, and the code is more careful than the average novelty pack, but you're early. Test on a five-second clip before pointing it at a whole episode.

CategoryAICG3D/提示词与 Skill

Inputs (27)

NameTypeDefaultDescription
目标提示词STRINGpersonSAM3 文字检测提示词;默认 person。
sam3_checkpointCOMBOsam3.1_multiplex_fp16.safetensors1 options: sam3.1_multiplex_fp16.safetensors
rtdetr_modelCOMBOrt_detr_v4-x-hgnet_fp16.safetensors1 options: rt_detr_v4-x-hgnet_fp16.safetensors
body_modelCOMBOsam_3d_body_dinov3_bf16.safetensors1 options: sam_3d_body_dinov3_bf16.safetensors
moge_modelCOMBOgeometry_estimation\moge_3_vitg_fp16.safetensors1 options: geometry_estimation\moge_3_vitg_fp16.safetensors
启用MoGeBOOLEANfalse开启后用 MoGe 估算 FOV/几何;16GB 显存建议先关闭,默认 53° 也能跑。
MoGe分辨率等级INT50–9—
MoGe细化步数INT00–8—
最大人物数INT161–64—
检测阈值FLOAT0.500–1—
检测间隔INT11–16—
长边像素INT736256–2048—
推理批大小INT641–512—
渲染模式COMBOmesh5 options: mesh, silhouette, openpose_2d, openpose_3d, scail
着色器COMBOdefault6 options: default, normals, rainbow, rainbow_face_normal, rainbow_face_semantic, depth
人物颜色衰减FLOAT1.000.1–11.0 = 所有人物统一白模颜色。
启用表情BOOLEANtrue—
启用平滑BOOLEANtrue—
保留原始音频BOOLEANtrue—
保留原视频场景BOOLEANfalse开启后,白模叠加在原视频画面上,保留原始背景;需要替换背景时请关闭。
绿色背景BOOLEANfalse关闭“保留原视频场景”后生效;输出纯绿幕白模,便于后续背景替换。
逐人锁定颜色BOOLEANtrue用 SAM3 跟踪 ID 给每个稳定人物分配固定颜色,便于区分替换1、替换2,并在穿插走位时锁住身份。
人物颜色排序COMBO左到右颜色按稳定人物首次出现后的顺序分配。左到右最符合常见替换编号;固定调色板为蓝、红、绿、品红、青、黄循环。
人物颜色强度FLOAT0.750–1颜色叠加强度。0.75 既能明确区分人物,又保留白模表面的动作和表情轮廓。
media_bundleoptMINIMAX_H3_MEDIA_BUNDLE接现有 MiniMax H3 Aicg资源库;默认取其第一条视频。
videooptVIDEO也可以直接接 VIDEO;连接后优先于资源库。
backgroundoptIMAGE可选白模背景;不接则输出黑底白模。

Outputs (5)

NameTypeDescription
white_videoVIDEO—
white_framesIMAGE—
audioAUDIO—
fpsFLOAT—
statusSTRING—