Repository navigation
Releases: j955229/ComfyUI-MiniMax-H3-Motion-Director
Release list
v1.2.0 — H3 Learned Latent Refine, Native Masks & Long-Chain Stability
MiniMax H3 Motion Director v1.2.0
H3 Learned Latent Upscaler
Global Refine 新增:
H3 Learned Latent
与传统:
decode → pixel upscale → encode → second sampling
不同,Learned Latent 路径直接对 MiniMax H3 的 24-channel video latent 进行空间放大,然后在最终分辨率继续 H3 二次采样。
主要特性:
-
直接集成于 Motion Director。
-
不需要额外安装
LBH-123-AI/Comfyui_Minimax_h3_latent_Upscaler自定义节点。 -
用户只需要提供兼容的 learned-latent checkpoint。
-
模型目录:
ComfyUI/models/latent_upscale_models -
支持:
.safetensors.pth.pt
-
根据 checkpoint state dict 自动识别:
- 2D + Temporal
- Full 3D
-
不提供多余的手动 2D / 3D architecture 选择。
-
支持:
- FP16
- BF16
- FP32
-
支持 CUDA / CPU。
-
保持 H3 latent 的 temporal length 不变。
-
自动处理 AV latent 分离与重新组合。
-
自动同步最终高分辨率 H3 conditioning / keyframes。
-
在 Learned Latent 模型推理前后执行专门的 VRAM 生命周期管理。
2D + Temporal checkpoint 使用统一空间缩放,因此不会任意改变宽高比。
Full 3D checkpoint 可以按照 Director 最终解析出的目标 H/W 进行精确空间放大,同时保持时间维度不变。
如果 checkpoint 缺失、不兼容或输出尺寸不符合要求,Global Refine 会明确报告失败并保留 First Pass Result,不会偷偷切换到 Lanczos 或其他 Pixel Upscaler。
原有 Global Refine Pixel 路径继续保留:
- Lanczos
- ComfyUI Upscale Model
- NVIDIA RTX VSR
RTX Deblur 属于 pixel-space 处理,因此当前版本不会允许 RTX Deblur 与 H3 Learned Latent Upscale 在同一 Global Refine 阶段混用。
MiniMax H3 Native Video / Audio Noise Masks
v1.2.0 开始正式保留和验证 MiniMax H3 原生 per-token video/audio latent noise masks。
Director 现在把:
latent["noise_mask"]
视为 H3 latent 状态的一部分,而不是可以在中间流程中丢弃的 metadata。
支持:
- video latent mask
- audio latent mask
- nested AV masks
- Global Refine mask preservation
- Learned Latent upscale mask remapping
- Audio Drive mask composition
当 video latent 空间分辨率发生变化时:
- Video mask 会按照新的 latent H/W 进行 nearest-neighbor remap。
- Temporal dimension 保持不变。
- Audio mask 保持不变。
- 不会用插值制造模糊的半锁定边界。
Audio Drive 需要添加自己的 audio mask 时,也不会覆盖与它无关的 video mask。
多段 Global Refine 修复 — Issue #17
修复第二段开始使用 Global Refine / Upscale 时可能出现:
- 第一段正常放大。
- 第二段及之后 Global Refine 失败。
- 后续片段回退成 First Pass 低分辨率。
- 最终拼接时低分辨率画面被居中放入高分辨率画布。
- 四周出现灰色背景。
根因是第二段以后已经带有 Visual Motion Context 的 conditioning,在放大后二采阶段又尝试向同一份 conditioning 再次注入 Motion Context。
现在的流程改为:
First-pass Motion Context
→ Upscale
→ Remove old generated Motion Context prefix
→ Preserve native H3 keyframes
→ Sync native keyframes to final resolution
→ Re-pin Motion Context at the new canvas
→ Second sampling
同时特别保护:
- I2V / FL2V native keyframes
- relocated H3 keyframes
- Source Bridge 5-frame endpoint anchors
- Motion Audio Context
Source Bridge 使用的特殊 motion_context_index 不会被误认为普通 Motion Context 删除。
该修复同时覆盖:
- Pixel Global Refine
- H3 Learned Latent Global Refine
长链 Audio Previous Context 稳定化 — Issue #18
之前生成音频的连续链主要是:
generated audio latent
→ next segment
→ new generated audio latent
→ next segment
→ ...
长时间递归传递隐藏 audio latent 状态可能逐段累积生成分布漂移。
Issue #18 报告的典型表现是连续约 8 段后:
- Dialogue 开始变得不自然。
- 出现 gibberish / hallucinated speech。
- 缩短对白只能略微改善。
- 新建项目后从之前的视频重新继续,音频质量又恢复。
v1.2.0 调整 Audio Previous Context 的优先路径:
Previous segment final exported waveform
→ Take exact tail
→ Audio VAE re-encode
→ Next segment Audio Context
也就是说,每个正常跨段边界都会优先从用户最终实际听到的 exported waveform 重新建立 Audio Context,而不是无限递归继承隐藏的 generated audio latent。
只有在 waveform 无法安全使用时,例如:
- 没有有效 waveform
- waveform 太短
- sample rate 无效
- Audio VAE 不可用
才继续使用原 audio latent 作为 fallback。
这项修改专门用于降低长链生成音频的递归 latent drift。
Visual Pin Renorm 仍然只负责 video latent,不会对 audio latent 做未经验证的统计尺度缩放。
此改动针对 Issue #18 已确认的 Director 侧递归 Audio Context 链路进行了修正;目前不将其描述为已经完成真实硬件环境下 8+ 段的完整长期实机验证。
更严格的 Segment Boundary
v1.2.0 为 H3 多段输出加入统一的严格可见帧边界契约。
Director 现在明确区分:
- Requested visible target frames
- Motion Context prefix
- H3 aligned generation frames
- Raw decoded frames
- Exported visible frames
最终每个片段必须满足:
exported_frames == requested_visible_frames
Motion Context 的前置帧不会再泄漏到最终输出。
H3 为满足 temporal alignment 而生成的多余 tail frames 也会在:
- cache
- export
- segment assembly
之前被明确裁除。
这样可以避免多段拼接时出现因为 H3 alignment surplus 而多出一两帧的情况。
精确 Audio / Video Trim
Audio 与 Video 现在使用同一套 authoritative segment boundary。
音频裁切按照目标视频帧数直接计算实际导出 duration,避免多段链中因为独立 rounding 不断累积 sample 偏差。
对于正常 H3 40 Hz audio grid rounding,只允许极小范围的尾部补齐。
如果音频明显短于目标长度,Director 会明确报错,而不是创建一大段静音尾巴并继续把错误结果传入下一段 Audio Context。
Seam Diagnostics
新增非破坏式 segment seam diagnostics。
Director 可以在相邻片段之间报告:
- Left / Right exported frame count
- Mean absolute RGB jump
- Luma jump
- Audio sample rate
- Audio sample count
- Audio duration
这些数据只用于诊断。
Director 不会因为检测到视觉差异较大,就自动删除边界一两帧或偷偷修改成品。
High-Resolution H3 Conditioning Sync
在 Global Refine 改变 latent canvas 后,H3 target conditioning 现在会同步到最终空间尺寸。
处理范围包括:
- Native H3 target keyframes
- Motion Context
- Source Bridge endpoint anchors
Reference media conditioning 不会被当成 target-canvas keyframe 随意 resize。
这样可以避免高分辨率二采阶段出现 PackedLayout / conditioning spatial mismatch。
Compatibility / 兼容性
现有 workflow 保持兼容。
原有 Pixel Global Refine 配置继续保持原有含义。
旧 workflow 中已经保存的:
latent_upscale_variant
会在配置标准化时被丢弃,因为现在 architecture 完全由 checkpoint 自动判断。
H3 Learned Latent Upscale 不引入第二套自定义节点依赖。
需要使用该功能时,只需要把兼容模型放入:
ComfyUI/models/latent_upscale_models
本版本没有加入:
- Draft Mode
- Approve / Reject
- Draft latent cache
- Before / After Draft comparison UI
- 自动 seam frame 删除
Upgrade Notes
升级后建议:
-
完整重启 ComfyUI。
-
对浏览器执行 Hard Refresh。
-
如果使用 H3 Learned Latent Upscale,将兼容 checkpoint 放入:
ComfyUI/models/latent_upscale_models -
在 Global Refine 中选择 H3 Learned Latent 后选择对应 checkpoint。
H3 Learned Latent Upscaler
Global Refine now includes a new:
H3 Learned Latent
upscale backend.
Instead of:
decode → pixel upscale → encode → second sampling
the learned-latent path spatially upscales the native MiniMax H3 24-channel video latent directly and continues H3 refinement at the final resolution.
Highlights:
-
Fully integrated into Motion Director.
-
No separate installation of
LBH-123-AI/Comfyui_Minimax_h3_latent_Upscaleris required. -
Only a compatible learned-latent checkpoint is required.
-
Model directory:
ComfyUI/models/latent_upscale_models -
Supported checkpoint formats:
.safetensors.pth.pt
-
Architecture is automatically detected from the checkpoint state dict:
- 2D + Temporal
- Full 3D
-
No manual 2D / 3D runtime selector.
-
FP16 / BF16 / FP32 support.
-
CUDA / CPU support.
-
Preserves H3 latent temporal length.
-
Handles AV latent separation and recombination.
-
Synchronizes final-resolution H3 conditioning and keyframes.
-
Uses dedicated VRAM cleanup around learned-latent inference.
2D + Temporal checkpoints use a uniform spatial scale and therefore cannot arbitrarily change aspect ratio.
Full 3D checkpoints can target the exact Director-resolved output H/W while preserving the temporal dimension.
Missing, incompatible, or invalid checkpoints fail explicitly. Global Refine keeps the First Pass Result and reports the error instead of silently switching to Lanczos or another pixel backend.
Existing pixel Global Refine methods remain available:
- Lanczos
- ComfyUI Upscale Model
- NVIDIA RTX VSR
RTX Deblur is a pixel-space operation and cannot currently be combined with H3 Learned Latent Upscale in the same Global Refine stage.
Native MiniMax H3 Video / Audio Noise Masks
v1.2.0 preserves and validates MiniMax H3 native per-token video/audio latent noise masks throughout Director sampling and refine paths.
Director now treats:
latent["noise_mask"]
as part of the H3 latent state rather than disposable metadata.
Supported behavior includes:
- video latent masks
- audio latent masks
- nested AV masks
- Global Refine mask preservation
- Learned Latent spatial mask remapping
- Audio Drive mask composition
When the video latent is spatially upscaled:
- the video mask is remapped to the new latent H/W using nearest-neighbor resizing;
- its temporal dimension is preserved;
- the audio mask remains unchanged;
- no blurred fractional lock boundaries are introduced by Director.
Audio Drive can compose its own audio mask without replacing an unrelated video mask.
Multi-Segment Global Refine Fix — Issue #17
Fixed a multi-segment Global Refine failure where:
- Segment 1 upscaled normally.
- Segment 2+ could fail during Global Refine.
- Later segments fell back to their low-resolution First Pass Result.
- Final assembly centered those smaller clips on the larger canvas.
- The unused surrounding canvas appeared gray.
The root cause was a second Motion Context injection into conditioning that already contained Motion Context keyframes.
The refined flow is now:
First-pass Motion Context
→ Upscale
→ Remove old generated Motion Context prefix
→ Preserve native H3 keyframes
→ Synchronize native keyframes to final resolution
→ Re-pin Motion Context
→ Second sampling
The fix preserves:
- native I2V / FL2V keyframes
- relocated H3 keyframes
- Source Bridge five-frame endpoint anchors
- Motion Audio Context behavior
Source Bridge anchors that reuse motion_context_index are explicitly protected and are not mistaken for normal Motion Context.
This correction applies to both:
- Pixel Global Refine
- H3 Learned Latent Global Refine
Long-Chain Audio Previous Context Stabilization — Issue #18
Previously, generated-audio continuation primarily formed a recursive chain:
generated audio latent
→ next segment
→ new generated audio latent
→ next segment
→ ...
Repeatedly feeding hidden generated audio latent state back into later generations can accumulate distribution drift over long chains....
v1.1.5 HotFix#1 — Mixed Mode UX, Face Refine Model Discovery & Frontend Cache Fixes
## v1.1.5 HotFix#1
本次 HotFix 主要修复 v1.1.5 发布后发现的 Mixed Mode 交互问题、Face Refine 模型目录识别问题,以及前端 ES Module 缓存导致更新后仍加载旧 UI 的问题。
### Mixed Mode 交互修复
- 移除片段卡片原有的「左移 / 右移」按钮。
- 新增 `⠿` 拖拽手柄,可直接拖动片段重新排序。
- 拖动过程中加入插入位置指示,能够明确看到片段将被移动到哪里。
- 拖到时间线左右边缘时支持自动横向滚动,方便处理较长的 Mixed 项目。
- 重新排序后继续保持当前选中的片段,不会因为移动片段而跳到错误的编辑对象。
- 重新排序后 Selective Run 的选择会跟随片段本身,而不是错误地跟随旧索引。
### Mixed 时间线状态修复
- 修复 Mixed 时间线重新绘制后横向滚动位置被重置的问题。
- 修复 Selective Run 明确「一个片段都不选择」后,保存 / 重载时又被自动恢复成默认选择的问题。
- 现在空的 Selective Run 选择会被正确视为用户的明确状态并完整保留。
### Face Refine 模型识别修复
Face Refine 现在会由 Motion Director 自己注册需要的 ComfyUI 模型目录,不再依赖其他自定义节点是否提前注册相同的 `folder_paths` category。
自动注册:
```text
ComfyUI/models/ultralytics/bbox
ComfyUI/models/ultralytics/segm其中:
face_yolov8m.pt
等人脸检测模型应放在:
ComfyUI/models/ultralytics/bbox
这修复了模型文件已经放在正确目录,但 Director 仍提示「找不到人脸模型」的问题。
前端缓存修复
修复 Mixed UI 更新后浏览器仍可能继续运行旧版 ES Module 的问题。
之前生产入口、Runtime Fix 与 Mixed Interaction 模块使用了不同或未更新的 ?boot= cache key,因此即使仓库中的代码已经更新,浏览器仍可能继续复用旧模块,表现为:
- 仍然显示旧的「左移 / 右移」按钮
- 没有新的拖拽手柄
- 新的 Selective Run 行为没有生效
本次 HotFix 已统一并更新 Mixed UI 的模块 cache key,确保新版本真正被重新加载。
回归测试
新增测试覆盖:
- Mixed 片段拖拽排序
- Selective Run 选择跟随片段 ID
- 空 Selective Run 状态保存 / 重载
- Mixed UI 前端 cache key 一致性
- Face Refine 模型目录注册与发现
更新说明
更新后建议:
- 完全重启 ComfyUI。
- 浏览器执行一次强制刷新(
Ctrl + F5)。
## v1.1.5 HotFix#1
This HotFix addresses several issues discovered after the v1.1.5 release, mainly affecting Mixed Mode interactions, Face Refine model discovery, and stale frontend ES Module caching.
### Mixed Mode Interaction Fixes
- Removed the old `Move Left / Move Right` buttons from segment cards.
- Added a `⠿` drag handle for direct segment reordering.
- Added visual insertion markers while dragging so the destination position is clear.
- Added horizontal auto-scroll when dragging near either edge of a long Mixed timeline.
- The currently edited segment now remains selected after reordering.
- Selective Run selections now follow the actual segment instead of incorrectly following its previous array index.
### Mixed Timeline State Fixes
- Fixed the horizontal Mixed timeline scroll position being reset after redraws.
- Fixed an explicit empty Selective Run selection being restored to a default selection after save/reload.
- An empty Selective Run selection is now preserved as an intentional user state.
### Face Refine Model Discovery Fix
Motion Director now registers the ComfyUI model folders required by Face Refine itself instead of depending on another custom node to register the same `folder_paths` categories first.
The following directories are registered automatically:
```text
ComfyUI/models/ultralytics/bbox
ComfyUI/models/ultralytics/segmFace detector models such as:
face_yolov8m.pt
should be placed in:
ComfyUI/models/ultralytics/bbox
This fixes cases where the detector model already existed in the correct folder but Motion Director still reported that no face detector model could be found.
Frontend Cache Fix
Fixed an issue where the browser could continue executing an older Mixed UI ES Module even after the repository had been updated.
Previously, the production timeline, runtime fix, and Mixed interaction modules used stale or inconsistent ?boot= cache keys. This could cause the old interface to remain active, including:
- old
Move Left / Move Rightcontrols - missing drag handles
- updated Selective Run behavior not taking effect
This HotFix updates and aligns the Mixed UI module cache keys so the new bundle is actually loaded.
Regression Coverage
Added regression tests for:
- Mixed segment drag reordering
- Selective Run selections following segment IDs
- empty Selective Run state across reloads
- Mixed UI cache-key consistency
- Face Refine model-folder registration and discovery
Update Notes
After updating:
- Fully restart ComfyUI.
- Perform one browser hard refresh (
Ctrl + F5).
v1.1.5 — Original Audio Drive & Reference Audio Editor
Highlights
v1.1.5 introduces Original Audio Drive for R2V / RV2V reference audio, together with a new timed reference-audio editor and several interaction fixes.
Original Audio Drive
Reference audio now has two clear roles:
- Normal Reference — use the uploaded audio as normal MiniMax H3 reference conditioning.
- Original Audio Drive — use the uploaded audio to drive the corresponding video performance while preserving the configured source audio interval in the final output.
Original Audio Drive does not simply ask H3 to recreate a similar voice.
For each configured drive interval, Motion Director:
- encodes the selected source audio into the H3 joint AV latent;
- locks the corresponding audio latent interval from denoising;
- continues generating the video normally;
- restores the original uploaded PCM samples into that interval of the final soundtrack;
- keeps H3-generated audio in non-driven portions of the video.
This makes Original Audio Drive suitable for dialogue, finished voice performances, music, sound effects, mixed soundtracks, precise timing, or any source audio that must remain unchanged in the exported video.
Timed Reference Audio
Original Audio Drive can now be positioned on a segment timeline instead of always occupying the complete segment.
Multiple drive clips can be arranged sequentially in the same segment.
Motion Director validates:
- overlapping drive intervals;
- audio that extends beyond the segment duration;
- incompatible sample rates between multiple exact-PCM drive clips;
- incompatible channel counts between multiple exact-PCM drive clips.
Reference Audio Editor
Uploaded reference audio now has an integrated editor with:
- waveform preview;
- non-destructive trimming;
- draggable left and right trim boundaries;
- dragging the entire selected range while preserving its duration;
- numeric trim start/end controls;
- live playback;
- vertical playback playhead;
- Undo / Redo;
- Reset;
- explicit Trim action;
- effective-duration display.
Trimming is metadata-based and does not modify the uploaded source file.
Timeline & UI Improvements
The audio drive timeline received several interaction fixes:
- horizontal dragging changes only the timeline position;
- audio rows keep a stable vertical position while clips move horizontally;
- dragging a clip no longer triggers the Director view to jump upward;
- timeline synchronization now uses the lighter update path instead of forcing a full node layout refresh.
The audio editor also no longer closes accidentally when a trim handle or selection is dragged outside the editor and the mouse button is released there.
A deliberate click on the backdrop still closes the editor normally.
Role Cleanup
The experimental Dialogue Drive role has been removed.
Testing showed that MiniMax H3's existing Normal Reference behavior already reproduces reference dialogue, voice identity and delivery very well when the intended dialogue is described correctly in the prompt.
The final reference-audio roles are therefore intentionally reduced to:
- Normal Reference
- Original Audio Drive
Legacy dialogue_drive state is normalized back to Normal Reference instead of continuing to expose a separate pseudo-drive behavior.
Compatibility
Original Audio Drive currently applies to R2V / RV2V reference audio.
When Original Audio Drive is active, H3 audio output remains in Generate mode so non-driven portions can still be generated normally while driven intervals are restored from the original PCM.
Upgrade Note
This release changes frontend JavaScript.
After updating:
- Restart ComfyUI completely.
- Hard-refresh the browser.
主要更新
v1.1.5 为 R2V / RV2V 参考音频加入了真正的 原音驱动,同时新增带时间轴的参考音频编辑器,并修复多项音频编辑交互问题。
原音驱动
参考音频现在明确分为两种用途:
- 普通参考 — 按 MiniMax H3 原本的方式,把上传音频作为参考条件。
- 原音驱动 — 使用上传音频驱动画面中的对应表演,并确保指定区间在最终视频中保留上传音频的原始声音。
原音驱动并不是要求 H3 “重新生成一条很像的声音”。
对于每一个原音驱动区间,Motion Director 会:
- 将选中的源音频编码进 H3 的联合音视频 latent;
- 锁定对应的 audio latent 区间,不让该区间参与 denoise 重生成;
- 视频部分继续正常生成;
- 输出时再把该区间恢复为上传音频的原始 PCM;
- 没有被驱动的时间范围继续保留 H3 正常生成的音频。
因此原音驱动适合:
- 对白成品;
- 已完成的角色配音;
- 音乐;
- 音效;
- 已经混合好的完整音轨;
- 需要严格保持时间点的声音;
- 任何不希望 H3 重新解释或重新生成的源音频。
带时间轴的参考音频
原音驱动不再只能覆盖整个片段。
现在可以把音频块放到片段时间轴上的指定位置,并支持在同一个片段中顺序安排多条驱动音频。
Motion Director 会检查:
- 驱动音频之间是否发生重叠;
- 音频是否超出当前片段时长;
- 多条精确 PCM 驱动音频的采样率是否一致;
- 多条精确 PCM 驱动音频的声道数是否一致。
参考音频编辑器
上传的参考音频现在拥有完整的内置编辑器,包括:
- 波形预览;
- 非破坏式裁切;
- 拖动左侧边界调整起点;
- 拖动右侧边界调整终点;
- 直接拖动整个绿色选区左右移动,并保持选区长度不变;
- 手动输入裁切开始 / 结束时间;
- 音频播放;
- 跟随当前播放时间移动的垂直播放指针;
- 上一步 / 下一步;
- 重置;
- 独立的 裁切 按钮;
- 有效音频长度显示。
所有裁切都是非破坏式的,只保存裁切范围,不会修改上传的原始音频文件。
时间轴与 UI 修复
音频驱动时间轴修复了多项交互问题:
- 横向拖动现在只改变音频的时间位置;
- 音频块左右移动时不会再交换上下位置;
- 拖动音频块并松开后,Director 页面不会再自动向上跳;
- 时间轴同步改为轻量更新,不再因为普通拖动触发完整节点布局刷新。
音频编辑器也修复了一个关闭问题:
从裁切边界或绿色选区内部开始拖动,即使把鼠标移动到编辑器外面再松开,也不会再导致编辑器意外关闭。
直接点击编辑器外部空白区域仍然可以正常关闭编辑器。
音频角色精简
实验性的 对白驱动 已删除。
实际测试表明,只要 Prompt 中正确描述需要说出的对白,MiniMax H3 原本的普通参考就已经能够很好地复现:
- 参考音色;
- 对白内容;
- 语气;
- 节奏;
- 表演方式。
因此最终只保留两个真正有明确区别的音频用途:
- 普通参考
- 原音驱动
旧工作流中如果存在 dialogue_drive 状态,会自动退回普通参考,不再继续暴露一个与普通参考高度重复的独立模式。
兼容性
原音驱动目前用于 R2V / RV2V 的参考音频。
启用原音驱动时,H3 的音频输出仍保持 Generate,这样没有被驱动的区间仍然可以正常生成环境音、声音与其他音频,而指定的驱动区间最终恢复为上传的原始 PCM。
更新后注意
本版本修改了前端 JavaScript。
更新节点后请:
- 完整重启 ComfyUI。
- 对浏览器执行 Hard Refresh。
v1.1.4 — Global Refine Overhaul: Multi-Pass Refine, RTX Deblur Pipeline & Per-Pass Results
v1.1.4 是一次针对 Global Refine 整条后处理 / 二次采样管线 的完整升级。
本版本不仅加入 Multi-Pass Refine,而是重新整理了:
- Second Sampling
- Refine Model
- Multi-Pass Refine
- 每轮独立 Denoise / Steps
- 每轮 Seed
- First Pass / 每轮 Pass / Final 结果预览
- NVIDIA RTX Deblur
- Upscale
- Global Refine 执行顺序
- Global Refine Progress
- Director Report
- Report 复制与尺寸调整
- 缓存身份
- 动态 UI 状态同步
Global Refine 现在不再只是“再采一次”,而是一条可以独立组合、逐轮调节、逐轮观察、逐轮分析的完整精修管线。
✨ Global Refine 执行管线重构
Global Refine 现在由三个可以独立控制的阶段组成:
- NVIDIA RTX Deblur
- Upscale
- Second Sampling
三个阶段不再互相强制绑定。
现在可以自由组合:
Deblur only
Upscale only
Deblur + Upscale
Second Sampling only
Deblur + Second Sampling
Upscale + Second Sampling
Deblur + Upscale + Second Sampling
如果三个子阶段全部关闭,即使 Global Refine 主开关开启,也会成为真正的 No-op:
First Pass
→ Final
不会进行没有意义的 Decode → Encode。
🎞️ Second Sampling 独立开关
Second Sampling 现在拥有自己的:
ON / OFF
因此 Global Refine 不再等于“必须二采”。
例如可以使用:
First Pass
↓
RTX Deblur
↓
Upscale
↓
Final
完全跳过第二次 H3 Sampling。
也可以使用完整流程:
First Pass
↓
RTX Deblur
↓
Upscale
↓
Second Sampling
↓
Final
🧠 Refine Model — 二采独立模型
Second Sampling 现在可以使用与 First Pass 不同的 MiniMax H3 diffusion model。
不增加外部 MODEL 接口
Refine Model 不是额外的 ComfyUI MODEL 插口。
模型直接在 Director 的 Second Sampling UI 中通过下拉选单选择。
Director 会读取:
ComfyUI/models/diffusion_models/
中的模型并显示:
Refine Model
├─ Follow First Pass
├─ minimax_h3_xxx.safetensors
├─ minimax_h3_xxx_fp8.safetensors
└─ ...
🔄 Follow First Pass
选择:
Follow First Pass
时,Second Sampling 会继续使用 Director 当前 First Pass 的 MODEL。
因此 First Pass 当前 MODEL 上已经存在的:
- LoRA
- ModelPatcher
- Attention Patch
- 其他模型级修改
都会继续跟随原 MODEL。
🧼 独立 Clean H3 Refine
如果在 Refine Model 中选择具体模型文件:
First Pass
Fast H3 / Acceleration LoRA
↓
Second Sampling
Clean H3
Director 会内部独立加载该模型进行 Refine。
独立加载的 Refine Model不会自动复制 First Pass MODEL 上的 LoRA patch。
这使“一采追求速度、二采追求质量”的工作流可以直接在 Director 内完成。
✅ Refine Model 类型验证
内部加载 Refine Model 后,Director 会验证模型类型。
如果选择的 diffusion model 不是:
MiniMax H3
会报告错误,而不是继续用错误模型进行 Second Sampling。
🔁 Multi-Pass Refine
Second Sampling 现在支持连续多轮采样。
新增:
Passes
范围:
1 – 9999
例如:
Passes = 3
执行顺序:
First Pass
↓
RTX Deblur
↓
Upscale
↓
Refine Pass 1
↓
Refine Pass 2
↓
Refine Pass 3
↓
Final
每一轮都会使用上一轮产生的 latent 继续 Refine:
First Pass latent
→ Pass 1 latent
→ Pass 2 latent
→ Pass 3 latent
而不是每一轮都从 First Pass 重新开始。
🔂 Upscale 只执行一次
Multi-Pass 不会导致重复 Upscale。
即使:
Passes = 10
实际仍然是:
Upscale
↓
Pass 1
↓
Pass 2
↓
...
↓
Pass 10
而不是:
Upscale
→ Pass 1
→ Upscale
→ Pass 2
→ ...
🔂 RTX Deblur 只执行一次
RTX Deblur 同样只会在进入采样循环之前运行一次:
RTX Deblur
↓
Upscale
↓
Pass 1
↓
Pass 2
↓
Pass 3
不会因为 Multi-Pass 而重复 Deblur。
🎚️ 每轮独立 Denoise
Multi-Pass 不再要求所有 Pass 使用相同 Denoise。
Denoise 现在支持逗号分隔的 Pass Schedule。
例如:
Passes
3
Denoise
0.25,0.15,0.1
对应:
Pass 1 → Denoise 0.25
Pass 2 → Denoise 0.15
Pass 3 → Denoise 0.10
可以让后续 Pass 逐渐减弱,避免连续使用相同 Denoise 导致过度重写。
🪜 每轮独立 Steps
Steps 同样支持 Pass Schedule。
例如:
Passes
3
Steps
8,4,2
对应:
Pass 1 → 8 Steps
Pass 2 → 4 Steps
Pass 3 → 2 Steps
因此可以组合成:
Pass 1 → D0.25 / 8 Steps
Pass 2 → D0.15 / 4 Steps
Pass 3 → D0.10 / 2 Steps
适合让精修强度逐轮收敛。
📝 Pass Schedule 输入规则
单值模式
如果只填写一个数值:
Passes = 3
Denoise
0.2
Steps
8
代表所有 Pass 共用:
Pass 1 → D0.2 / 8 Steps
Pass 2 → D0.2 / 8 Steps
Pass 3 → D0.2 / 8 Steps
因此旧工作流原本的单值设置仍然兼容。
多值模式
多个值使用逗号分隔:
Denoise
0.25,0.15,0.1
Steps
8,4,2
从左到右依次对应:
Pass 1
Pass 2
Pass 3
支持中英文逗号
以下两种格式都支持:
0.25,0.15,0.1
以及:
0.25,0.15,0.1
Director 会统一解析。
严格数量验证
假设:
Passes = 3
以下输入合法:
0.25
单值代表全部 Pass 共用。
以下也合法:
0.25,0.15,0.1
刚好对应三轮。
但:
0.25,0.15
会被判定为配置错误。
Director 不会擅自:
- 自动补最后一个值
- 重复最后一个值
- 截掉多余值
- 猜测用户意图
必须是:
1 个值
或:
刚好等于 Passes 数量
数值范围验证
Schedule 中的每一个数值都会分别检查。
Denoise 必须位于有效范围。
Steps 必须是合法整数。
无效字符、空值、非法数字以及超出范围的输入不会被静默接受。
Steps = 0 仍支持 Auto
原本的:
Steps = 0
Auto 行为继续保留。
例如:
Steps
8,4,0
第三轮可以继续使用 Auto Steps 逻辑。
💡 输入框内 Pass Schedule 提示
Denoise 和 Steps 改为适合 Schedule 的文字输入框。
为了不增加额外 UI 行数,填写方法直接通过淡色 placeholder 显示在输入框内。
中文界面:
Denoise
[ 例:0.25,0.15,0.1;单一数值应用全部 Pass ]
Steps
[ 例:8,4,2;单一数值应用全部 Pass ]
英文界面:
Denoise
[ e.g. 0.25,0.15,0.1; one value applies to all passes ]
Steps
[ e.g. 8,4,2; one value applies to all passes ]
placeholder 会随 Director UI 语言同步切换。
🎲 Multi-Pass Seed
Multi-Pass 会为每一轮计算实际 Seed。
Inherit
选择:
Keep original Seed
时:
Pass 1 → original Seed
Pass 2 → original Seed
Pass 3 → original Seed
每一轮保持同一个 Seed。
Offset
选择:
Use Seed offset
时,每一轮会根据 Pass Index 继续产生对应的 Offset Seed。
因此每轮的实际 Seed 都可以在 Report 中确认。
👁️ First Pass / 每轮 Pass 独立结果预览
Multi-Pass 的每一轮结果现在都可以直接查看。
不新增第二套播放器,也不新增 Results 页面。
直接复用 Director 现有:
Results → Segment
播放器。
Result 下拉选单
运行 Multi-Pass 后,Segment Selector 旁边会出现:
Result
例如:
Segment
[S1 ▼]
Result
[Final ▼]
如果:
Passes = 3
可以选择:
First Pass
Pass 1
Pass 2
Pass 3
Final
First Pass
显示 Global Refine 之前的原始 H3 第一阶段生成结果。
用于作为 Refine 前的基准。
Pass 1 / Pass 2 / Pass N
每轮 H3 Refine 完成后都会保存独立的 Result Preview。
可以直接在同一个播放器里切换比较:
First Pass
vs
Pass 1
vs
Pass 2
vs
Pass 3
vs
Final
方便判断:
- 哪一轮真正改善画面
- 哪一轮改善开始趋缓
- 哪一轮开始过度处理
- 哪一轮开始改变动作
- 哪一轮开始造成纹理躁动
- 不同 Denoise / Steps Schedule 的真实影响
Final
Final 仍代表这个 Segment 真正进入后续流程的最终结果。
中间 Pass 只是结果预览,不会改变最终执行逻辑。
🔗 Motion Context 感知的 Pass Preview
Per-Pass Preview 会识别当前 Segment 的 Motion Context 前缀。
如果 Segment 内部因为 Motion Context 包含额外 Context Frames,Preview 会计算真正可见的目标区段,只显示用户实际 Segment 的画面。
避免把内部用于连续性的:
Context Prefix
错误地显示成 Segment Result 的一部分。
🏷️ Result Variant 元数据
Director 的 Preview Event 现在增加:
result_variant
pass_index
pass_count
用于明确识别:
First Pass
Pass 1
Pass 2
...
Final
避免不同类型的 Segment Preview 互相覆盖。
🧭 当前 Segment Progress Context
Director Progress 系统现在会保存当前执行线程的 Segment Progress Context。
这让内部 Refine Preview 可以准确知道:
- 当前 Director node
- 当前 Timeline Segment
- 当前 Segment 的目标帧数
- 当前执行阶段
从而把 Refine Pass Preview 正确关联回 Results UI 中对应的 Segment。
🧹 新一轮运行自动清理旧 Pass Preview
当 Director 开始新的 Run 时:
First Pass / Pass N / Final
的上一轮临时 Result Store 会被清除。
不会把上一次生成留下的 Pass 结果错误显示到新的运行中。
🔀 Segment 切换同步 Result
Result Selector 会跟随当前 Segment。
例如:
S1 → Pass 1 / Pass 2 / Final
S2 → First Pass / Pass 1 / Final
每个 Segment 保存自己的 Result Variant 状态。
切换 Segment 后会自动切换到对应 Segment 的结果集合。
🗂️ Results Tab 状态同步
Result Selector 只在适当的:
Segment
Results Tab 中显示。
切换到:
Multi Segment
Final Result
时不会保留一个无意义的 Pass Selector。
返回 Segment 后会恢复对应状态。
🧹 RTX Deblur Pipeline 重构
v1.1.4 对现有 NVIDIA RTX Deblur 的处理位置和强度控制进行了重新设计。
💪 RTX Deblur Strength 0–3
新增:
Strength
范围:
0.00 – 3.00
Deblur 不再只能接受 NVIDIA 原始输出强度。
最终结果按 residual 强度应用:
Original + (Deblurred - Original) × Strength
因此:
Strength = 0
→ 原图
Strength = 1
→ NVIDIA Deblur 原始效果
Strength = 2
→ 2× Deblur residual
Strength = 3
→ 3× Deblur residual
最终像素会限制在合法图像范围内。
📊 RTX Deblur 实际变化诊断
Deblur 现在会测量处理前后实际产生的像素变化。
新增:
Mean Delta
P95 Delta
Max Delta
例如:
Mean Delta: 0.017912
P95 Delta: 0.068604
Max Delta: 0.735200
可以判断:
- NVIDIA Deblur 是否真的修改了画面
- Strength 是否产生实际影响
- Deblur 整体修改幅度
- 少数高变化区域的修改程度
不再只能从:
SUCCESS
猜测处理是否真的有效。
🔀 Deblur 移到 Upscale / Second Sampling 之前
RTX Deblur 不再作为最终 RGB 成片最后处理。
新的 Global Refine 顺序是:
First H3 Sampling
↓
Decode
↓
RTX Deblur
↓
Upscale
↓
VAE Encode
↓
Second Sampling
↓
Final Decode
即:
Deblur
→ Upscale
→ H3 Refine
这样 Deblur 产生的细节变化可以继续进入:
- Upscale
- VAE Encode
- H3 Second Sampling
而不是等所有生成结束后才修改最终 RGB。
🚫 防止 RTX Deblur 重复执行
为了兼容原本 Director 的最终 Deblur 调用路径,旧 final-stage 调用仍然保留,但已经变成:
PRESAMPLE
标记。
实际 Deblur 只在:
Global Refine presample
执行一次。
因此不会出现:
Deblur
→ Upscale
→ Refine
→ Final Decode
→ Deblur 再跑一次
避免重复 Deblur / 重复锐化。
🎛️ RTX Deblur 独立子开关
RTX Deblur 保持 Global Refine 下独立子阶段。
Global Refine 负责总开关。
RTX Deblur 自己负责是否执行。
例如:
Global Refine: ON
RTX Deblur: ON
Second Sampling: OFF
Upscale: OFF
可以只执行 Deblur。
Global Refine 关闭时,Deblur 控件会进入不可执行状态,但不会破坏保存的子开关配置。
🎚️ RTX Deblur Quality
继续支持:
Low
Medium
High
Ultra
并与 Strength 分开控制:
Quality
Strength
Quality 负责 NVIDIA VFX 模式。
Strength 负责 Deblur residual 的最终应用程度。
...
v1.1.3 — Stability Fixes & NVIDIA RTX Deblur
v1.1.3
This release focuses on frontend stability, mode-switching state fixes, and the complete integration of NVIDIA RTX Deblur into Motion Director.
Fixes
-
Fixed an issue where the NVIDIA RTX Deblur UI could cause the ComfyUI frontend to freeze, remain stuck on loading, or display a blank page.
-
Fixed stale Run Selection state after switching generation modes, which could trigger:
Motion Director internal run-selection state mismatch. -
Fixed an issue where switching from Mixed Mode back to T2V / I2V and other modes could incorrectly leave the "Selected Split Point" UI visible or keep the "Delete Split Point" action active.
-
Fixed Mixed UI frontend module cache invalidation so updated frontend modules are loaded correctly.
-
Fixed the unified Director execution path not actually running NVIDIA RTX Deblur.
-
Fixed missing NVIDIA RTX Deblur information in the execution Report even when Deblur was enabled.
-
Fixed the relationship between Global Refine and NVIDIA RTX Deblur in both the UI and execution pipeline.
NVIDIA RTX Deblur
NVIDIA RTX Deblur is now fully integrated into the Global Refine pipeline.
Supported controls:
- ON / OFF
- Quality:
- Low
- Medium
- High
- Ultra
- Processes frames at the current output resolution without additional upscaling.
- Deblurred frames are now actually applied to the final RGB output.
- If NVIDIA VFX Runtime is unavailable or Deblur fails, Motion Director automatically preserves the pre-Deblur result.
- The execution Report now includes:
- Enabled
- Quality
- Frames
- Resolution
- Status
- Timing
- Error / Fallback information when applicable
Global Refine
NVIDIA RTX Deblur is now treated as a child stage of Global Refine.
Behavior:
- Global Refine OFF → NVIDIA RTX Deblur will not run.
- Global Refine ON + RTX Deblur ON → RTX Deblur will run.
- The RTX Deblur sub-setting can remain saved while Global Refine is disabled, but it will not be executed.
- Output UI labels previously shown as "Upscale" for the Global Refine result stage are now consistently displayed as "Global Refine".
Progress
NVIDIA RTX Deblur is now integrated into the Director progress system.
While Deblur is running, the current stage is displayed as:
NVIDIA RTX Deblur
The stage progress bar updates according to processed frames, for example:
NVIDIA RTX Deblur · Frame 62/124
After Deblur completes, Director now correctly continues to the final completion stage and finishes the progress state at 100%.
Compatibility
- Existing Mixed Mode workflows remain supported.
- Existing Run Selection behavior remains supported.
- Existing generation modes remain compatible with the updated execution path.
Not Included Yet
The following RTX Deblur extensions are not included in v1.1.3 and may be evaluated for future releases:
- Deblur Blend / Strength control
- Auto Deblur
- Adaptive Deblur strength
- Local Deblur
- Motion-aware Deblur
v1.1.3
本版本主要集中于前端稳定性、模式切换状态修复,以及 NVIDIA RTX Deblur 的完整接入。
修复
- 修复 NVIDIA RTX Deblur UI 在部分情况下导致 ComfyUI 前端白屏、持续加载或卡死的问题。
- 修复「选择运行」在切换生成模式后残留旧状态,导致:
Motion Director internal run-selection state mismatch. - 修复从 Mixed 模式切回 T2V / I2V 等模式后,错误显示「已选中分割点」及「删除分割点」状态的问题。
- 修复 Mixed UI 前端模块缓存未正确失效的问题,更新后的前端代码现在能够正确加载。
- 修复统一 Director 执行路径没有真正执行 NVIDIA RTX Deblur 的问题。
- 修复 NVIDIA RTX Deblur 已开启但 Report 中没有对应执行信息的问题。
- 修复 Global Refine 与 NVIDIA RTX Deblur 的 UI / 执行状态关系。
NVIDIA RTX Deblur
NVIDIA RTX Deblur 现已完整接入 Global Refine 管线。
支持:
- ON / OFF
- Quality:
- Low
- Medium
- High
- Ultra
- 保持原始输出分辨率,不进行额外放大。
- Deblur 结果会真正应用到最终 RGB 输出。
- Deblur 失败或 NVIDIA VFX Runtime 不可用时,会自动保留 Deblur 前的结果。
- Report 会显示:
- Enabled
- Quality
- Frames
- Resolution
- Status
- Timing
- Error / Fallback(如有)
Global Refine
NVIDIA RTX Deblur 现在属于 Global Refine 的子阶段。
因此:
- Global Refine OFF → NVIDIA RTX Deblur 不执行。
- Global Refine ON + RTX Deblur ON → 才会执行 Deblur。
- RTX Deblur 的设置值可以保留,但 Global Refine 关闭时不会生效。
- 输出页原本显示为「放大」的 Global Refine 结果区域统一改为「全局精修 / Global Refine」。
Progress
NVIDIA RTX Deblur 现在接入 Director 的运行进度系统。
运行时会显示独立阶段:
NVIDIA RTX Deblur
并按照已处理帧数实时更新当前阶段进度,例如:
NVIDIA RTX Deblur · Frame 62/124
Deblur 完成后,Director 会正常进入最终完成状态并将进度收尾至 100%。
其他
- 保留原有 Mixed Mode、Run Selection 与各生成模式的工作流兼容性。
- 本版本没有加入 RTX Deblur Blend、Auto Deblur、局部 Deblur 或 Motion-aware Deblur;这些功能留待后续版本评估。
v1.1.2 — NVIDIA RTX Deblur & Mixed Mode Run Selection Fix
v1.1.2
This release adds native NVIDIA RTX Deblur support and fixes a Mixed Mode regression affecting existing workflows after upgrading to v1.1.1.
NVIDIA RTX Deblur
- Added native NVIDIA RTX Deblur as a final RGB post-processing stage.
- Added RTX Deblur controls directly below the NVIDIA RTX upscale controls.
- Added four quality levels:
- Low
- Medium
- High
- Ultra
- Deblur runs at the current output resolution without changing frame dimensions.
- Added dedicated RTX Deblur execution progress.
- Added RTX Deblur timing and status information to the Director Report.
- Director completion now waits for the final post-processing stage to finish.
- If the NVIDIA VFX runtime is unavailable or Deblur fails, Motion Director safely keeps the pre-Deblur frames instead of failing the entire generation.
Mixed Mode Run Selection Fix
Fixed Issue #8:
Motion Director internal run-selection state mismatch
Existing Mixed Mode workflows saved before v1.1.2 could fail at queue time when persisted Run Selection state was enabled.
The problem was caused by the frontend consistency check reading Run Selection state from the legacy editor.timeline, while Mixed Mode stores its active state in editor.mixedTimeline.
This could result in a false mismatch such as:
editor.timeline -> false / []
editor.mixedTimeline -> true / [0, 1]
serialized timeline -> true / [0, 1]
The Run Selection consistency check now:
Uses editor.mixedTimeline when Mixed Mode is active.
Continues using editor.timeline for normal generation modes.
Correctly accepts persisted Run Selection state from existing Mixed workflows.
No longer requires users to manually toggle Run Selection after loading an older workflow.
Regression Coverage
Added a regression test reproducing the persisted Mixed Mode Run Selection mismatch.
Added coverage ensuring normal timeline modes continue using the original state path.
Integrated the new Run Selection regression test into Mixed Mode Browser CI.
Compatibility
Existing workflows remain supported.
Users affected by Issue #8 can update to v1.1.2 and load their existing Mixed Mode workflows normally without applying the previous console workaround.
v1.1.1 — Global Refine, Face Refine & Progress Improvements
v1.1.1
This release focuses on post-processing quality, usability, diagnostics, and execution progress.
Global Refine
- Simplified and reorganized Global Refine controls.
- Improved NVIDIA RTX Video Super Resolution integration.
- RTX VSR now uses the high-bitrate quality variants.
- Added clearer VSR quality selection.
- Added source resolution, target resolution, and upscale ratio to the Director Report.
- Added detailed timing for VSR upscale, VAE encode/decode, and second-pass H3 sampling.
Face Refine
- Redesigned and simplified the Face Refine UI.
- Retuned default parameters for more stable face tracking and refinement.
- Improved adaptive denoise behavior for different face sizes.
- Face Refine now follows the main H3 sampling step count instead of using a fixed internal value.
- Improved crop smoothing and adaptive canvas sizing.
- Improved stitching, feathering, and mask behavior.
- Feather width is now handled in source-image pixels for more consistent blending.
- Added clearer face detection statistics and refinement diagnostics to the Director Report.
- Added detailed timing for detection/tracking, sampling, and stitching.
Progress & Diagnostics
- Progress is now based on actual execution stages instead of coarse fixed percentages.
- H3 sampling progress updates on every real sampling step.
- Global Refine and Face Refine now report more accurate progress.
- Added elapsed time and current-stage elapsed time to the Director UI.
- Added a new
[Timing]section to the Director Report. - Reports now include per-segment H3 sampling, Global Refine, AV decode, Face Refine, assembly, pipeline, and auto-save timing.
Fixes
- Fixed stale frontend post-processing modules being reused after updates.
- Improved post-processing configuration migration for existing workflows.
- Added regression tests for post-processing, timing, and progress behavior.
Notes
Existing workflows remain supported. Some older post-processing defaults are automatically migrated to the new recommended values when loaded.
v1.1.0 — Mixed Mode
v1.1.0 — Mixed Mode
This release adds native Mixed Mode to MiniMax H3 Motion Director.
Mixed Mode allows different generation methods to be combined inside the same Director timeline, segment by segment, instead of forcing the entire project to use one task type.
Highlights
- Added native Mixed Mode
- Per-segment generation modes:
T2VI2VFL2VR2VSource Video
Source Videoautomatically dispatches to:V2Vwhen no Identity Pictures are providedRV2Vwhen Identity Pictures are provided
- Added Segment Result support
- Reuse the last frame of an earlier segment
- Reuse a specific frame index from an earlier segment
- Use Segment Result as I2V Start Frame or FL2V First/Last Frame
- Added per-boundary continuity controls directly between segment cards
- Visual continuity
- Audio continuity
- Mixed continuity now works together with the main-node global masters:
- Motion Context
- Context Frames
- Latent Scale Lock
- Continue Generated Audio
- Color Re-anchor
- Added Mixed Material Library integration
- Added Mixed Selective Run dependency handling
- Added Mixed runtime cache and Segment Result dependency reuse
- Added Source Video range selection
Start secEnd sec- The selected Source Range determines the segment duration
- Mixed output now uses the normal:
- Aspect Ratio
- Megapixels
- FPS
- Added Results multi-segment range selection
- Example:
1-2,1-3,2-4,3-4 - Preview and export both follow the selected range
- Example:
- Added workflow-load repair for persisted Director group-widget corruption
- Improved frontend cache/version handling for Director UI updates
- Updated English and Simplified Chinese README documentation
Mixed Mode example
S1 T2V
S2 Source Video + Identity -> RV2V
S3 I2V + Segment Result
S4 FL2V
S5 R2V
v1.0.3 — Seed Cache Reuse Fix
MiniMax H3 Motion Director 1.0.3 — Seed Cache Reuse Fix
Maintenance release fixing a regression in persistent cache identity handling.
Fixed
- Fixed Issue #4 cache invalidation behavior when changing or randomizing the seed.
- Changing the current generation seed no longer invalidates previously generated Segment Cache, Motion Context cache, or AV latent handoff cache.
- Restores the intended selective-regeneration behavior:
- previously generated unselected segments remain reusable;
- selected segments can be regenerated with a new/random seed;
- upstream cached results are not discarded solely because the current seed changed.
- Generation parameters that genuinely affect cache compatibility, such as CFG, sampling settings, prompts, references, and other generation dependencies, continue to invalidate stale caches normally.
- Added regression tests to prevent seed from accidentally becoming part of the persistent producer identity again.
Subgraph / Component seed controls
Motion Director continues to use ComfyUI's standard control_after_generate seed mechanism.
ComfyUI Frontend currently has an upstream Subgraph/Component issue where control_after_generate may be missing or fail to work after a node is converted to a Subgraph. This also affects native nodes such as KSampler and is not caused by Motion Director's sampling backend.
No custom seed-randomization workaround was added, avoiding double-randomization or mismatches between the displayed seed and the seed actually used for sampling.
v1.0.2 — Windows Subgraph Cache Fix
MiniMax H3 Motion Director 1.0.2 — Windows Subgraph Cache Fix
Maintenance release fixing cache failures on Windows when Motion Director is used inside a ComfyUI Subgraph.
Fixed Fixed Issue #3: [WinError 123] when creating cache directories for nodes inside a Subgraph. ComfyUI can assign Subgraph nodes compound IDs such as 105:815. The : character is invalid in Windows directory names, while Motion Director previously used the node ID directly as the cache folder name. Compound node IDs are now converted to filesystem-safe cache directory names: 105:815 → 105_815 nested IDs such as 12:105:815 → 12_105_815 Applied the fix consistently to both physical cache locations: minimax_seg_cache minimax_motion_context_cache Regular node IDs remain unchanged. Added regression tests for regular, compound, and nested Subgraph node IDs.
No generation, Motion Context, or cache semantics were otherwise changed.