CivArchive
    MiniMax H3 Motion Director - v1.7.0
    NSFW

    # MiniMax H3 Motion Director: A whole video project in one node (v1.8.4) Updated September 18th 2026

    One ComfyUI node that turns MiniMax H3 from "generate a clip" into "produce a video."

    Build a timeline of shots, mix generation methods segment by segment, carry visual and generated-audio context across the cuts, rerun only the shots that need fixing, refine the result, and export the finished video — without your graph turning into a wall of duplicated nodes.

    Required for this workflow Minimax H3 Motion Director Fork
    This fork: https://github.com/The5toryofthe5ecret5tar5ystem/ComfyUI-MiniMax-H3-Motion-Director

    Full Motion Director node and workflow with ref2va/t2v/i2v/v2v, Character Replace with sam3 negative image masking, RefMod character safetensors, prompt enhance using local or API LLM with prompt guides to help the model make more usable minimax h3 prompts, many different post process options for upscale, face refine, and audio room, per segment resume and new seed regenerate allowing you to restart at the segment you want.



    ## Where this came from

    This is a maintained fork of [j955229's MiniMax H3 Motion Director](https://github.com/j955229/ComfyUI-MiniMax-H3-Motion-Director). Full credit for the original architecture and the upstream feature set goes to the upstream author — everything below is built on top of their work, not instead of it.

    The project is deliberately integrated rather than pretending everything was invented from scratch. Upstream contains and adapts work from:

    - [AIMixer / ComfyUI_MiniMaxH3_Director](https://github.com/AIMixer/ComfyUI_MiniMaxH3_Director) — Apache-2.0

    - [NikoDemon80 / ComfyUI-H3-Motion-Context](https://github.com/NikoDemon80/ComfyUI-H3-Motion-Context) — GPL-3.0

    - [Carasibana / ComfyUI-H3-FaceRefine](https://github.com/Carasibana/ComfyUI-H3-FaceRefine) — MIT

    - [Kijai / ComfyUI-KJNodes](https://github.com/kijai/ComfyUI-KJNodes) — GPL-3.0

    Thanks to all of them. Full attribution lives in the repo's NOTICE, LICENSE and LICENSES/.

    License: GPL-3.0

    ---

    ## Install

    Currently not on comfyui manager. Will add later on once further work is done.

    Manual:

    Masking requires yolo and sams
    This requires face_yolov8m.pt in ComfyUI/models/ultralytics/bbox/
    https://huggingface.co/Bingsu/adetailer/blob/main/face_yolov8m.pt

    For face refine's mask mode: SAMS model in ComfyUI/models/sams
    https://github.com/ultralytics/assets/releases/download/v8.4.0/sam2.1_b.pt

    ----------------------------------------------
    And the optional Ultralytics full package
    https://github.com/ultralytics/ultralytics
    # Windows portable

    python_embeded\python.exe -m pip install ultralytics

    # Linux/macOS

    python -m pip install ultralytics

    ```

    Restart ComfyUI completely afterwards. If a frontend file changed, do a hard refresh in the browser too.

    Requirements: a recent ComfyUI build with official MiniMax H3 support. This fork calls the H3 nodes with keyword arguments, which matches the ComfyUI core node API from the io.Schema / ComfyNode rewrite (v0.34.x-era) that broke the older positional calls — and it still works on earlier builds.

    ---

    ## Quick start: the four workflows people actually use

    The Director exposes native T2V / I2V / FL2V / R2V / V2V / RV2V modes plus Mixed Mode, where every segment picks its own method. Here are the four most useful patterns. Full walkthroughs are in docs/USER_GUIDE.md.

    ### 1. T2V text to video

    The simplest path, and the best way to test the node.

    1. Generate → select T2V — Text to Video.

    2. Set aspect ratio, megapixels and FPS.

    3. Add Prompt Group once per shot. Give each group its own prompt and duration.

    4. Write each shot so it carries character, environment and action state forward — that is what makes separate segments read as one scene.

    5. Run, watch Live Preview, then Results → Final Result to save.

    For a 30-second piece, use three 10-second groups rather than one long one. If a single shot comes out wrong, turn on Selective Run and reroll just that shot.

    ### 2. I2V animate an image

    Use this when you already have the frame you want to start from.

    1. Select I2V.

    2. Upload one start image to the segment.

    3. Describe what happens next. Don't re-describe what the image already makes unambiguous — spend the prompt on motion, camera and performance.

    4. Set duration and generate.

    Works well for animating a character portrait, starting from a designed scene, or continuing from a previous segment's last frame (**Segment Result** lets you pull a decoded frame from an earlier Mixed segment straight into an I2V input).

    ### 3. Ref2V / ref2va one character, many shots

    This is the mode for a recurring character. The node's R2V mode drives the REF2VA model path.

    1. Select R2V.

    2. Put the identity references in Common References so every group inherits them:

    - Picture 1 = headshot (face identity)

    - Picture 2 = character sheet (front / side / back — body shape and wardrobe)

    3. Add one Assets Group per shot. Each group takes up to Picture 1–9, Video 1–3, Audio 1–3.

    4. Keep only shot-specific material local to each group — a scene plate, a motion reference, a voice clip.

    5. Write each shot's prompt, including how each reference should be used (and what it should not be used for).

    6. Generate. Reroll only the shots that miss.

    Because references live at project level, the character stays consistent across the whole sequence without re-uploading anything.

    ### 4. Character Replace swap the performer in real footage

    Re-renders chosen windows of a source video with your referenced character. Each window gets an automatic subject mask (SAM3, by text prompt) and is rendered as an independent masked clip: the person is regenerated from your references, the background stays the real source background.

    1. Load a Source Video and add your replacement character to Common References (Picture 1 = face, Picture 2 = character sheet) — set it up as you would for RV2V.

    2. Flip Replace: ON on the timeline.

    3. Add windows with + Add after / + Add at playhead (default 5 s, up to 20 s; lengths snap to the H3 frame grid). Windows may overlap or be out of order — list order is render order.

    4. Per window, set:

    - kind = sam3 (auto mask from a text prompt, no mask files needed)

    - render = anchor (recommended — strongest identity) or inpaint (pixel-exact background, weaker identity)

    - SAM3 prompt describing the source person, e.g. the woman, full body from head to toe, including every strand of her hair

    - grow / feather for seam control

    5. Generate. During the prepare phase, Live Preview shows a Mask check card (source | red subject overlay | motion reference) so you can abort before sampling if the mask is wrong.

    If SAM3 misses, OOMs, or can't run, that window falls back to a plain RV2V re-render — it never hard-fails the run. Resume reuses finished windows from cache and does not re-run SAM3 on them.

    Validated on an RTX 3090 (24 GB): 0.4 MP working resolution, 5–10 s windows, in-run SAM3 auto-masking. 16 GB users should prefer the pre-made frames mask kind.


    ---

    ## What's new in this fork

    Everything below is additive on top of upstream. Upstream's full feature set is untouched.

    v1.7.0 2026-09-14 Render once, then iterate on post-process without re-rendering

    Reuse the first pass. Turn on Reuse cached first pass and the raw first-pass AV latent is written to disk keyed on everything that produced it except post-processing. Re-run with the same seed, prompt, references and resolution but different Global Refine, Face Refine or Audio Room settings and the expensive H3 sample is skipped, a 107-frame r2v render measured 363 s down to 33 s on reuse. The key only invalidates when the seed, prompt, references, resolution, sampler or model change, because those genuinely change the first pass. Every hit and miss is logged, and a settings snapshot plus a field-level drift diff explain any surprise miss.

    Tiled refine. The Global Refine second pass can now run as overlapping spatial tiles (tile_size, tile_overlap), so a large upscale fits in less VRAM. Each tile is sampled alone with its own keyframe crop, brightness-matched back to the input, and stitched with a linear cross-fade on the interior edges; audio is taken from the first tile.

    Compare raw vs processed. Export comparison writes <prefix>_raw_firstpass and <prefix>_postprocessed so the unprocessed and processed videos can be A/B'd side by side.

    Refine opt-out on an external patch. allow_refine_on_external_patch lets the second sampling pass be skipped when a patch already supplied the output.

    Latent continuation (early test). An opt-in, experimental latent_continuation_enabled port of the community "continue in latent space" joiner: the previous segment's final latent is injected into the next segment's sampling stream and locked with a nested H3 noise mask. Flagged EARLY TEST, not for production yet.

    v1.6.0 — 2026-09-13

    RefMod identity references, a Results player that streams instead of shipping base64, and
    Audio Refine made cache-free.

    https://civarchive.com/models/2932888/minimax-h3-refmods-workflows-and-tutorial-reusable-identities-without-training?modelVersionId=3319580

    currently testing in the RefMod workflow only but will take over ref2va as an option with more testing and updates.

    https://github.com/The5toryofthe5ecret5tar5ystem/ComfyUI-MiniMax-H3-Motion-Director/tree/main/example_workflows

    Added

    • RefMod identity references. A connected Apply H3 RefMod chain now reaches every
      segment: the Director harvests its reference blocks and appends them to each segment's
      own conditioning, so a character mod can carry identity across a whole chain with no
      headshot and no character sheet. The mod is attached to the DiT only — it is never
      presented to the text encoder, and no <Picture n> label is created for it.

    • Minimax h3 Director - ref2va + RefMod example workflow 1x4s.json — a single 4 s shot
      for fast identity iteration, shipping an in-workflow usage guide covering identity,
      wardrobe, the knobs and their reasons, the failure modes, and a bisect order.

    • A wardrobe channel. A RefMod latent is roughly a 96 x 54 thumbnail per frame, so it
      carries face and body and physically cannot carry a garment's cut, seams or trim. Clothing
      now comes from a wardrobe: prompt section, or from a full-resolution picture reference,
      with the prompt assigning each source its job so the two do not fight.

    • Streamed preview clips in Results. Finished segments and final results are encoded to
      a small all-intra H.264 clip in ComfyUI's temp directory and streamed over /view, instead
      of pushing every frame as base64 JPEG through the websocket. One 243-frame segment measured
      ~11.9 MB of base64 parsed synchronously on the browser main thread; the clip is ~2.5 MB and
      streams with ordinary HTTP range requests, at zero websocket cost. All-intra is deliberate:
      every frame is a keyframe, so a seek lands on the exact frame rather than the nearest
      earlier one.

    ### v1.5.0 — Audio Room, per scene

    Generated audio no longer has to sound like a dry camera mic.

    - Pick a named space — dry, bedroom, bathroom, bar, office, car, hall, cathedral, outdoor — and all six reverberation parameters are set for you. Or choose Custom and dial reverberance, HF damping, room size, stereo depth, pre-delay and wet gain yourself. A separate Level section adds normalise and gain.

    - Per scene, not per project. A scene can declare its own room, so a bathroom scene and a bedroom scene in the same render stop sharing one acoustic setting.

    - It cannot invalidate a cache. The chain runs at output assembly, downstream of the segment audio cache, and model audio is processed before the merge so a merged export still gets one space per scene. Turning a room on or changing it invalidates no segment, no context cache, no finished render.

    - Stereo is preserved, failures are loud. Built on SoX. Unlike the third-party effects node it replaces — which read waveform[0, 0] and returned mono from stereo input, silently returned the original on every failure, and round-tripped through 16-bit PCM — channel count and sample count are preserved, and a track that can't be processed is left dry and named in the report.

    - Never-spoken guard. H3 generates audio from the same text it renders, so a bare token or quoted phrase in shared reference material is a shape it can read aloud. A checkbox appends an explicit control line marking the block as reference-only.

    ### Re-ground — stop drift on long chains

    Long multi-segment chains drift in colour, contrast and identity after several hops. Re-ground re-anchors a segment's continuity context at the chain root (the clean start of the job) instead of the immediately-previous segment, resetting accumulated error without breaking the flow.

    Every segment boundary shows two small circles: the top ↔ / × is the existing context link, the bottom *R** is Re-ground. Left-click to toggle (it turns amber); right-click either circle for the boundary menu. Use it every 3–5 shots on long jobs, alongside Latent Scale Lock and Color Re-anchor.

    ### Performance

    - ~525× faster prompt truncation on the draw path. Prompt fitting used an O(n²) character-by-character measureText loop and could freeze the Director modal for up to ~30 s on projects with large per-segment prompts; it now uses binary search.

    - Live preview decode cap. With shipped defaults the live preview decoded an 8-frame clip on every diffusion step of every stage, on the sampling thread, on the same GPU doing the diffusion. Decodes are now capped at one per 400 ms per segment/stage, while always decoding the first and final step so the preview stays a faithful progression. Output-neutral.

    - Idle timeline loop. The Replace-windows loop ran at display rate as long as a node sat on the canvas. It now drops to a 250 ms poll when idle and returns to full rate on hover — and the frame handle is finally stored, so it can actually be cancelled (previously cancelAnimationFrame was a no-op).

    - Cheap rendering wins content-visibility on batch group cards).

    ### Resume, Stop and correctness

    - Resume was being ignored by four separate plan buildersprompt_batch/gen, fl2v, mixed and external_groups each dropped the resume flag, so Resume silently restarted from segment 1 on those timeline shapes. Fixed, and a structural test now scans every builder for the resume fields (which is how the fourth instance was found).

    - The engine now decides the resume start point, not the dialog. The preview and its audio check no longer have blind spots that could present a partially-cached run as complete, and a stopped run no longer stays marked running.

    - Resume was greyed out whenever the manifest had no done marks, even when caches were present and reusable. Fixed.

    - A CUDA out-of-memory was reported as a sampler incompatibility — an OOM in the external-sampler branch got wrapped into "the sampler does not support MiniMax H3 inputs," sending you after the wrong problem entirely. OOM now surfaces as OOM.

    ### v1.4.0 — Stop, undo/redo, presets, sweeps

    - Partial export on Stop. Stopping no longer throws the run away: the current segment finishes, everything completed is assembled into a real partial video, and the run is recorded as stopped with the resume manifest intact — so Resume continues from the first unfinished segment.

    - Timeline undo / redoCtrl+Z / Ctrl+Shift+Z Ctrl+Y too), bounded at 50 steps, recorded from the single commit funnel so every edit is covered. Deliberately inert while you're typing in a text field.

    - Named presets storing settings only — never your segments, prompts, task type or seed, so a preset can't quietly rewrite a project. Server-side atomic storage; a corrupt index fails loudly rather than being replaced by an empty one.

    - Multi-seed sweep — render N takes with N seeds in one click. Take seeds are hashed rather than seed + 1, because consecutive seeds can produce visibly correlated results.

    - Fewer surprises before you queueValidate runs a pre-flight check (empty timeline, H3 frame-grid violations, missing references, Character Replace setup mistakes), Preview prompt shows the exact text the model receives including what the engine appends, and References… cross-checks which slots your prompts mention against the files actually attached.

    ### Safety guards

    - Global Refine is skipped automatically when the diffusion model carries an external attention patch such as SLA or Spectrum, which a second guidance-distilled pass would otherwise corrupt. An opt-out exists for advanced users.

    - Per-segment audio in Results — each segment's audio reaches the Results player as soon as that segment finishes, so the Segment view has real aligned sound while the job is still running.

    ### Tests + CI

    - Python unit and contract tests run from any directory with no live ComfyUI python -m pytest), plus standalone frontend tests. A CI workflow runs both on every push and PR.

    - 410 Python tests, 21 frontend tests.

    ---

    ## Models used by the bundled example workflows

    Drop these under your ComfyUI models/ folder using the subfolders shown. The paths match the workflows' model subgraphs — swap the loader entries if your filenames differ.

    | Role | Place in ComfyUI/models/… | Source |

    |---|---|---|

    | REF2VA diffusion (beta4) | diffusion_models/Minimax/10Eros_Max_h3_TURBO-hybrid_beta4_int8_convrot.safetensors | [TenStrip/10Eros-Max](https://huggingface.co/TenStrip/10Eros-Max) |

    | REF2VA diffusion (beta5) | diffusion_models/Minimax/10Eros_Max_h3_TURBO-hybrid_beta5_int8.safetensors | [TenStrip/10Eros-Max](https://huggingface.co/TenStrip/10Eros-Max) |

    | FL2VA base | diffusion_models/Minimax/minimax_h3_fl2va_pruned_int8_convrot.safetensors | [Kijai/MiniMax-H3-experimental](https://huggingface.co/Kijai/MiniMax-H3-experimental) |

    | Fast-video path | diffusion_models/minimax_h3_fastvideo_vsa_datafree_1300step_4step_int8_convrot.safetensors | [Kijai/MiniMax-H3-experimental](https://huggingface.co/Kijai/MiniMax-H3-experimental/blob/main/minimax_h3_fastvideo_vsa_datafree_1300step_4step_int8_convrot.safetensors) |

    | Text encoder (uncensored, nvfp4) | text_encoders/qwen3vl_32b_heretic_minimax_h3_nvfp4.safetensors | [sakamakismile/Qwen3-VL-32B-Heretic-MiniMax-H3-NVFP4](https://huggingface.co/sakamakismile/Qwen3-VL-32B-Heretic-MiniMax-H3-NVFP4/blob/main/qwen3vl_32b_heretic_minimax_h3_nvfp4.safetensors) |

    | Video VAE (int8 convrot) | vae/minimax_h3_video_vae_int8_convrot.safetensors | [Kijai/MiniMax-H3-experimental](https://huggingface.co/Kijai/MiniMax-H3-experimental/blob/main/minimax_h3_video_vae_int8_convrot.safetensors) |

    | Audio VAE (fp32) | vae/minimax_h3_audio_vae_fp32.safetensors | [Kijai/MiniMax-H3-experimental](https://huggingface.co/Kijai/MiniMax-H3-experimental) |

    | REF2V turbo LoRA (4-step) | loras/minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors | [LINK NEEDED] |

    | FL2V turbo LoRA (4-step, 768p) | loras/minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors | [LINK NEEDED] |

    Base model: [MiniMaxAI/MiniMax-H3](https://huggingface.co/MiniMaxAI/MiniMax-H3) — the official release, including the FL2VA, Ref2VA, vae, text_encoder and transformer_ref folders.

    Notes

    - The int8-convrot VAE needs ComfyUI 0.31.0 or newer or you get black outputs. It also speeds up VAE decode by roughly 1.5×.

    - The nvfp4 text encoder is ~15.7 GB and fits a single 16 GB card.

    - The bundled workflows also wire an empty Power Lora Loader — it is deliberately left empty as a free slot for your own LoRA.

    - Kijai's repo also carries an alternative set of accelerator LoRAs MiniMax-H3-Ref2VA-Acc-8Step, MiniMax-H3-FL2VA-Acc-8Step, pruned and unpruned) if you prefer 8-step acceleration over the 4-step turbo LoRAs.

    ---

    ## Example workflows included

    Three ready-to-run workflows ship in example_workflows/:

    | File | What it shows |

    |---|---|

    | Minimax h3 Director - ref2va example workflow 3x7s.json | 3 × 7 s continuous golden-hour forest run. One character, dynamic camera, three segments, with bundled AI-generated placeholder headshot + character sheet. |

    | Minimax h3 Director - t2v example workflow 5x7s - elf vs giant orc.json | 5 × 7 s pure-prompt story (35 s @ 24 fps), 8-step hybrid path, Audio Refine on, all cross-segment context links on. |

    | Minimax h3 Director - character replace example workflow 3x7s - elf vs giant orc.json | 3 × 7 s ref2va character replacement — your referenced character replaces the lead of the source action. |

    Each one opens routed to the right model path via the workflow's ImpactSwitchselect = 1 for the FL2VA/T2V-I2V path, = 2 for REF2VA, = 3 for the fast-video path. Nothing else needs wiring.

    The bundled ref2va_example_assets/headshot.png and charsheet.png are AI-generated placeholder characters, not real people — swap in your own.

    ---

    ## Things worth knowing

    - Do not load the standalone ComfyUI-H3-Motion-Context alongside this pack — Motion Context compatibility is already integrated.

    - Continuity improves cross-segment handoff but does not guarantee an invisible boundary every time. H3 can still introduce visual, motion, lighting or identity drift — that is what Re-ground, Latent Scale Lock and Color Re-anchor are for.

    - Clear VRAM Between Segments is the biggest non-output speed lever on multi-segment runs. Turn it OFF if your GPU fits the model resident; turn it ON when SAM3 is in use so SAM3 and the DiT never peak together.

    - Cache rules are precise and documented: resolution/megapixels, prompts, references, shot ranges and continuity invalidate; seed, steps, sampler, CFG, bitrate/CRF and the refine toggles do not.

    - Optional post-processing (NVIDIA RTX VSR / Deblur, Face Refine detectors, upscale models) degrades gracefully — if a stage can't run, the Director keeps the usable earlier result instead of discarding the generation.

    ---

    ## Credits

    Upstream: [j955229 / ComfyUI-MiniMax-H3-Motion-Director](https://github.com/j955229/ComfyUI-MiniMax-H3-Motion-Director)

    Model and tooling credits: MiniMax (H3), TenStrip (10Eros-Max), Kijai (experimental H3 quantisations and VAEs), sakamakismile (uncensored nvfp4 text encoder), SoX (audio room DSP).

    This fork: [The5toryofthe5ecret5tar5ystem / ComfyUI-MiniMax-H3-Motion-Director](https://github.com/The5toryofthe5ecret5tar5ystem/ComfyUI-MiniMax-H3-Motion-Director) — GPL-3.0. Issues and PRs welcome.

    ---

    <small>MiniMax H3 Motion Director is a ComfyUI custom node pack. Bring your own MiniMax H3 weights — none are redistributed here. Check the MiniMax H3 community licence before commercial use.</small>

    Description

    initial release

    FAQ

    Comments (26)

    jafdeth2030105Sep 13, 2026
    CivitAI

    Where to put the yolo8? Director cant find the postprocess and face process and preview

    Data5555
    Author
    Sep 13, 2026· 1 reaction

    This requires face_yolov8m.pt in ComfyUI/models/ultralytics/bbox/
    https://huggingface.co/Bingsu/adetailer/blob/main/face_yolov8m.pt

    For face refine's mask mode: SAMS model in ComfyUI/models/sams
    https://github.com/ultralytics/assets/releases/download/v8.4.0/sam2.1_b.pt

    ----------------------------------------------
    And the optional Ultralytics full package
    https://github.com/ultralytics/ultralytics
    # Windows portable

    python_embeded\python.exe -m pip install ultralytics

    # Linux/macOS

    python -m pip install ultralytics

    jafdeth2030105Sep 13, 2026· 1 reaction

    @Data5555 thanks a lot! it helps!

    ingriduterus513Sep 13, 2026· 4 reactions
    CivitAI

    that's nice. but could you add this Refmod to the Director? That would be the ultimate enhancement. https://civitai.red/models/2932888/minimax-h3-refmods-workflows-and-tutorial-reusable-identities-without-training

    Data5555
    Author
    Sep 13, 2026· 3 reactions

    I was actually just looking at that this morning! I would need to add in a way to have the director node accept conditioning which the original creator didn't allow. I'll dig into this more because it would be super cool!

    I think I can add in a conditioning input on the director to plug in the refmod nodes and have that hook into a global or segment reference just like an image, vid, or audio

    ingriduterus513Sep 13, 2026

    @Data5555 that would be awesome. Shouldn't be that hard to make. I was already thinking about asking Qwen VL to help me edit the related python files of the Director node to get it done. Also, what could be interesting is to implement the video joiner (which I haven't testet yet) to get it more seamless: https://civitai.red/models/2922601/minimax-h3-video-joiner-continue-in-latent-space

    Macrac89Sep 13, 2026

    @Data5555 Redmod would be a chef's kiss to this. I hope you can solve it! Fingers crossed! Well done with this one mate.

    Data5555
    Author
    Sep 14, 2026

    @ingriduterus513 testing a setup right now using a couple nodes. I'll have it in the github shortly and an example workflow.

    Right now I have it working with a refmod character I made with some settings and prompting allowing for using image 1 for clothing reference and that does great.

    Data5555
    Author
    Sep 14, 2026· 2 reactions

    I just updated the github with an updated director node that accepts refmod_conditioning along with a test workflow with a prompt I used with 1 refmod file and a single image 1 clothing reference in the director node.

    ingriduterus513Sep 14, 2026· 1 reaction

    @Data5555  It works! Thank you so much! I only had to change the sampler to er_sde, otherwise I got an error, but it works well!

    ingriduterus513Sep 14, 2026

    hmm but I have issues with the upscaler and face refiner pass. somehow they are ignored...

    The upscaling modes are not the best. It would be great, if there was an integration of the MMH3 Ultimate Upscale

    Data5555
    Author
    Sep 14, 2026· 1 reaction

    @ingriduterus513 I'll definitely check that out today! Upscaling and face refine were untouched from the original node. I'll see if the pipeline for those was even working in the first place and see if bbaudio-2025/Comfyui-MMH3-UltimateUpscale is integrateable as an alternative

    ingriduterus513Sep 14, 2026· 1 reaction

    @Data5555 Thank you so much, man. Really appreciate it.

    Data5555
    Author
    Sep 14, 2026· 1 reaction

    I threw extra logging in and so far it looks like the way the original director maker had it set up, the Spectrum Apply MiniMaxH3 node is interfering with post processing and setting Enabled to False on the node or disabling the node fixes it. I'm still digging into this to see why but I might have to add a quick allow external patch for refine into the node


    [WARNING] Global Refine skipped: the sampling model carries an external H3 attention/diffusion patch (diffusion_model wrapper "spectrum_minimax_h3" (/ComfyUI/custom_nodes/ComfyUI-Spectrum-MiniMax-H3.comfyui_spectrum_h3.external_patch_compat._diffusion_model_wrapper)).
    Refining through such a model has crashed at the CUDA level; keeping the first-pass result. Remove that node from the model chain, or set allow_refine_on_external_patch in the post-process config to run it anyway.

    Data5555
    Author
    Sep 15, 2026· 1 reaction

    Ok! Added a few things to get it working as well as added a Reuse Performance checkbox (off by default) onto the Postprocess tab that adds +1 vae render to each segment to allow caching so you can render the job without any post process and then do iterations on post process options as much as you like without having to re-render the base video segments.

    I got tiled refine in now as well and upscale methods of H3 Learned Latent with the minimax h3 latent model.

    Getting post processing to work while the Spectrum Apply Minimax H3 node is enable requires checking 2 items in the Second Sampling for "Pass Result Previews (extra VAE decode)" and "Refine with external attention patch". Or disable the spectrum apply and it will work without the slight speed boost.

    ingriduterus513Sep 15, 2026· 1 reaction

    @Data5555 Wow nice! I will test and report my experience! Thank you!

    ingriduterus513Sep 15, 2026· 1 reaction

    @Data5555 Yeah, seems to work now. But the learned upscaler does not help much to get 1080p videos with low vram - only the ultimate upscaler (I prefer temporal split instead of spatial split) gives that kind of freedom. But still a big progress for now!

    ingriduterus513Sep 15, 2026

    @Data5555 I also noticed, that the "Clear VRAM Between Segments" can not clear anything. I get a warning and in the upscaling process of the second video segment it does not progress when beginning the upscale pass. Somewhere in the python code seems to be still a reference to the model, which prevents the garbage collector to release space.

    "[WARNING] WARNING, memory leak with model MiniMaxH3. Please make sure it is not being referenced from somewhere."

    Data5555
    Author
    Sep 15, 2026· 1 reaction

    @ingriduterus513 I sicked qwen on it and there's a few possible things in the way the original node maker had it implemented could be interfering with the updated additions done. I pushed a small commit to reorder the cleanup and add partial failure isolation but I can't fully see the issues just yet so I have extra logging in for that process.

    - Reorder so cleanup happens immediately before sampling, not before latent construction, and drop the unload_models round trip when the model is needed again in the same segment.

    - Don't swallow partial failure run each cleanup step in its own so one raising step doesn't cancel the others.

    - Promote the anchored-model warning into the execution report, not just the log, so users see "VRAM could not be freed: held by <node>" instead of a silent no-op.

    ingriduterus513Sep 15, 2026

    @Data5555 still getting memory leaks somehow... And the upscaling does not upscale anymore at all, throwing out only these warnings until it says "prompt executed" without rendering anything.

    [WARNING] WARNING, memory leak with model MiniMaxH3. Please make sure it is not being referenced from somewhere.

    [WARNING] Global Refine failed; keeping first-pass result: name 'log' is not defined

    [INFO] Potential memory leak detected with model MiniMaxH3, doing a full garbage collect, for maximum performance avoid circular references in the model code.

    Data5555
    Author
    Sep 15, 2026· 1 reaction

    @ingriduterus513 it miiiiiight be this but this will take a bit. tracking it down closer but ComfyUI's cleanup_models_gc sees the ModelPatcher wrapper was GC'd while the raw torch module is still strongly referenced elsewhere, so unload_all_models() can't free it. That's why "Clear VRAM Between Segments" still leaves ~20 GB pinned and Segment 2's upscale stalls.

    Macrac89Sep 16, 2026

    @Data5555 can confirm that something is off on the upscaling, it stops working - it ignores post processing settings and just does the first pass. Not sure what triggers it to start skipping upscaling/refinement.

    Data5555
    Author
    Sep 16, 2026

    @Macrac89 which upscaling are you using? i'm going through all of them right now doing some heavy loads to test scaling. so far the new SeedVR2 i added is working great and RealESRGAN_x4 as well.

    I added a new verbose logging toggle onto the node exterior and i'm going through all of them to see where the disconnect is

    Macrac89Sep 16, 2026

    @Data5555 I was using the latent upscale with fp16 precision. Restarting comfy seems to clear the issue for a while.

    Data5555
    Author
    Sep 16, 2026

    @Macrac89 testing something right now and did a small commit to github. Might not help just yet what you are seeing but checking to see as these were very obvious and small changes.
    Found a couple weird out of order issues with H3 learned latent specifically and I added a "Keep upscaler resident (VRAM)" option.

    Keeps the upscaler loaded on the GPU between segments so it is not reloaded every time. It holds its VRAM for the rest of the session - leave this off unless you have headroom.

    ollymolly006887Sep 13, 2026· 2 reactions
    CivitAI

    Well done, master. I tried bunch of the previous Directors but each of them had its downsides - such as the inability to connect detailers and refiners, or to adjust chunk timing or no global prompt.
    This "Director" (though it could well be called a "Mega-Director") combines the strengths of all the previous ones while adding useful new features.

    Workflows
    MiniMax H3

    Details

    Downloads
    356
    Platform
    CivitAI
    Platform Status
    Available
    Created
    9/13/2026
    Updated
    9/20/2026
    Deleted
    -

    Files

    minimaxH3Motion_v16_3207354.json

    Mirrors

    minimaxH3Motion_v16_3207439.json

    Mirrors

    minimaxH3Motion_v170.zip

    Mirrors

    CivitAI (1 mirrors)