前言
在 AI 漫剧本地部署全链路生产中,分镜剧本生成、静态原画渲染、原画动态化 是三大核心环节。很多方案使用独立大模型做剧本、单独图像模型生成分镜,模型之间风格割裂,增加角色漂移概率。本文采用MiniMax-H3完成漫剧剧本解析、分镜提示词批量生成,再接入 Wan‑Animate 做静态原画动作迁移,基于 ComfyUI 源码搭建完整本地 AI 漫剧流水线。
整套流程全部离线本地部署,不依赖云端 API。针对 8GB 消费级 NVIDIA 显卡做显存分片、量化加载、串行任务调度。下文记录环境部署、模型联动配置、工作流节点参数、Python 批量调度脚本、视频拼接方案与大量工程踩坑记录,所有命令代码可直接复制复用。
说明:本文仅为技术研究记录,模型权重请从官方开源仓库获取,使用前阅读对应开源协议,商用务必完成授权核验。
具体详细教程可以看这个: MiniMax-H3 一键整合包技术文档:8G 显存运行 AI 漫剧制作 ------ 角色替换 / 动作迁移 / 文图生视频部署与调参指南-阿里云开发者社区
目录
- 整体链路架构与模型分工
- 硬件基线与磁盘环境约束
- ComfyUI 源码部署与依赖环境安装
- 工程目录结构与模型权重存放规范
- 8G 显存启动脚本、环境变量配置
- MiniMax-H3 + Wan‑Animate 联动工作流节点参数调优
- Python 脚本:MiniMax-H3 批量生分镜 + 原画动作迁移
- 分段生成 + FFmpeg 视频拼接完整指令
- 实测高频问题与定位修复
- 性能表现与客观技术局限
- 总结
1 整体链路架构与模型分工
整套本地 AI 漫剧流水线分为两大模块,模型分工明确:
- MiniMax-H3:接收原始故事文案,自动拆分镜头,输出结构化 JSON,包含每段镜头画面提示词、角色描述、镜头运动、台词;输出内容直接喂给图像生成节点,产出统一画风的漫剧静态原画。
- Wan‑Animate:读取 MiniMax-H3 输出的漫剧原画,支持 Move/Mix 两种动作迁移模式,把参考视频动作迁移到漫剧角色,生成动态短视频片段。
表格
| 模式 | 核心逻辑 | AI 漫剧适用场景 |
|---|---|---|
| Move 模式 | MiniMax-H3 产出漫剧原画 + 动作驱动视频;保留原画背景,迁移驱动视频动作到角色身上 | 静态漫剧立绘、分镜增加肢体动作、表情动画 |
| Mix 模式 | 保留驱动视频镜头运镜,将视频内人物替换为 MiniMax-H3 生成的漫剧角色 | 漫剧实景转漫画角色短片 |
工程痛点:8G 显存环境下,MiniMax-H3、Wan-Animate 不能同时驻留显存,脚本必须做模型卸载切换;长视频必须分段生成拼接,帧间容易出现角色五官漂移、手部崩坏。
2 硬件基线与磁盘环境约束
表格
| 硬件项 | 最低配置(FP8 量化) | 推荐配置 | 备注 |
|---|---|---|---|
| GPU | NVIDIA 8GB 显存 | 12GB 及以上 | 仅 CUDA;MiniMax-H3、Wan-Animate 均采用 FP8 量化权重,原生 BF16 直接 OOM |
| 系统内存 | 16GB | 32GB | 模型切换、视频帧缓存占用大量内存,批量任务建议 32G 以上 |
| 磁盘 | SSD ≥80GB 空闲 | SSD ≥120GB | MiniMax-H3、Wan-Animate 权重体积大;机械硬盘加载权重极易超时卡死;项目路径禁止中文、空格 |
| 系统 | Windows10/11 | Windows11 | ComfyUI 版本建议 ≥0.3.46 |
3 ComfyUI 源码部署与依赖环境安装
全程源码部署,规避第三方整合包插件版本冲突。
# 克隆官方ComfyUI仓库
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
# 安装基础依赖,国内镜像加速
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
进入custom_nodes目录,安装 Wan‑Animate、MiniMax-H3 必需自定义节点:
cd custom_nodes
git clone https://github.com/Comfy‑Workflows/ComfyUI‑Wan‑Suite.git
git clone https://github.com/Kosinkadink/ComfyUI‑VideoHelperSuite.git
git clone https://github.com/ltdrdata/ComfyUI‑Manager.git
git clone https://github.com/mini-max-h3/ComfyUI-MiniMaxH3.git
4 工程目录结构与模型权重存放规范
ComfyUI/
├─ custom_nodes/
│ ├─ ComfyUI-MiniMaxH3/ # MiniMax-H3自定义节点
│ └─ ComfyUI-Wan-Suite/ # Wan-Animate视频节点
├─ models/
│ ├─ minimax_h3/ # MiniMax-H3 FP8量化权重
│ ├─ wan_video/ # Wan‑Animate FP8量化权重、VAE权重
│ ├─ loras/ # 漫剧画风LoRA
│ └─ checkpoints/
├─ workflows/
│ └─ h3_wan_comic.json # MiniMax-H3+Wan-Animate联动工作流模板
├─ outputs_comic_img/ # MiniMax-H3输出漫剧静态原画
├─ outputs_comic_video/ # Wan-Animate输出动态片段
└─ cache/ # 模型缓存目录
5 8G 显存启动脚本、环境变量配置
新建start_h3_wan_8g.bat,针对 MiniMax-H3、Wan-Animate 模型切换场景做显存分片优化,8G 显卡本地部署 AI 漫剧必用。
@echo off
chcp 65001
echo ===== MiniMax-H3+Wan-Animate AI漫剧流水线 8G显存启动 =====
::PyTorch显存分配优化
set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:256,expandable_segments:True
set CUDA_VISIBLE_DEVICES=0
::重定向缓存与输出目录,防止C盘爆满
set COMFYUI_CACHE_DIR=%cd%\cache
set COMFYUI_OUTPUT_DIR=%cd%\outputs_comic_img
python main.py --listen --port 8188 --fp8‑storage --vae‑tile
pause
关键参数释义
--fp8‑storage:模型以 FP8 精度加载,MiniMax-H3 与 Wan-Animate 显存占用大幅下降,8G 必选;--vae‑tile:VAE 分块编解码,规避大分辨率直接 OOM;expandable_segments:True:开启显存动态扩容,缓解模型切换时显存碎片化;--listen:开启 API 接口,支持 Python 脚本批量调度 MiniMax-H3 生成分镜。
6 MiniMax-H3 + Wan‑Animate 联动工作流节点参数调优(AI 漫剧实测)
6.1 MiniMax-H3 节点配置(生成分镜原画)
表格
| 参数 | 8G 显存推荐值 | 说明 |
|---|---|---|
| 模型权重 | MiniMax-H3 FP8 量化版 | 不要加载原版大权重,显存无法承载 |
| 分辨率 | 768×1024 | 9:16 竖屏漫剧分镜原画 |
| 采样步数 | 22 | 兼顾画质与推理速度 |
| cfg_scale | 7.0 | 控制画面贴合提示词强度 |
| 角色特征权重 | 0.72 | 保证连载漫剧角色五官统一 |
MiniMax-H3 输出提示词约束示例:
国漫风格,竖屏漫剧镜头,人物五官保持一致,干净线条,柔和光影,无扭曲,无多余肢体
6.2 Wan‑Animate 节点配置(原画动作迁移)
表格
| 参数 | 8G 显存推荐值 | 说明 |
|---|---|---|
| 运行模式 | Move / Mix | MiniMax-H3 原画做动画优先选 Move |
| 分辨率 | 480×832 | 不建议 720P,显存压力巨大 |
| 单段帧数 | 77 帧(约 3 秒,24fps) | Wan 系列帧数建议为76*N+1;8G 不要超过 77 帧 |
| 采样步数 | 6‑8 步 | 过高推理时间成倍增加 |
| cfg_scale | 1.0‑1.5 | 该模型不适合高 CFG,容易画面崩坏 |
| face_strength | 0.7‑0.85 | 面部表情迁移强度 |
| pose_strength | 0.8‑0.9 | 肢体动作迁移强度 |
| frame_window_size | 77 | 分块推理窗口大小 |
工程经验:MiniMax-H3 生成的原画尽量人物主体居中、背景简洁;驱动参考视频优先 24fps,动作幅度不宜过于剧烈,降低手部崩坏概率。
7 Python 脚本:MiniMax-H3 批量生分镜 + 原画动作迁移
脚本逻辑:调用 ComfyUI API → 调用 MiniMax-H3 生成分镜原画 → 保存图片 → 卸载 MiniMax-H3 释放显存 → 加载 Wan-Animate 对当前原画做动作迁移,串行执行,避免 8G 显存同时加载两个大模型。新建h3_wan_comic_pipeline.py。
import os
import json
import requests
import time
import torch
import gc
import logging
COMFYUI_URL = "http://127.0.0.1:8188"
WORKFLOW_JSON = "./workflows/h3_wan_comic.json"
LOG_FILE = "./logs/h3_wan_run.log"
OUTPUT_IMG = "./outputs_comic_img"
OUTPUT_VIDEO = "./outputs_comic_video"
os.makedirs(OUTPUT_IMG, exist_ok=True)
os.makedirs(OUTPUT_VIDEO, exist_ok=True)
os.makedirs("./logs", exist_ok=True)
logging.basicConfig(filename=LOG_FILE, level=logging.INFO,
format="%(asctime)s | %(levelname)s | %(message)s", encoding="utf‑8")
def clear_gpu_mem():
"""模型切换时强制清空显存,8G本地部署核心"""
torch.cuda.empty_cache()
gc.collect()
logging.info("显存缓存回收,准备切换模型")
def load_workflow_template():
with open(WORKFLOW_JSON, "r", encoding="utf‑8") as f:
return json.load(f)
def submit_workflow(wf_data):
resp = requests.post(f"{COMFYUI_URL}/prompt", json={"prompt": wf_data}, timeout=180)
return resp.json()["prompt_id"]
def wait_task_complete(pid, timeout=1200):
start = time.time()
while time.time() - start < timeout:
res = requests.get(f"{COMFYUI_URL}/history/{pid}")
hist = res.json()
if pid in hist:
return True
time.sleep(4)
raise TimeoutError(f"任务 {pid} 超时")
if __name__ == "__main__":
wf_template = load_workflow_template()
# 原始故事文案,交给MiniMax-H3自动拆漫剧分镜
story_text = "少年来到古镇,推开木门,看见窗边坐着老者,两人对视。分3个漫剧镜头。"
try:
logging.info("开始调用MiniMax-H3生成分镜原画")
# 替换MiniMax-H3输入故事文本节点ID
wf_template["3"]["inputs"]["text"] = story_text
pid = submit_workflow(wf_template)
wait_task_complete(pid)
logging.info("MiniMax-H3 漫剧分镜原画生成完成")
clear_gpu_mem()
logging.info("切换Wan-Animate,对原画执行动作迁移")
pid2 = submit_workflow(wf_template)
wait_task_complete(pid2)
logging.info("当前漫剧镜头动态化完成")
clear_gpu_mem()
except Exception as err:
logging.error(f"任务异常:{str(err)}")
clear_gpu_mem()
logging.info("==== MiniMax-H3+Wan-Animate AI漫剧单镜头流水线执行结束 ====")
运行脚本:
python h3_wan_comic_pipeline.py
重要提示:脚本节点 ID 以你本地导出的
h3_wan_comic.json为准,直接复制代码需要自行匹配工作流节点编号。
8 分段生成 + FFmpeg 视频拼接完整指令
受限于 8G 显存,AI 漫剧长镜头必须拆分成多段 3 秒左右片段生成,拼接成片。
新建concat_comic_video.bat
@echo off
echo file 'seg_001.mp4' > video_list.txt
echo file 'seg_002.mp4' >> video_list.txt
echo file 'seg_003.mp4' >> video_list.txt
ffmpeg -f concat -safe 0 -i video_list.txt -c copy outputs_comic_video\comic_full_clip.mp4
del video_list.txt
echo AI漫剧分段视频拼接完成
pause
拼接后帧间会出现闪烁跳变,执行插值平滑:
ffmpeg -i comic_full_clip.mp4 -vf minterpolate=fps=24:mi_mode=blend out_smooth.mp4
9 实测高频问题与定位修复
- CUDA out of memory
- MiniMax-H3 与 Wan-Animate不能同时驻留显存,脚本必须在两个任务之间执行显存回收;
- 全部使用 FP8 量化权重;分辨率锁定 480×832,单段帧数不超过 77;
- 开启
tiled_vae、force_offload;串行任务,禁止并行提交。
- 角色五官前后镜头不一致
- MiniMax-H3 生成分镜时固定角色描述,全程复用同一套角色特征词;
- Wan-Animate 动作迁移不要把 face_strength 设置为 1.0;
- MiniMax-H3 输出原画人物尽量无大面积遮挡。
- 手部、肢体频繁崩坏畸形
- 驱动视频避免高速肢体运动、复杂手部手势;
- Wan-Animate CFG 不要大于 1.5;缩短单段生成帧数。
- MiniMax-H3 节点加载失败
- 核对
minimax_h3目录权重文件名,确认文件完整; - ComfyUI-MiniMaxH3 自定义节点更新到最新版本;路径禁止中文。
- 拼接之后音画错乱 Wan‑Animate 本身不生成音频,拼接完成后使用本地 TTS 读取 MiniMax-H3 输出的台词,后期配音加字幕。
10 性能表现与客观技术局限
实测环境 RTX3060‑8G
- MiniMax-H3 生成一张 768×1024 漫剧原画:约 2 分钟;
- Wan-Animate 生成 3 秒 480×832 动态片段:约 8‑11 分钟;
- 两个模型之间必须执行显存释放,否则直接 OOM。
技术局限
- 8G 显卡无法同时加载 MiniMax-H3 与 Wan-Animate,任务需要串行切换模型,推理耗时较长;
- 长动态镜头必须切片拼接,拼接位置容易出现画面跳变;
- 剧烈动作场景依然存在手部崩坏概率;
- 整套流水线只生成画面,配音、字幕、BGM 需要额外本地模块接入。
11 总结
本文搭建基于 MiniMax-H3+Wan-Animate 的本地部署 AI 漫剧完整流水线,由 MiniMax-H3 完成故事解析、分镜提示词生成、静态漫剧原画渲染,再通过 Wan-Animate 实现原画动作迁移,把静态分镜转为动态短视频片段。
针对 8G 消费级显卡,通过 FP8 量化、显存分片、模型切换时强制显存回收、串行任务调度,解决了本地部署时的显存溢出、角色不一致等工程问题。文中提供完整 ComfyUI 启动脚本、Python 自动化调度代码、FFmpeg 视频拼接指令。该方案适合小规模 AI 漫剧原型制作;如果做长篇连载漫剧量产,建议使用 12GB 以上显存显卡。