{ "id": "e3f2b845-8f2c-4b5a-9caf-eac1029d3e7e", "revision": 0, "last_node_id": 717, "last_link_id": 1772, "nodes": [ { "id": 115, "type": "ResolutionSelector", "pos": [ -1480, 5980 ], "size": [ 270, 170 ], "flags": {}, "order": 0, "mode": 0, "showAdvanced": false, "inputs": [ { "name": "preview", "shape": 7, "type": "RESOLUTION_PREVIEW", "link": null } ], "outputs": [ { "name": "width", "type": "INT", "links": [ 276 ] }, { "name": "height", "type": "INT", "links": [ 277 ] } ], "title": "Resolution Selector (Size)", "properties": { "Node name for S&R": "ResolutionSelector", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ "16:9 (Widescreen)", 0.4, 32 ], "widgets_values_named": { "aspect_ratio": "16:9 (Widescreen)", "megapixels": 0.4, "multiple": 32 }, "color": "#322", "bgcolor": "#533" }, { "id": 116, "type": "MarkdownNote", "pos": [ -2020, 4870 ], "size": [ 460, 1310 ], "flags": {}, "order": 1, "mode": 0, "inputs": [], "outputs": [], "title": "Note: MiniMax H3 Fun ControlNet", "properties": {}, "widgets_values": [ "## MiniMax H3 Fun ControlNet-Union\n\n[MiniMax-H3-Fun-Controlnet-Union](https://huggingface.co/alibaba-pai/MiniMax-H3-Fun-Controlnet-Union) is a single ControlNet-Union branch trained with VideoX-Fun. One checkpoint conditions MiniMax H3 on **Canny, Depth, HED, MLSD, or Pose** control video, and also runs **video inpainting**. Load it on top of a MiniMax H3 transformer (`fl2va` or `ref2va`).\n\nPackaged weights: [πŸ€— Comfy-Org/MiniMax-H3](https://huggingface.co/Comfy-Org/MiniMax-H3) (`minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors`).\n\n## ComfyUI links\n- [ComfyUI#15224](https://github.com/Comfy-Org/ComfyUI/pull/15224) (MiniMax H3)\n- [ComfyUI#15975](https://github.com/Comfy-Org/ComfyUI/pull/15975) (Fun ControlNet as model patch)\n- [πŸ€— alibaba-pai/MiniMax-H3-Fun-Controlnet-Union](https://huggingface.co/alibaba-pai/MiniMax-H3-Fun-Controlnet-Union)\n- [πŸ€— Comfy-Org/MiniMax-H3](https://huggingface.co/Comfy-Org/MiniMax-H3)\n\n## About this workflow\n\nThis graph is a **Pose control** example only. The Union checkpoint can take Canny / Depth / HED / MLSD or an inpaint mask as well, but those paths are not wired here.\n\n**What this graph does**\n\n1. **Load Video (Control Video)** reads `dancer_field_pose.mp4`. Optional **Video Slice** trims the clip.\n2. **SDPose Video Pose Extractor [Multi-Person]** detects people and draws whole-body skeletons (body, hands, face, feet). That skeleton sequence is the control video, not the raw RGB footage.\n3. **Preview Image** shows the pose frames, then feeds them into **Apply MiniMax H3 Fun ControlNet** as `control_video`.\n4. **MiniMax H3 Reference to Video** builds text conditioning and the joint audio+video latent. In this demo the `ref_*` slots are empty, so the run is text-to-video locked to the pose. You can still attach reference images, videos, or audio if you want identity or voice lock on top of the control.\n5. Sampling and decode stay the same as other H3 templates: joint latent β†’ video VAE + audio VAE β†’ muxed MP4.\n\n**Apply MiniMax H3 Fun ControlNet**\n\n- **model_patch**: Fun ControlNet-Union from **ModelPatchLoader**\n- **vae**: MiniMax H3 **video** VAE (used to encode the control frames)\n- **control_video**: preprocessed frames. This template uses SDPose skeletons\n- **mask** / **source_video**: leave empty here. `mask` (1 = regenerate) plus optional `source_video` is the inpaint path\n- **strength**: how hard the control skip is added (same role as `control_context_scale` on the original model). `1.0` is strongest and is what this graph uses. Values below `1.0` loosen the pose. `0` turns the branch off\n- **start_percent** / **end_percent**: which part of sampling the control is active (`0` β†’ `1` here)\n\n**Length and size**\n\n- Frames snap to the video VAE grid `17n + 5` at 24fps. This template uses **5s β†’ 124 frames**. Cap is about 15 seconds\n- A control clip longer than `length` is taken from the start. A shorter clip holds its last frame\n- To match the control video length, use the bypassed group and wire `batch_size` into **MiniMax H3 Reference to Video** `length`\n\n**Prompt**\n\n[Guide here](https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/docs/VIDEO_PROMPT_WRITING_GUIDE_ref_en.md)\n\n**Using the other Union modes**\n\nKeep **Apply MiniMax H3 Fun ControlNet** and swap only the preprocessor that writes `control_video`:\n\n- **Canny**: Detect Edges\n- **Depth**: Depth Anything 3 or MoGe\n- **Pose**: this graph (SDPose), or SAM3D Body\n- **HED / MLSD**: no built-in preprocessor; use a community pack if you need them\n- **Inpaint**: connect `mask` and optional `source_video`. `control_video` can stay empty or add extra structure\n\nSee the **Preparing the control video** note for official preprocessor tutorials.\n" ], "widgets_values_named": { "text": "## MiniMax H3 Fun ControlNet-Union\n\n[MiniMax-H3-Fun-Controlnet-Union](https://huggingface.co/alibaba-pai/MiniMax-H3-Fun-Controlnet-Union) is a single ControlNet-Union branch trained with VideoX-Fun. One checkpoint conditions MiniMax H3 on **Canny, Depth, HED, MLSD, or Pose** control video, and also runs **video inpainting**. Load it on top of a MiniMax H3 transformer (`fl2va` or `ref2va`).\n\nPackaged weights: [πŸ€— Comfy-Org/MiniMax-H3](https://huggingface.co/Comfy-Org/MiniMax-H3) (`minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors`).\n\n## ComfyUI links\n- [ComfyUI#15224](https://github.com/Comfy-Org/ComfyUI/pull/15224) (MiniMax H3)\n- [ComfyUI#15975](https://github.com/Comfy-Org/ComfyUI/pull/15975) (Fun ControlNet as model patch)\n- [πŸ€— alibaba-pai/MiniMax-H3-Fun-Controlnet-Union](https://huggingface.co/alibaba-pai/MiniMax-H3-Fun-Controlnet-Union)\n- [πŸ€— Comfy-Org/MiniMax-H3](https://huggingface.co/Comfy-Org/MiniMax-H3)\n\n## About this workflow\n\nThis graph is a **Pose control** example only. The Union checkpoint can take Canny / Depth / HED / MLSD or an inpaint mask as well, but those paths are not wired here.\n\n**What this graph does**\n\n1. **Load Video (Control Video)** reads `dancer_field_pose.mp4`. Optional **Video Slice** trims the clip.\n2. **SDPose Video Pose Extractor [Multi-Person]** detects people and draws whole-body skeletons (body, hands, face, feet). That skeleton sequence is the control video, not the raw RGB footage.\n3. **Preview Image** shows the pose frames, then feeds them into **Apply MiniMax H3 Fun ControlNet** as `control_video`.\n4. **MiniMax H3 Reference to Video** builds text conditioning and the joint audio+video latent. In this demo the `ref_*` slots are empty, so the run is text-to-video locked to the pose. You can still attach reference images, videos, or audio if you want identity or voice lock on top of the control.\n5. Sampling and decode stay the same as other H3 templates: joint latent β†’ video VAE + audio VAE β†’ muxed MP4.\n\n**Apply MiniMax H3 Fun ControlNet**\n\n- **model_patch**: Fun ControlNet-Union from **ModelPatchLoader**\n- **vae**: MiniMax H3 **video** VAE (used to encode the control frames)\n- **control_video**: preprocessed frames. This template uses SDPose skeletons\n- **mask** / **source_video**: leave empty here. `mask` (1 = regenerate) plus optional `source_video` is the inpaint path\n- **strength**: how hard the control skip is added (same role as `control_context_scale` on the original model). `1.0` is strongest and is what this graph uses. Values below `1.0` loosen the pose. `0` turns the branch off\n- **start_percent** / **end_percent**: which part of sampling the control is active (`0` β†’ `1` here)\n\n**Length and size**\n\n- Frames snap to the video VAE grid `17n + 5` at 24fps. This template uses **5s β†’ 124 frames**. Cap is about 15 seconds\n- A control clip longer than `length` is taken from the start. A shorter clip holds its last frame\n- To match the control video length, use the bypassed group and wire `batch_size` into **MiniMax H3 Reference to Video** `length`\n\n**Prompt**\n\n[Guide here](https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/docs/VIDEO_PROMPT_WRITING_GUIDE_ref_en.md)\n\n**Using the other Union modes**\n\nKeep **Apply MiniMax H3 Fun ControlNet** and swap only the preprocessor that writes `control_video`:\n\n- **Canny**: Detect Edges\n- **Depth**: Depth Anything 3 or MoGe\n- **Pose**: this graph (SDPose), or SAM3D Body\n- **HED / MLSD**: no built-in preprocessor; use a community pack if you need them\n- **Inpaint**: connect `mask` and optional `source_video`. `control_video` can stay empty or add extra structure\n\nSee the **Preparing the control video** note for official preprocessor tutorials.\n" }, "color": "#222", "bgcolor": "#000" }, { "id": 117, "type": "MarkdownNote", "pos": [ -2500, 4870 ], "size": [ 440, 1060 ], "flags": {}, "order": 2, "mode": 0, "inputs": [], "outputs": [], "title": "Note: Model Links", "properties": {}, "widgets_values": [ "## Input Asset\n\n- [dancer_field_pose.mp4](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/dancer_field_pose.mp4)\n\n## Model Links\n\n**vae**\n\n- [minimax_h3_video_vae_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_int8_convrot.safetensors)\n- [minimax_h3_audio_vae_fp32.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors)\n\n**diffusion_models**\n\n- [minimax_h3_ref2va_pruned_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/diffusion_models/minimax_h3_ref2va_pruned_int8_convrot.safetensors)\n- [rt_detr_v4-x-hgnet_fp16.safetensors](https://huggingface.co/Comfy-Org/SDPose/resolve/main/diffusion_models/rt_detr_v4-x-hgnet_fp16.safetensors)\n\n**text_encoders**\n\n- [qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors)\n\n**loras**\n\n- [minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/loras/minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors)\n\n**model_patches**\n\n- [minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/model_patches/minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors)\n\n**checkpoints**\n\n- [sdpose_wholebody_fp16.safetensors](https://huggingface.co/Comfy-Org/SDPose/resolve/main/checkpoints/sdpose_wholebody_fp16.safetensors)\n\n\n## Model Storage Location\n\n```\nπŸ“‚ ComfyUI/\nβ”œβ”€β”€ πŸ“‚ models/\nβ”‚ β”œβ”€β”€ πŸ“‚ vae/\nβ”‚ β”‚ β”œβ”€β”€ minimax_h3_video_vae_int8_convrot.safetensors\nβ”‚ β”‚ └── minimax_h3_audio_vae_fp32.safetensors\nβ”‚ β”œβ”€β”€ πŸ“‚ diffusion_models/\nβ”‚ β”‚ β”œβ”€β”€ minimax_h3_ref2va_pruned_int8_convrot.safetensors\nβ”‚ β”‚ └── rt_detr_v4-x-hgnet_fp16.safetensors\nβ”‚ β”œβ”€β”€ πŸ“‚ text_encoders/\nβ”‚ β”‚ └── qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors\nβ”‚ β”œβ”€β”€ πŸ“‚ loras/\nβ”‚ β”‚ └── minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors\nβ”‚ β”œβ”€β”€ πŸ“‚ model_patches/\nβ”‚ β”‚ └── minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors\nβ”‚ └── πŸ“‚ checkpoints/\nβ”‚ └── sdpose_wholebody_fp16.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n" ], "widgets_values_named": { "text": "## Input Asset\n\n- [dancer_field_pose.mp4](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/dancer_field_pose.mp4)\n\n## Model Links\n\n**vae**\n\n- [minimax_h3_video_vae_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_int8_convrot.safetensors)\n- [minimax_h3_audio_vae_fp32.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors)\n\n**diffusion_models**\n\n- [minimax_h3_ref2va_pruned_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/diffusion_models/minimax_h3_ref2va_pruned_int8_convrot.safetensors)\n- [rt_detr_v4-x-hgnet_fp16.safetensors](https://huggingface.co/Comfy-Org/SDPose/resolve/main/diffusion_models/rt_detr_v4-x-hgnet_fp16.safetensors)\n\n**text_encoders**\n\n- [qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors)\n\n**loras**\n\n- [minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/loras/minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors)\n\n**model_patches**\n\n- [minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/model_patches/minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors)\n\n**checkpoints**\n\n- [sdpose_wholebody_fp16.safetensors](https://huggingface.co/Comfy-Org/SDPose/resolve/main/checkpoints/sdpose_wholebody_fp16.safetensors)\n\n\n## Model Storage Location\n\n```\nπŸ“‚ ComfyUI/\nβ”œβ”€β”€ πŸ“‚ models/\nβ”‚ β”œβ”€β”€ πŸ“‚ vae/\nβ”‚ β”‚ β”œβ”€β”€ minimax_h3_video_vae_int8_convrot.safetensors\nβ”‚ β”‚ └── minimax_h3_audio_vae_fp32.safetensors\nβ”‚ β”œβ”€β”€ πŸ“‚ diffusion_models/\nβ”‚ β”‚ β”œβ”€β”€ minimax_h3_ref2va_pruned_int8_convrot.safetensors\nβ”‚ β”‚ └── rt_detr_v4-x-hgnet_fp16.safetensors\nβ”‚ β”œβ”€β”€ πŸ“‚ text_encoders/\nβ”‚ β”‚ └── qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors\nβ”‚ β”œβ”€β”€ πŸ“‚ loras/\nβ”‚ β”‚ └── minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors\nβ”‚ β”œβ”€β”€ πŸ“‚ model_patches/\nβ”‚ β”‚ └── minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors\nβ”‚ └── πŸ“‚ checkpoints/\nβ”‚ └── sdpose_wholebody_fp16.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n" }, "color": "#222", "bgcolor": "#000" }, { "id": 119, "type": "VAELoader", "pos": [ -1500, 5440 ], "size": [ 650, 70 ], "flags": {}, "order": 3, "mode": 0, "inputs": [], "outputs": [ { "name": "VAE", "type": "VAE", "links": [ 251, 273, 339 ] } ], "properties": { "Node name for S&R": "VAELoader", "cnr_id": "comfy-core", "ver": "0.33.0", "models": [ { "name": "minimax_h3_video_vae_int8_convrot.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_int8_convrot.safetensors", "directory": "vae" } ] }, "widgets_values": [ "minimax_h3_video_vae_int8_convrot.safetensors" ], "widgets_values_named": { "vae_name": "minimax_h3_video_vae_int8_convrot.safetensors" } }, { "id": 120, "type": "VAELoader", "pos": [ -1500, 5570 ], "size": [ 650, 70 ], "flags": {}, "order": 4, "mode": 0, "inputs": [], "outputs": [ { "name": "VAE", "type": "VAE", "links": [ 250, 274 ] } ], "properties": { "Node name for S&R": "VAELoader", "cnr_id": "comfy-core", "ver": "0.33.0", "models": [ { "name": "minimax_h3_audio_vae_fp32.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors", "directory": "vae" } ] }, "widgets_values": [ "minimax_h3_audio_vae_fp32.safetensors" ], "widgets_values_named": { "vae_name": "minimax_h3_audio_vae_fp32.safetensors" } }, { "id": 121, "type": "VAEDecodeAudio", "pos": [ 530, 5740 ], "size": [ 230, 60 ], "flags": { "collapsed": false }, "order": 36, "mode": 0, "inputs": [ { "name": "samples", "type": "LATENT", "link": 281 }, { "name": "vae", "type": "VAE", "link": 250 } ], "outputs": [ { "name": "AUDIO", "type": "AUDIO", "links": [ 259 ] } ], "properties": { "Node name for S&R": "VAEDecodeAudio", "cnr_id": "comfy-core", "ver": "0.33.0" } }, { "id": 122, "type": "VAEDecode", "pos": [ 530, 5640 ], "size": [ 230, 60 ], "flags": { "collapsed": false }, "order": 35, "mode": 0, "inputs": [ { "name": "samples", "type": "LATENT", "link": 280 }, { "name": "vae", "type": "VAE", "link": 251 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 258 ] } ], "properties": { "Node name for S&R": "VAEDecode", "cnr_id": "comfy-core", "ver": "0.33.0" } }, { "id": 123, "type": "KSamplerSelect", "pos": [ 510, 5190 ], "size": [ 370, 70 ], "flags": {}, "order": 5, "mode": 0, "inputs": [], "outputs": [ { "name": "SAMPLER", "type": "SAMPLER", "links": [ 255 ] } ], "properties": { "Node name for S&R": "KSamplerSelect", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ "res_multistep" ], "widgets_values_named": { "sampler_name": "res_multistep" } }, { "id": 124, "type": "BasicScheduler", "pos": [ 510, 5310 ], "size": [ 370, 130 ], "flags": {}, "order": 32, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", "link": 341 }, { "name": "steps", "type": "INT", "widget": { "name": "steps" }, "link": 289 } ], "outputs": [ { "name": "SIGMAS", "type": "SIGMAS", "links": [ 256 ] } ], "properties": { "Node name for S&R": "BasicScheduler", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ "simple", 20, 1 ], "widgets_values_named": { "scheduler": "simple", "steps": 20, "denoise": 1 } }, { "id": 125, "type": "SamplerCustomAdvanced", "pos": [ 920, 5110 ], "size": [ 230, 140 ], "flags": {}, "order": 34, "mode": 0, "inputs": [ { "name": "noise", "type": "NOISE", "link": 253 }, { "name": "guider", "type": "GUIDER", "link": 254 }, { "name": "sampler", "type": "SAMPLER", "link": 255 }, { "name": "sigmas", "type": "SIGMAS", "link": 256 }, { "name": "latent_image", "type": "LATENT", "link": 271 } ], "outputs": [ { "name": "output", "type": "LATENT", "links": [ 280, 281 ] }, { "name": "denoised_output", "type": "LATENT", "links": [] } ], "properties": { "Node name for S&R": "SamplerCustomAdvanced", "cnr_id": "comfy-core", "ver": "0.33.0" } }, { "id": 126, "type": "BasicGuider", "pos": [ 510, 5080 ], "size": [ 360, 60 ], "flags": {}, "order": 33, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", "link": 342 }, { "name": "conditioning", "type": "CONDITIONING", "link": 337 } ], "outputs": [ { "name": "GUIDER", "type": "GUIDER", "links": [ 254 ] } ], "properties": { "Node name for S&R": "BasicGuider", "cnr_id": "comfy-core", "ver": "0.33.0" } }, { "id": 127, "type": "UNETLoader", "pos": [ -1500, 4960 ], "size": [ 650, 90 ], "flags": {}, "order": 6, "mode": 0, "inputs": [], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [ 285, 287 ] } ], "properties": { "Node name for S&R": "UNETLoader", "cnr_id": "comfy-core", "ver": "0.33.0", "models": [ { "name": "minimax_h3_ref2va_pruned_int8_convrot.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/diffusion_models/minimax_h3_ref2va_pruned_int8_convrot.safetensors", "directory": "diffusion_models" } ] }, "widgets_values": [ "minimax_h3_ref2va_pruned_int8_convrot.safetensors", "default" ], "widgets_values_named": { "unet_name": "minimax_h3_ref2va_pruned_int8_convrot.safetensors", "weight_dtype": "default" } }, { "id": 128, "type": "CLIPLoader", "pos": [ -1500, 5260 ], "size": [ 650, 120 ], "flags": {}, "order": 7, "mode": 0, "inputs": [], "outputs": [ { "name": "CLIP", "type": "CLIP", "links": [ 272 ] } ], "properties": { "Node name for S&R": "CLIPLoader", "cnr_id": "comfy-core", "ver": "0.33.0", "models": [ { "name": "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", "directory": "text_encoders" } ] }, "widgets_values": [ "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", "minimax", "default" ], "widgets_values_named": { "clip_name": "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", "type": "minimax", "device": "default" } }, { "id": 129, "type": "RandomNoise", "pos": [ 510, 4940 ], "size": [ 360, 90 ], "flags": {}, "order": 8, "mode": 0, "inputs": [], "outputs": [ { "name": "NOISE", "type": "NOISE", "links": [ 253 ] } ], "properties": { "Node name for S&R": "RandomNoise", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ 1086599926715797, "randomize" ], "widgets_values_named": { "noise_seed": 1086599926715797, "control_after_generate": "randomize" } }, { "id": 130, "type": "CreateVideo", "pos": [ 840, 5640 ], "size": [ 270, 140 ], "flags": {}, "order": 37, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", "link": 258 }, { "name": "audio", "shape": 7, "type": "AUDIO", "link": 259 } ], "outputs": [ { "name": "VIDEO", "type": "VIDEO", "links": [ 1767 ] } ], "properties": { "Node name for S&R": "CreateVideo", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ 24, "auto", "sRGB" ], "widgets_values_named": { "fps": 24, "bit_depth": "auto", "color_space": "sRGB" } }, { "id": 131, "type": "ComfyMathExpression", "pos": [ -1470, 6460 ], "size": [ 225, 0 ], "flags": { "collapsed": true }, "order": 22, "mode": 0, "inputs": [ { "label": "a", "name": "values.a", "type": "FLOAT,INT,BOOLEAN", "link": 261 }, { "name": "values.b", "shape": 7, "type": "FLOAT,INT,BOOLEAN", "link": null } ], "outputs": [ { "name": "FLOAT", "type": "FLOAT", "links": [] }, { "name": "INT", "type": "INT", "links": [ 275 ] }, { "name": "BOOL", "type": "BOOLEAN", "links": [] } ], "properties": { "Node name for S&R": "ComfyMathExpression", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ "max(5, round(a * 24)) + (5 - (max(5, round(a * 24)) % 17)) % 17" ], "widgets_values_named": { "expression": "max(5, round(a * 24)) + (5 - (max(5, round(a * 24)) % 17)) % 17" } }, { "id": 132, "type": "PrimitiveFloat", "pos": [ -1480, 6330 ], "size": [ 270, 70 ], "flags": {}, "order": 9, "mode": 0, "inputs": [], "outputs": [ { "name": "FLOAT", "type": "FLOAT", "links": [ 261 ] } ], "title": "Float (Duration)", "properties": { "Node name for S&R": "PrimitiveFloat", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ 5 ], "widgets_values_named": { "value": 5 }, "color": "#322", "bgcolor": "#533" }, { "id": 136, "type": "MiniMaxH3ReferenceToVideo", "pos": [ -600, 4940 ], "size": [ 400, 340 ], "flags": {}, "order": 26, "mode": 0, "inputs": [ { "name": "clip", "type": "CLIP", "link": 272 }, { "name": "vae", "shape": 7, "type": "VAE", "link": 273 }, { "name": "audio_vae", "shape": 7, "type": "VAE", "link": 274 }, { "label": "ref_image_0", "name": "ref_images.ref_image_0", "shape": 7, "type": "IMAGE", "link": null }, { "label": "ref_video_0", "name": "ref_videos.ref_video_0", "shape": 7, "type": "IMAGE", "link": null }, { "label": "ref_video_audio_0", "name": "ref_video_audios.ref_video_audio_0", "shape": 7, "type": "AUDIO", "link": null }, { "label": "ref_audio_0", "name": "ref_audios.ref_audio_0", "shape": 7, "type": "AUDIO", "link": null }, { "name": "prompt", "type": "STRING", "widget": { "name": "prompt" }, "link": 333 }, { "name": "width", "type": "INT", "widget": { "name": "width" }, "link": 276 }, { "name": "height", "type": "INT", "widget": { "name": "height" }, "link": 277 }, { "name": "length", "type": "INT", "widget": { "name": "length" }, "link": 275 } ], "outputs": [ { "name": "positive", "type": "CONDITIONING", "links": [ 337 ] }, { "name": "LATENT", "type": "LATENT", "links": [ 271 ] } ], "properties": { "Node name for S&R": "MiniMaxH3ReferenceToVideo", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ "", 1344, 768, 124, "match" ], "widgets_values_named": { "prompt": "", "width": 1344, "height": 768, "length": 124, "ref_image_size": "match" }, "color": "#322", "bgcolor": "#533" }, { "id": 138, "type": "PrimitiveStringMultiline", "pos": [ 500, 5960 ], "size": [ 480, 530 ], "flags": {}, "order": 10, "mode": 0, "inputs": [], "outputs": [ { "name": "STRING", "type": "STRING", "links": [ 333 ] } ], "title": "Input Text (Prompt)", "properties": { "Node name for S&R": "PrimitiveStringMultiline", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ "Scene: Hyperreal desert-storm aesthetic. A humanoid figure made of packed sand dances in a barren wasteland, each move shedding dust, the wind eroding and reshaping its body.\n[0s-2s] Pale desert, a sand humanoid begins to move from stillness, surface grains trickling off and dragging mist-like trails in the wind.\n[2s-4s] Spins and arm swings keep dissolving and rebuilding its edges, raised sand columns glowing gold in hard light under a searing white sky.\n[4s-5s] On the final pose, half the body has already been carried away by wind as a hanging line of sand, not yet fallen.\nCamera: medium fixed shot, focus pull from sand-grain close-up to full body.\nAudio: fine sand-scrape texture throughout, one distant desert wind call at 2s, no music.\nNegative: no dissolve transitions / no text overlays / no human face / no camera shake" ], "widgets_values_named": { "value": "Scene: Hyperreal desert-storm aesthetic. A humanoid figure made of packed sand dances in a barren wasteland, each move shedding dust, the wind eroding and reshaping its body.\n[0s-2s] Pale desert, a sand humanoid begins to move from stillness, surface grains trickling off and dragging mist-like trails in the wind.\n[2s-4s] Spins and arm swings keep dissolving and rebuilding its edges, raised sand columns glowing gold in hard light under a searing white sky.\n[4s-5s] On the final pose, half the body has already been carried away by wind as a hanging line of sand, not yet fallen.\nCamera: medium fixed shot, focus pull from sand-grain close-up to full body.\nAudio: fine sand-scrape texture throughout, one distant desert wind call at 2s, no music.\nNegative: no dissolve transitions / no text overlays / no human face / no camera shake" }, "color": "#322", "bgcolor": "#533" }, { "id": 140, "type": "MarkdownNote", "pos": [ -1860, 6250 ], "size": [ 300, 540 ], "flags": {}, "order": 11, "mode": 0, "inputs": [], "outputs": [], "title": "Note: Video Settings", "properties": {}, "widgets_values": [ "## Resolution Selector\nDelete the **Resolution Selector** node if you want to customize video size manually\n| megapixels | Aspect | Output (multiple=32) |\n|---|---|---|\n| 0.2 | 16:9 | 608 x 352 |\n| 0.3 | 16:9 | 736 x 416 |\n| 0.4 | 16:9 | 864 x 480 |\n| 0.5 | 16:9 | 960 x 544 |\n| 0.6 | 16:9 | 1056 x 608 |\n| 0.7 | 16:9 | 1152 x 640 |\n| 0.8 | 16:9 | 1216 x 672 |\n| 0.9 | 16:9 | 1280 x 736 |\n| 0.98 | 16:9 | 1344 x 768 (official 768p) |\n\n---\n\n## Lightning LoRA\n\nFor fast video generation, but scarce video quality\n\n---\n## Duration\n\nUp to 15s" ], "widgets_values_named": { "text": "## Resolution Selector\nDelete the **Resolution Selector** node if you want to customize video size manually\n| megapixels | Aspect | Output (multiple=32) |\n|---|---|---|\n| 0.2 | 16:9 | 608 x 352 |\n| 0.3 | 16:9 | 736 x 416 |\n| 0.4 | 16:9 | 864 x 480 |\n| 0.5 | 16:9 | 960 x 544 |\n| 0.6 | 16:9 | 1056 x 608 |\n| 0.7 | 16:9 | 1152 x 640 |\n| 0.8 | 16:9 | 1216 x 672 |\n| 0.9 | 16:9 | 1280 x 736 |\n| 0.98 | 16:9 | 1344 x 768 (official 768p) |\n\n---\n\n## Lightning LoRA\n\nFor fast video generation, but scarce video quality\n\n---\n## Duration\n\nUp to 15s" }, "color": "#222", "bgcolor": "#000" }, { "id": 141, "type": "ComfySwitchNode", "pos": [ -740, 5410 ], "size": [ 270, 110 ], "flags": {}, "order": 25, "mode": 0, "inputs": [ { "name": "on_false", "shape": 7, "type": "MODEL", "link": 287 }, { "name": "on_true", "shape": 7, "type": "MODEL", "link": 286 }, { "name": "switch", "type": "BOOLEAN", "widget": { "name": "switch" }, "link": 290 } ], "outputs": [ { "name": "output", "type": "MODEL", "links": [ 340 ] } ], "title": "If/Else Switch (model)", "properties": { "Node name for S&R": "ComfySwitchNode", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ false ], "widgets_values_named": { "switch": false } }, { "id": 142, "type": "ComfySwitchNode", "pos": [ -400, 5570 ], "size": [ 270, 110 ], "flags": {}, "order": 23, "mode": 0, "inputs": [ { "name": "on_false", "shape": 7, "type": "INT", "link": 284 }, { "name": "on_true", "shape": 7, "type": "INT", "link": 283 }, { "name": "switch", "type": "BOOLEAN", "widget": { "name": "switch" }, "link": 291 } ], "outputs": [ { "name": "output", "type": "INT", "links": [ 289 ] } ], "title": "If/Else Switch (Steps)", "properties": { "Node name for S&R": "ComfySwitchNode", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ false ], "widgets_values_named": { "switch": false } }, { "id": 143, "type": "PrimitiveInt", "pos": [ -740, 5580 ], "size": [ 270, 90 ], "flags": {}, "order": 12, "mode": 0, "inputs": [], "outputs": [ { "name": "INT", "type": "INT", "links": [ 284 ] } ], "title": "Int (Full)", "properties": { "Node name for S&R": "PrimitiveInt", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ 20, "fixed" ], "widgets_values_named": { "value": 20, "fixed": "fixed" } }, { "id": 144, "type": "PrimitiveInt", "pos": [ -740, 5730 ], "size": [ 270, 90 ], "flags": {}, "order": 13, "mode": 0, "inputs": [], "outputs": [ { "name": "INT", "type": "INT", "links": [ 283 ] } ], "title": "Int (Lightning LoRA)", "properties": { "Node name for S&R": "PrimitiveInt", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ 4, "fixed" ], "widgets_values_named": { "value": 4, "fixed": "fixed" } }, { "id": 145, "type": "LoraLoaderModelOnly", "pos": [ -1500, 5110 ], "size": [ 650, 90 ], "flags": {}, "order": 21, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", "link": 285 } ], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [ 286 ] } ], "properties": { "Node name for S&R": "LoraLoaderModelOnly", "cnr_id": "comfy-core", "ver": "0.33.0", "models": [ { "name": "minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/loras/minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors", "directory": "loras" } ] }, "widgets_values": [ "minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors", 1 ], "widgets_values_named": { "lora_name": "minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors", "strength_model": 1 } }, { "id": 146, "type": "PrimitiveBoolean", "pos": [ -1480, 6210 ], "size": [ 270, 70 ], "flags": {}, "order": 14, "mode": 0, "inputs": [], "outputs": [ { "name": "BOOLEAN", "type": "BOOLEAN", "links": [ 290, 291 ] } ], "title": "Boolean (Enable Lightning LoRA)", "properties": { "Node name for S&R": "PrimitiveBoolean", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ false ], "widgets_values_named": { "value": false }, "color": "#322", "bgcolor": "#533" }, { "id": 172, "type": "MiniMaxH3FunControlNetApply", "pos": [ 60, 5150 ], "size": [ 330, 210 ], "flags": {}, "order": 31, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", "link": 340 }, { "name": "model_patch", "type": "MODEL_PATCH", "link": 338 }, { "name": "vae", "type": "VAE", "link": 339 }, { "name": "control_video", "shape": 7, "type": "IMAGE", "link": 1762 }, { "name": "mask", "shape": 7, "type": "MASK", "link": null }, { "name": "source_video", "shape": 7, "type": "IMAGE", "link": null } ], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [ 341, 342 ] } ], "properties": { "Node name for S&R": "MiniMaxH3FunControlNetApply" }, "widgets_values": [ 1, 0, 1 ], "widgets_values_named": { "strength": 1, "start_percent": 0, "end_percent": 1 }, "color": "#322", "bgcolor": "#533" }, { "id": 173, "type": "ModelPatchLoader", "pos": [ -1500, 5710 ], "size": [ 650, 90 ], "flags": {}, "order": 15, "mode": 0, "inputs": [], "outputs": [ { "name": "MODEL_PATCH", "type": "MODEL_PATCH", "links": [ 338 ] } ], "properties": { "Node name for S&R": "ModelPatchLoader", "models": [ { "name": "minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/model_patches/minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors", "directory": "model_patches" } ] }, "widgets_values": [ "minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors" ], "widgets_values_named": { "name": "minimax_h3_fun_controlnet_union_pruned_int8_convrot.safetensors" } }, { "id": 174, "type": "LoadVideo", "pos": [ -1120, 5950 ], "size": [ 330, 670 ], "flags": {}, "order": 16, "mode": 0, "inputs": [], "outputs": [ { "name": "VIDEO", "type": "VIDEO", "links": [ 1765 ] } ], "title": "Load Video (Control Video)", "properties": { "Node name for S&R": "LoadVideo" }, "widgets_values": [ "dancer_field_pose.mp4", "image" ], "widgets_values_named": { "file": "dancer_field_pose.mp4", "upload": "image" } }, { "id": 700, "type": "622cceeb-7ba3-4dd9-b0e8-00066c5222a4", "pos": [ -430, 5950 ], "size": [ 370, 530 ], "flags": {}, "order": 27, "mode": 0, "inputs": [ { "label": "resize_target_longer_size", "name": "resize_type.longer_size", "type": "INT", "widget": { "name": "resize_type.longer_size" }, "link": null }, { "label": "detect_threshold", "name": "threshold", "type": "FLOAT", "widget": { "name": "threshold" }, "link": null }, { "label": "detect_class", "name": "class_name", "type": "COMBO", "widget": { "name": "class_name" }, "link": null }, { "name": "video", "type": "VIDEO", "link": 1766 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 1761 ] }, { "name": "keypoints", "type": "POSE_KEYPOINT", "links": null }, { "name": "bboxes", "type": "BOUNDING_BOX", "links": [] }, { "name": "audio", "type": "AUDIO", "links": [] }, { "name": "fps", "type": "FLOAT", "links": [] } ], "properties": { "cnr_id": "comfy-core", "ver": "0.15.1", "enableTabs": false, "tabWidth": 65, "tabXOffset": 10, "hasSecondTab": false, "secondTabText": "Send Back", "secondTabOffset": 80, "secondTabWidth": 65, "previewExposures": [] }, "widgets_values": [ 1024, "lanczos", true, true, true, true, 4, 2, 0.51, 0.5, "person", 2, "sdpose_wholebody_fp16.safetensors", "rt_detr_v4-x-hgnet_fp16.safetensors" ], "widgets_values_named": { "resize_type.longer_size": 1024, "scale_method": "lanczos", "draw_body": true, "draw_hands": true, "draw_face": true, "draw_feet": true, "stick_width": 4, "face_point_size": 2, "score_threshold": 0.51, "threshold": 0.5, "class_name": "person", "max_detections": 2, "ckpt_name": "sdpose_wholebody_fp16.safetensors", "unet_name": "rt_detr_v4-x-hgnet_fp16.safetensors" } }, { "id": 704, "type": "PreviewImage", "pos": [ 0, 5950 ], "size": [ 430, 270 ], "flags": {}, "order": 29, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", "link": 1761 } ], "outputs": [ { "name": "images", "type": "IMAGE", "links": [ 1762 ] } ], "properties": { "Node name for S&R": "PreviewImage" } }, { "id": 705, "type": "Video Slice", "pos": [ -750, 5950 ], "size": [ 270, 120 ], "flags": {}, "order": 24, "mode": 0, "inputs": [ { "name": "video", "type": "VIDEO", "link": 1765 } ], "outputs": [ { "name": "VIDEO", "type": "VIDEO", "links": [ 1766, 1770 ] } ], "properties": { "Node name for S&R": "Video Slice" }, "widgets_values": [ 0, 0, false ], "widgets_values_named": { "start_time": 0, "duration": 0, "strict_duration": false } }, { "id": 707, "type": "SaveVideo", "pos": [ 1210, 4870 ], "size": [ 1430, 126 ], "flags": {}, "order": 38, "mode": 0, "inputs": [ { "name": "video", "type": "VIDEO", "link": 1767 } ], "outputs": [ { "name": "video", "type": "VIDEO", "links": null } ], "properties": {}, "widgets_values": [ "video/MiniMax_H3", "auto", "auto", "auto" ], "widgets_values_named": { "filename_prefix": "video/MiniMax_H3", "format": "auto", "format.codec": "auto", "codec": "auto" } }, { "id": 708, "type": "MarkdownNote", "pos": [ 70, 5450 ], "size": [ 310, 210 ], "flags": {}, "order": 17, "mode": 0, "inputs": [], "outputs": [], "properties": {}, "widgets_values": [ "Fun ControlNet: one checkpoint adds Canny / Depth / HED / MLSD / Pose control video plus inpainting to MiniMax H3.\n\nVideo length: 5-15s (frames snap to the 17n+5 grid at 24fps, e.g. 124 = 5s). Control videos longer than the target are trimmed to the first frames; shorter ones hold their last frame.\n\nWorks with both fl2va and ref2va model files. Keep guidance_scale = 1.0. Raise strength above 1 only if the control drifts." ], "widgets_values_named": { "text": "Fun ControlNet: one checkpoint adds Canny / Depth / HED / MLSD / Pose control video plus inpainting to MiniMax H3.\n\nVideo length: 5-15s (frames snap to the 17n+5 grid at 24fps, e.g. 124 = 5s). Control videos longer than the target are trimmed to the first frames; shorter ones hold their last frame.\n\nWorks with both fl2va and ref2va model files. Keep guidance_scale = 1.0. Raise strength above 1 only if the control drifts." }, "color": "#222", "bgcolor": "#000" }, { "id": 709, "type": "GetVideoComponents", "pos": [ -720, 6190 ], "size": [ 230, 120 ], "flags": {}, "order": 28, "mode": 4, "inputs": [ { "name": "video", "type": "VIDEO", "link": 1770 } ], "outputs": [ { "name": "images", "type": "IMAGE", "links": [ 1768 ] }, { "name": "audio", "type": "AUDIO", "links": null }, { "name": "fps", "type": "FLOAT", "links": null }, { "name": "bit_depth", "type": "COMBO", "links": null }, { "name": "color_space", "type": "COMBO", "links": null } ], "properties": { "Node name for S&R": "GetVideoComponents" } }, { "id": 710, "type": "GetImageSize", "pos": [ -720, 6360 ], "size": [ 230, 80 ], "flags": {}, "order": 30, "mode": 4, "inputs": [ { "name": "image", "type": "IMAGE", "link": 1768 } ], "outputs": [ { "name": "width", "type": "INT", "links": null }, { "name": "height", "type": "INT", "links": null }, { "name": "batch_size", "type": "INT", "links": null } ], "properties": { "Node name for S&R": "GetImageSize" } }, { "id": 712, "type": "PrimitiveBoolean", "pos": [ -1490, 6510 ], "size": [ 270, 70 ], "flags": {}, "order": 18, "mode": 0, "inputs": [], "outputs": [ { "name": "BOOLEAN", "type": "BOOLEAN", "links": [] } ], "title": "Boolean (Enable Lightning LoRA)", "properties": { "Node name for S&R": "PrimitiveBoolean", "cnr_id": "comfy-core", "ver": "0.33.0" }, "widgets_values": [ false ], "widgets_values_named": { "value": false }, "color": "#322", "bgcolor": "#533" }, { "id": 713, "type": "MarkdownNote", "pos": [ -730, 6510 ], "size": [ 270, 120 ], "flags": {}, "order": 19, "mode": 0, "inputs": [], "outputs": [], "title": "Note: Use Video length", "properties": {}, "widgets_values": [ "If you want the final video to match the control video length, you can use the group above and link the `batch_size` output to the `MiniMax H3 Reference to Video` node's length input" ], "widgets_values_named": { "text": "If you want the final video to match the control video length, you can use the group above and link the `batch_size` output to the `MiniMax H3 Reference to Video` node's length input" }, "color": "#222", "bgcolor": "#000" }, { "id": 714, "type": "MarkdownNote", "pos": [ 0, 6270 ], "size": [ 430, 280 ], "flags": {}, "order": 20, "mode": 0, "inputs": [], "outputs": [], "title": "Note: Preparing the control video", "properties": {}, "widgets_values": [ "## Preparing the control video with built-in preprocessing\n\nThe Fun ControlNet follows the control video you feed it, so the quality of that video's edges, depth or pose decides the quality of the control. ComfyUI ships with built-in preprocessing nodes, and each control type has an official tutorial:\n\n- **Edges (Canny)**: [Detect Edges (Canny) node](https://docs.comfy.org/built-in-nodes/Canny)\n- **Depth**: [Depth Anything 3 tutorial](https://docs.comfy.org/tutorials/utility/depth-anything-3) / [MoGe nodes](https://docs.comfy.org/built-in-nodes/MoGeInference)\n- **Pose**: [SAM3D Body tutorial](https://docs.comfy.org/tutorials/utility/sam3d-body) / [SDPose Keypoint Extractor](https://docs.comfy.org/built-in-nodes/SDPoseKeypointExtractor)\n- **All preprocessors overview**: [ComfyUI preprocessor workflows](https://docs.comfy.org/tutorials/utility/preprocessors)\n\n**Mask / segmentation (for inpainting mode)**:\n- [SAM3 video segmentation tutorial](https://docs.comfy.org/tutorials/utility/video-segment-sam3)\n\nNote: HED and MLSD have no built-in preprocessing nodes. Canny, Depth and Pose cover most use cases; install a community pack if you need the others." ], "widgets_values_named": { "text": "## Preparing the control video with built-in preprocessing\n\nThe Fun ControlNet follows the control video you feed it, so the quality of that video's edges, depth or pose decides the quality of the control. ComfyUI ships with built-in preprocessing nodes, and each control type has an official tutorial:\n\n- **Edges (Canny)**: [Detect Edges (Canny) node](https://docs.comfy.org/built-in-nodes/Canny)\n- **Depth**: [Depth Anything 3 tutorial](https://docs.comfy.org/tutorials/utility/depth-anything-3) / [MoGe nodes](https://docs.comfy.org/built-in-nodes/MoGeInference)\n- **Pose**: [SAM3D Body tutorial](https://docs.comfy.org/tutorials/utility/sam3d-body) / [SDPose Keypoint Extractor](https://docs.comfy.org/built-in-nodes/SDPoseKeypointExtractor)\n- **All preprocessors overview**: [ComfyUI preprocessor workflows](https://docs.comfy.org/tutorials/utility/preprocessors)\n\n**Mask / segmentation (for inpainting mode)**:\n- [SAM3 video segmentation tutorial](https://docs.comfy.org/tutorials/utility/video-segment-sam3)\n\nNote: HED and MLSD have no built-in preprocessing nodes. Canny, Depth and Pose cover most use cases; install a community pack if you need the others." }, "color": "#222", "bgcolor": "#000" } ], "links": [ [ 250, 120, 0, 121, 1, "VAE" ], [ 251, 119, 0, 122, 1, "VAE" ], [ 253, 129, 0, 125, 0, "NOISE" ], [ 254, 126, 0, 125, 1, "GUIDER" ], [ 255, 123, 0, 125, 2, "SAMPLER" ], [ 256, 124, 0, 125, 3, "SIGMAS" ], [ 258, 122, 0, 130, 0, "IMAGE" ], [ 259, 121, 0, 130, 1, "AUDIO" ], [ 261, 132, 0, 131, 0, "FLOAT" ], [ 271, 136, 1, 125, 4, "LATENT" ], [ 272, 128, 0, 136, 0, "CLIP" ], [ 273, 119, 0, 136, 1, "VAE" ], [ 274, 120, 0, 136, 2, "VAE" ], [ 275, 131, 1, 136, 10, "INT" ], [ 276, 115, 0, 136, 8, "INT" ], [ 277, 115, 1, 136, 9, "INT" ], [ 280, 125, 0, 122, 0, "LATENT" ], [ 281, 125, 0, 121, 0, "LATENT" ], [ 283, 144, 0, 142, 1, "INT" ], [ 284, 143, 0, 142, 0, "INT" ], [ 285, 127, 0, 145, 0, "MODEL" ], [ 286, 145, 0, 141, 1, "MODEL" ], [ 287, 127, 0, 141, 0, "MODEL" ], [ 289, 142, 0, 124, 1, "INT" ], [ 290, 146, 0, 141, 2, "BOOLEAN" ], [ 291, 146, 0, 142, 2, "BOOLEAN" ], [ 333, 138, 0, 136, 7, "STRING" ], [ 337, 136, 0, 126, 1, "CONDITIONING" ], [ 338, 173, 0, 172, 1, "MODEL_PATCH" ], [ 339, 119, 0, 172, 2, "VAE" ], [ 340, 141, 0, 172, 0, "MODEL" ], [ 341, 172, 0, 124, 0, "MODEL" ], [ 342, 172, 0, 126, 0, "MODEL" ], [ 1761, 700, 0, 704, 0, "IMAGE" ], [ 1762, 704, 0, 172, 3, "IMAGE" ], [ 1765, 174, 0, 705, 0, "VIDEO" ], [ 1766, 705, 0, 700, 3, "VIDEO" ], [ 1767, 130, 0, 707, 0, "VIDEO" ], [ 1768, 709, 0, 710, 0, "IMAGE" ], [ 1770, 705, 0, 709, 0, "VIDEO" ] ], "groups": [ { "id": 1, "title": "Models", "bounding": [ -1520, 4840, 700, 990 ], "color": "#3f789e", "flags": {} }, { "id": 2, "title": "Sampling", "bounding": [ 480, 4830, 690, 700 ], "color": "#3f789e", "flags": {} }, { "id": 3, "title": "Switch Model and Settings", "bounding": [ -790, 5340, 730, 490 ], "color": "#3f789e", "flags": {} }, { "id": 4, "title": "Decoding and create video", "bounding": [ 480, 5560, 690, 270 ], "color": "#3f789e", "flags": {} }, { "id": 5, "title": "User Inputs", "bounding": [ -1520, 5860, 2690, 1020 ], "color": "#3f789e", "flags": {} }, { "id": 6, "title": "Conditioning", "bounding": [ -790, 4840, 730, 480 ], "color": "#3f789e", "flags": {} }, { "id": 7, "title": "Apply Fun ControlNet", "bounding": [ -30, 4840, 490, 990 ], "color": "#3f789e", "flags": {} }, { "id": 8, "title": "Video Settings", "bounding": [ -1490, 5910, 290, 720 ], "color": "#3f789e", "flags": {} }, { "id": 9, "title": "Select and Ctrl‑B to enable", "bounding": [ -750, 6120, 290, 340 ], "color": "#3f789e", "flags": {} } ], "definitions": { "subgraphs": [ { "id": "622cceeb-7ba3-4dd9-b0e8-00066c5222a4", "version": 1, "state": { "lastGroupId": 9, "lastNodeId": 717, "lastLinkId": 1772, "lastRerouteId": 0 }, "revision": 0, "config": {}, "name": "SDPose Video Pose Extractor [Multi‑Person]", "description": "Extracts multi-person pose keypoints and skeleton frame sequences from video using SDPose with built-in person detection.", "inputNode": { "id": -10, "bounding": [ -3570, 3300, 182.8984375, 340 ] }, "outputNode": { "id": -20, "bounding": [ -1890, 3730, 120, 140 ] }, "inputs": [ { "id": "088eefc1-cd8a-4573-993f-9e4da008a12d", "name": "resize_type.longer_size", "type": "INT", "linkIds": [ 1704 ], "label": "resize_target_longer_size", "pos": [ -3407.1015625, 3320 ] }, { "id": "b6449bd3-73d4-41c8-b81f-cf8d33f76a2e", "name": "scale_method", "type": "COMBO", "linkIds": [ 1705 ], "pos": [ -3407.1015625, 3340 ] }, { "id": "4cff52ad-ed07-4c97-8803-fcbd89554fd0", "name": "draw_body", "type": "BOOLEAN", "linkIds": [ 1706 ], "pos": [ -3407.1015625, 3360 ] }, { "id": "7af63dce-f7df-4d7e-8215-d7c7f60bf81c", "name": "draw_hands", "type": "BOOLEAN", "linkIds": [ 1707 ], "pos": [ -3407.1015625, 3380 ] }, { "id": "af3a9bce-61f9-4aca-b530-9f65e028b35e", "name": "draw_face", "type": "BOOLEAN", "linkIds": [ 1708 ], "pos": [ -3407.1015625, 3400 ] }, { "id": "4620f6a3-2c85-4b79-ad8f-35d0326b568f", "name": "draw_feet", "type": "BOOLEAN", "linkIds": [ 1709 ], "pos": [ -3407.1015625, 3420 ] }, { "id": "fee5d0c9-8d4b-4934-81d8-ba2206dc56cb", "name": "stick_width", "type": "INT", "linkIds": [ 1710 ], "pos": [ -3407.1015625, 3440 ] }, { "id": "aafdd060-ba81-4324-a9cc-b656e1ebc133", "name": "face_point_size", "type": "INT", "linkIds": [ 1711 ], "pos": [ -3407.1015625, 3460 ] }, { "id": "514c5503-f9e6-4d23-b1ae-1d3291acb2a3", "name": "score_threshold", "type": "FLOAT", "linkIds": [ 1712 ], "pos": [ -3407.1015625, 3480 ] }, { "id": "4eb3e4ea-7a36-4511-8483-0d12aadd32f7", "name": "threshold", "type": "FLOAT", "linkIds": [ 1718 ], "label": "detect_threshold", "pos": [ -3407.1015625, 3500 ] }, { "id": "c76a7a05-81e6-4b17-a9e0-85f47a5844f2", "name": "class_name", "type": "COMBO", "linkIds": [ 1719 ], "label": "detect_class", "pos": [ -3407.1015625, 3520 ] }, { "id": "4417e988-6e80-4236-be31-4c179037f5a2", "name": "max_detections", "type": "INT", "linkIds": [ 1720 ], "pos": [ -3407.1015625, 3540 ] }, { "id": "7d7c4a0b-0d1b-4c98-942b-f90548d2a492", "name": "ckpt_name", "type": "COMBO", "linkIds": [ 1721 ], "pos": [ -3407.1015625, 3560 ] }, { "id": "4d75122c-2c14-452a-98fe-d1545d3e012a", "name": "unet_name", "type": "COMBO", "linkIds": [ 1722 ], "pos": [ -3407.1015625, 3580 ] }, { "id": "6c46c988-4dd1-41a2-957e-03caf60d7657", "name": "video", "type": "VIDEO", "linkIds": [ 1741 ], "pos": [ -3407.1015625, 3600 ] } ], "outputs": [ { "id": "f05ed8cc-9403-4f14-8085-4364b06f8a48", "name": "IMAGE", "type": "IMAGE", "linkIds": [ 1701 ], "localized_name": "IMAGE", "pos": [ -1870, 3750 ] }, { "id": "4b64118e-3cef-4eeb-9dad-4cd09cfd63a2", "name": "keypoints", "type": "POSE_KEYPOINT", "linkIds": [ 1725 ], "pos": [ -1870, 3770 ] }, { "id": "a27f7e34-dcbc-4fb0-a4e1-2c5fc423ca5f", "name": "bboxes", "type": "BOUNDING_BOX", "linkIds": [ 1726 ], "pos": [ -1870, 3790 ] }, { "id": "b7fe351d-2b38-41ea-9f4d-3be1a0aad275", "name": "audio", "type": "AUDIO", "linkIds": [ 1743 ], "pos": [ -1870, 3810 ] }, { "id": "ae187b6f-c9ca-4487-b5c1-3ad775fe945e", "name": "fps", "type": "FLOAT", "linkIds": [ 1744 ], "pos": [ -1870, 3830 ] } ], "widgets": [], "nodes": [ { "id": 671, "type": "SDPoseKeypointExtractor", "pos": [ -2550, 3080 ], "size": [ 270, 180 ], "flags": {}, "order": 0, "mode": 0, "inputs": [ { "localized_name": "model", "name": "model", "type": "MODEL", "link": 1696 }, { "localized_name": "vae", "name": "vae", "type": "VAE", "link": 1697 }, { "localized_name": "image", "name": "image", "type": "IMAGE", "link": 1698 }, { "localized_name": "bboxes", "name": "bboxes", "shape": 7, "type": "BOUNDING_BOX", "link": 1717 } ], "outputs": [ { "localized_name": "keypoints", "name": "keypoints", "type": "POSE_KEYPOINT", "links": [ 1699, 1725 ] } ], "properties": { "Node name for S&R": "SDPoseKeypointExtractor", "cnr_id": "comfy-core", "ver": "0.15.0", "enableTabs": false, "tabWidth": 65, "tabXOffset": 10, "hasSecondTab": false, "secondTabText": "Send Back", "secondTabOffset": 80, "secondTabWidth": 65 }, "widgets_values": [ 16 ], "widgets_values_named": { "batch_size": 16 } }, { "id": 674, "type": "ResizeImageMaskNode", "pos": [ -3010, 3880 ], "size": [ 270, 110 ], "flags": {}, "order": 3, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", "link": 1742 }, { "localized_name": "longer_size", "name": "resize_type.longer_size", "type": "INT", "widget": { "name": "resize_type.longer_size" }, "link": 1704 }, { "localized_name": "scale_method", "name": "scale_method", "type": "COMBO", "widget": { "name": "scale_method" }, "link": 1705 } ], "outputs": [ { "localized_name": "resized", "name": "resized", "type": "IMAGE", "links": [ 1698, 1716 ] } ], "properties": { "Node name for S&R": "ResizeImageMaskNode", "cnr_id": "comfy-core", "ver": "0.15.0", "enableTabs": false, "tabWidth": 65, "tabXOffset": 10, "hasSecondTab": false, "secondTabText": "Send Back", "secondTabOffset": 80, "secondTabWidth": 65 }, "widgets_values": [ "scale longer dimension", 1024, "lanczos" ], "widgets_values_named": { "resize_type": "scale longer dimension", "resize_type.longer_size": 1024, "scale_method": "lanczos" } }, { "id": 672, "type": "SDPoseDrawKeypoints", "pos": [ -2540, 3590 ], "size": [ 270, 280 ], "flags": {}, "order": 1, "mode": 0, "inputs": [ { "localized_name": "keypoints", "name": "keypoints", "type": "POSE_KEYPOINT", "link": 1699 }, { "localized_name": "draw_body", "name": "draw_body", "type": "BOOLEAN", "widget": { "name": "draw_body" }, "link": 1706 }, { "localized_name": "draw_hands", "name": "draw_hands", "type": "BOOLEAN", "widget": { "name": "draw_hands" }, "link": 1707 }, { "localized_name": "draw_face", "name": "draw_face", "type": "BOOLEAN", "widget": { "name": "draw_face" }, "link": 1708 }, { "localized_name": "draw_feet", "name": "draw_feet", "type": "BOOLEAN", "widget": { "name": "draw_feet" }, "link": 1709 }, { "localized_name": "stick_width", "name": "stick_width", "type": "INT", "widget": { "name": "stick_width" }, "link": 1710 }, { "localized_name": "face_point_size", "name": "face_point_size", "type": "INT", "widget": { "name": "face_point_size" }, "link": 1711 }, { "localized_name": "score_threshold", "name": "score_threshold", "type": "FLOAT", "widget": { "name": "score_threshold" }, "link": 1712 } ], "outputs": [ { "localized_name": "IMAGE", "name": "IMAGE", "type": "IMAGE", "links": [ 1701 ] } ], "properties": { "Node name for S&R": "SDPoseDrawKeypoints", "cnr_id": "comfy-core", "ver": "0.15.0", "enableTabs": false, "tabWidth": 65, "tabXOffset": 10, "hasSecondTab": false, "secondTabText": "Send Back", "secondTabOffset": 80, "secondTabWidth": 65 }, "widgets_values": [ true, true, true, true, 4, 2, 0.5, true ], "widgets_values_named": { "draw_body": true, "draw_hands": true, "draw_face": true, "draw_feet": true, "stick_width": 4, "face_point_size": 2, "score_threshold": 0.5, "draw_head": true } }, { "id": 673, "type": "CheckpointLoaderSimple", "pos": [ -3040, 3080 ], "size": [ 390, 160 ], "flags": {}, "order": 2, "mode": 0, "inputs": [ { "localized_name": "ckpt_name", "name": "ckpt_name", "type": "COMBO", "widget": { "name": "ckpt_name" }, "link": 1721 } ], "outputs": [ { "localized_name": "MODEL", "name": "MODEL", "type": "MODEL", "links": [ 1696 ] }, { "localized_name": "CLIP", "name": "CLIP", "type": "CLIP", "links": [] }, { "localized_name": "VAE", "name": "VAE", "type": "VAE", "links": [ 1697 ] } ], "properties": { "Node name for S&R": "CheckpointLoaderSimple", "cnr_id": "comfy-core", "ver": "0.15.0", "models": [ { "name": "sdpose_wholebody_fp16.safetensors", "url": "https://huggingface.co/Comfy-Org/SDPose/resolve/main/checkpoints/sdpose_wholebody_fp16.safetensors", "directory": "checkpoints" } ], "enableTabs": false, "tabWidth": 65, "tabXOffset": 10, "hasSecondTab": false, "secondTabText": "Send Back", "secondTabOffset": 80, "secondTabWidth": 65 }, "widgets_values": [ "sdpose_wholebody_fp16.safetensors" ], "widgets_values_named": { "ckpt_name": "sdpose_wholebody_fp16.safetensors" } }, { "id": 677, "type": "UNETLoader", "pos": [ -3030, 3300 ], "size": [ 370, 110 ], "flags": {}, "order": 4, "mode": 0, "inputs": [ { "localized_name": "unet_name", "name": "unet_name", "type": "COMBO", "widget": { "name": "unet_name" }, "link": 1722 } ], "outputs": [ { "localized_name": "MODEL", "name": "MODEL", "type": "MODEL", "links": [ 1715 ] } ], "properties": { "Node name for S&R": "UNETLoader", "cnr_id": "comfy-core", "ver": "0.14.1", "models": [ { "name": "rt_detr_v4-x-hgnet_fp16.safetensors", "url": "https://huggingface.co/Comfy-Org/SDPose/resolve/main/diffusion_models/rt_detr_v4-x-hgnet_fp16.safetensors", "directory": "diffusion_models" } ], "enableTabs": false, "tabWidth": 65, "tabXOffset": 10, "hasSecondTab": false, "secondTabText": "Send Back", "secondTabOffset": 80, "secondTabWidth": 65 }, "widgets_values": [ "rt_detr_v4-x-hgnet_fp16.safetensors", "default" ], "widgets_values_named": { "unet_name": "rt_detr_v4-x-hgnet_fp16.safetensors", "weight_dtype": "default" } }, { "id": 678, "type": "RTDETR_detect", "pos": [ -2540, 3320 ], "size": [ 280, 200 ], "flags": {}, "order": 5, "mode": 0, "inputs": [ { "label": "model", "localized_name": "model", "name": "model", "type": "MODEL", "link": 1715 }, { "label": "image", "localized_name": "image", "name": "image", "type": "IMAGE", "link": 1716 }, { "localized_name": "threshold", "name": "threshold", "type": "FLOAT", "widget": { "name": "threshold" }, "link": 1718 }, { "localized_name": "class_name", "name": "class_name", "type": "COMBO", "widget": { "name": "class_name" }, "link": 1719 }, { "localized_name": "max_detections", "name": "max_detections", "type": "INT", "widget": { "name": "max_detections" }, "link": 1720 } ], "outputs": [ { "localized_name": "bboxes", "name": "bboxes", "type": "BOUNDING_BOX", "links": [ 1717, 1726 ] } ], "properties": { "Node name for S&R": "RTDETR_detect", "cnr_id": "comfy-core", "ver": "0.15.1", "enableTabs": false, "tabWidth": 65, "tabXOffset": 10, "hasSecondTab": false, "secondTabText": "Send Back", "secondTabOffset": 80, "secondTabWidth": 65 }, "widgets_values": [ 0.5, "person", 2 ], "widgets_values_named": { "threshold": 0.5, "class_name": "person", "max_detections": 2 } }, { "id": 692, "type": "GetVideoComponents", "pos": [ -3010, 4100 ], "size": [ 230, 120 ], "flags": {}, "order": 6, "mode": 0, "inputs": [ { "localized_name": "video", "name": "video", "type": "VIDEO", "link": 1741 } ], "outputs": [ { "localized_name": "images", "name": "images", "type": "IMAGE", "links": [ 1742 ] }, { "localized_name": "audio", "name": "audio", "type": "AUDIO", "links": [ 1743 ] }, { "localized_name": "fps", "name": "fps", "type": "FLOAT", "links": [ 1744 ] }, { "localized_name": "bit_depth", "name": "bit_depth", "type": "COMBO", "links": null }, { "localized_name": "color_space", "name": "color_space", "type": "COMBO", "links": null } ], "properties": { "Node name for S&R": "GetVideoComponents", "cnr_id": "comfy-core", "ver": "0.18.1", "enableTabs": false, "tabWidth": 65, "tabXOffset": 10, "hasSecondTab": false, "secondTabText": "Send Back", "secondTabOffset": 80, "secondTabWidth": 65 } } ], "groups": [], "links": [ { "id": 1696, "origin_id": 673, "origin_slot": 0, "target_id": 671, "target_slot": 0, "type": "MODEL" }, { "id": 1697, "origin_id": 673, "origin_slot": 2, "target_id": 671, "target_slot": 1, "type": "VAE" }, { "id": 1698, "origin_id": 674, "origin_slot": 0, "target_id": 671, "target_slot": 2, "type": "IMAGE" }, { "id": 1699, "origin_id": 671, "origin_slot": 0, "target_id": 672, "target_slot": 0, "type": "POSE_KEYPOINT" }, { "id": 1701, "origin_id": 672, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "IMAGE" }, { "id": 1704, "origin_id": -10, "origin_slot": 0, "target_id": 674, "target_slot": 1, "type": "INT" }, { "id": 1705, "origin_id": -10, "origin_slot": 1, "target_id": 674, "target_slot": 2, "type": "COMBO" }, { "id": 1706, "origin_id": -10, "origin_slot": 2, "target_id": 672, "target_slot": 1, "type": "BOOLEAN" }, { "id": 1707, "origin_id": -10, "origin_slot": 3, "target_id": 672, "target_slot": 2, "type": "BOOLEAN" }, { "id": 1708, "origin_id": -10, "origin_slot": 4, "target_id": 672, "target_slot": 3, "type": "BOOLEAN" }, { "id": 1709, "origin_id": -10, "origin_slot": 5, "target_id": 672, "target_slot": 4, "type": "BOOLEAN" }, { "id": 1710, "origin_id": -10, "origin_slot": 6, "target_id": 672, "target_slot": 5, "type": "INT" }, { "id": 1711, "origin_id": -10, "origin_slot": 7, "target_id": 672, "target_slot": 6, "type": "INT" }, { "id": 1712, "origin_id": -10, "origin_slot": 8, "target_id": 672, "target_slot": 7, "type": "FLOAT" }, { "id": 1715, "origin_id": 677, "origin_slot": 0, "target_id": 678, "target_slot": 0, "type": "MODEL" }, { "id": 1716, "origin_id": 674, "origin_slot": 0, "target_id": 678, "target_slot": 1, "type": "IMAGE" }, { "id": 1717, "origin_id": 678, "origin_slot": 0, "target_id": 671, "target_slot": 3, "type": "BOUNDING_BOX" }, { "id": 1718, "origin_id": -10, "origin_slot": 9, "target_id": 678, "target_slot": 2, "type": "FLOAT" }, { "id": 1719, "origin_id": -10, "origin_slot": 10, "target_id": 678, "target_slot": 3, "type": "COMBO" }, { "id": 1720, "origin_id": -10, "origin_slot": 11, "target_id": 678, "target_slot": 4, "type": "INT" }, { "id": 1721, "origin_id": -10, "origin_slot": 12, "target_id": 673, "target_slot": 0, "type": "COMBO" }, { "id": 1722, "origin_id": -10, "origin_slot": 13, "target_id": 677, "target_slot": 0, "type": "COMBO" }, { "id": 1725, "origin_id": 671, "origin_slot": 0, "target_id": -20, "target_slot": 1, "type": "POSE_KEYPOINT" }, { "id": 1726, "origin_id": 678, "origin_slot": 0, "target_id": -20, "target_slot": 2, "type": "BOUNDING_BOX" }, { "id": 1741, "origin_id": -10, "origin_slot": 14, "target_id": 692, "target_slot": 0, "type": "VIDEO" }, { "id": 1742, "origin_id": 692, "origin_slot": 0, "target_id": 674, "target_slot": 0, "type": "IMAGE" }, { "id": 1743, "origin_id": 692, "origin_slot": 1, "target_id": -20, "target_slot": 3, "type": "AUDIO" }, { "id": 1744, "origin_id": 692, "origin_slot": 2, "target_id": -20, "target_slot": 4, "type": "FLOAT" } ], "extra": { "workflowRendererVersion": "LG" } } ] }, "config": {}, "extra": { "ds": { "scale": 0.2420095403823657, "offset": [ 3653.0417594228675, -4369.381097166231 ] }, "frontendVersion": "1.51.9", "VHS_latentpreview": false, "VHS_latentpreviewrate": 0, "VHS_MetadataImage": true, "VHS_KeepIntermediate": true }, "version": 0.4 }