ComfyUI-MotionDiff 插件保姆级教程
1. 插件简介
插件地址: https://github.com/Fannovel16/ComfyUI-MotionDiff
这个插件就像是给 ComfyUI 装了一个超级智能的"动作大师"!它能做什么呢?
- 文字生成动作:你说"一个人在跳舞",它就能生成相应的人体动作序列
- 3D人体姿态估计:从照片或视频中识别出人的姿势和动作
- 动作可视化:把抽象的动作数据变成可以看到的3D小人动画
- SMPL人体建模:创建逼真的3D人体模型和动画
- 人脸重建:从照片重建3D人脸模型
- 动作编辑和保存:可以保存、加载和编辑动作数据
简单来说,这就是一个能理解人体动作、生成动画、创建3D模型的全能工具包!就像有了一个专业的动画师和3D建模师。
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI Manager(就是那个管理插件的工具)
- 搜索 "ComfyUI-MotionDiff"
- 找到作者是 "Fannovel16" 的那个
- 点击安装
方法二:手动安装
- 在你的 ComfyUI 文件夹里找到
custom_nodes文件夹 - 在这个文件夹里打开命令行
- 输入:
git clone https://github.com/Fannovel16/ComfyUI-MotionDiff.git
重要提醒
- 首次安装会很慢:插件会自动下载大量的模型文件(可能几十GB)
- 需要重启 ComfyUI:安装完成后必须重启才能使用
- Linux用户需要额外步骤:可能需要安装一些系统依赖
系统要求
- 显卡:建议有独立显卡,显存至少8GB
- 内存:建议至少16GB内存
- 存储空间:需要约50GB空间存放模型文件
- Python环境:需要Python 3.8或更高版本
3. 节点详解
3.1 MotionDiff Loader 节点(动作模型加载器)
这个节点就像是一个"动作大师的大脑加载器",负责加载不同的动作生成模型。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 模型数据集 | model_dataset | 下拉选择 | -human_ml3d | 选择要用哪个"动作大师",不同的大师擅长不同类型的动作 | 选择预训练的动作生成模型和对应的数据集 | 选择human_ml3d用于人体动作生成 |
3.2 MotionCLIP Text Encode 节点(文字动作编码器)
这个节点就像是一个"翻译官",把你说的话翻译成动作大师能理解的"动作语言"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 动作编码器 | md_clip | MD_CLIP | 必须连接 | 连接动作大师的"理解模块" | 接收MotionDiff模型的CLIP编码器 | 连接MotionDiff Loader的MD_CLIP输出 |
| 动作数据 | motion_data | MOTION_DATA | 必须连接 | 告诉编码器要处理什么样的动作框架 | 输入的动作数据结构信息 | 连接Empty Motion Data节点 |
| 文字描述 | text | STRING | "a person performs a cartwheel" | 用文字描述你想要的动作,就像跟动画师说话 | 描述期望动作的文本提示词 | "一个人在跳舞"、"走路的人"等 |
3.3 Empty Motion Data 节点(空白动作数据)
这个节点就像是一个"空白画布",为动作生成提供基础框架。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 帧数 | frames | 1-196 | 196 | 决定动作有多长,就像决定动画有多少帧 | 生成动作序列的帧数长度 | 短动作用60-120,长动作用196 |
3.4 MotionDiff Simple Sampler 节点(动作生成采样器)
这个节点就像是真正的"动作创造师",根据你的描述创造出具体的动作。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 采样器名称 | sampler_name | ddpm/ddim | ddim | 选择创造动作的"方法",就像选择不同的画画技法 | 扩散模型的采样算法类型 | ddim速度快,ddpm质量可能更好 |
| 动作模型 | md_model | MD_MODEL | 必须连接 | 连接动作创造的"大脑" | 接收动作生成模型 | 连接MotionDiff Loader的MD_MODEL输出 |
| 动作编码器 | md_clip | MD_CLIP | 必须连接 | 连接文字理解的"翻译官" | 接收CLIP文本编码器 | 连接MotionDiff Loader的MD_CLIP输出 |
| 动作条件 | md_cond | MD_CONDITIONING | 必须连接 | 连接处理过的文字指令 | 接收编码后的文本条件 | 连接MotionCLIP Text Encode的输出 |
| 动作数据 | motion_data | MOTION_DATA | 必须连接 | 连接动作的基础框架 | 接收动作数据结构 | 连接Empty Motion Data的输出 |
| 随机种子 | seed | 整数 | 123 | 控制创造的"随机性",相同种子得到相同动作 | 随机数生成种子,确保结果可重现 | 固定种子得到固定结果 |
3.5 Motion Data Visualizer 节点(动作可视化器)
这个节点就像是一个"动作播放器",把抽象的动作数据变成可以看到的动画。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 动作数据 | motion_data | MOTION_DATA | 必须连接 | 要播放的动作数据 | 输入的动作序列数据 | 连接采样器或其他动作数据源 |
| 可视化类型 | visualization | original/pseudo-openpose | pseudo-openpose | 选择显示方式,就像选择不同的"播放模式" | 动作可视化的渲染方式 | pseudo-openpose更像简笔画人 |
| 距离 | distance | 0.0-10.0 | 7.0 | 控制"摄像机"离小人多远,就像调节镜头远近 | 3D视图的相机距离 | 近距离用3-5,远距离用8-10 |
| 仰角 | elevation | 0.0-300.0 | 120 | 控制从什么角度看小人,就像调节摄像机高度 | 3D视图的仰视角度 | 俯视用150-200,平视用90-120 |
| 旋转角度 | rotation | -180-180 | -90 | 控制从哪个方向看小人,就像绕着小人转圈 | 3D视图的水平旋转角度 | 正面用0,侧面用90或-90 |
| 线条粗细 | poselinewidth | 0-50 | 4 | 控制小人骨架线条的粗细程度 | 姿态线条的渲染宽度 | 细线用2-3,粗线用6-8 |
| 可选标题 | opt_title | STRING | 空 | 给动画加个标题,就像给视频起名字 | 可选的标题文本 | "跳舞动作"、"走路演示"等 |
3.6 MotionGPT Model Loader 节点(MotionGPT模型加载器)
这个节点就像是加载另一种"动作大师",专门用于更高级的动作生成。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 模型 | model | MotionGPT/AnimationGPT | MotionGPT | 选择要用的"动作大师"版本 | 选择MotionGPT模型的变体 | MotionGPT是基础版,AnimationGPT是动画版 |
3.7 MotionGPT Text2Motion 节点(MotionGPT文字转动作)
这个节点就像是MotionGPT的"动作创造器",直接从文字生成动作。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| MotionGPT模型 | mgpt_model | MGPTMODEL | 必须连接 | 连接MotionGPT的"大脑" | 接收MotionGPT模型实例 | 连接MotionGPT Model Loader的输出 |
| 动作长度 | motion_length | 1-196 | 196 | 决定生成的动作有多长 | 生成动作序列的帧数 | 短动作用60-120,长动作用196 |
| 随机种子 | seed | 整数 | 0 | 控制生成的随机性 | 随机数生成种子 | 相同种子得到相同结果 |
| 文字描述 | text | STRING | "make the person jump and turn around" | 描述你想要的动作 | 动作描述的文本提示词 | "让人跳跃并转身"、"走路然后挥手" |
3.8 Smplify Motion Data 节点(动作数据转SMPL)
这个节点就像是一个"动作翻译器",把抽象的动作数据转换成3D人体模型能用的格式。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 动作数据 | motion_data | MOTION_DATA | 必须连接 | 要转换的动作数据 | 输入的动作序列数据 | 连接动作生成器的输出 |
| 优化迭代次数 | num_smplify_iters | 1-1000 | 20 | 转换时要"调整"多少次,越多越精确但越慢 | SMPL拟合的优化迭代次数 | 快速转换用10-15,精确转换用30-50 |
| 优化步长 | smplify_step_size | 1e-4-5e-1 | 1e-1 | 每次调整的"幅度",就像调节学习的快慢 | 优化算法的步长参数 | 稳定用1e-2,快速用1e-1 |
| SMPL模型 | smpl_model | 下拉选择 | SMPL_NEUTRAL.pkl | 选择要用的人体模型类型 | 选择SMPL人体模型文件 | 中性用NEUTRAL,男性用MALE,女性用FEMALE |
3.9 Render SMPL Mesh 节点(SMPL网格渲染器)
这个节点就像是一个"3D摄影师",把3D人体模型拍成漂亮的图片或视频。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| SMPL数据 | smpl | SMPL | 必须连接 | 要渲染的3D人体模型数据 | 输入的SMPL模型数据 | 连接Smplify Motion Data的输出 |
| 绘制平台 | draw_platform | True/False | False | 是否在脚下画个地板,就像舞台 | 是否渲染地面平台 | 想看脚部接触选True |
| 仅深度图 | depth_only | True/False | False | 是否只要深度信息,不要颜色 | 是否只输出深度图 | 做后期处理时选True |
| 垂直视野角 | yfov | 0.1-10 | 0.6 | 控制"镜头"的广角程度,就像调节相机焦距 | 垂直方向的视野角度 | 广角用1.0-2.0,长焦用0.3-0.5 |
| X轴移动 | move_x | -500-500 | 0 | 左右移动人物位置 | 沿X轴的平移距离 | 向右移动用正数,向左用负数 |
| Y轴移动 | move_y | -500-500 | -0.1 | 上下移动人物位置 | 沿Y轴的平移距离 | 向上移动用正数,向下用负数 |
| Z轴移动 | move_z | -500-500 | 0 | 前后移动人物位置 | 沿Z轴的平移距离 | 向前移动用正数,向后用负数 |
| X轴旋转 | rotate_x | -180-180 | 0 | 绕X轴旋转,就像点头摇头 | 绕X轴的旋转角度 | 俯视用负数,仰视用正数 |
| Y轴旋转 | rotate_y | -180-180 | 0 | 绕Y轴旋转,就像转身 | 绕Y轴的旋转角度 | 向左转用负数,向右转用正数 |
| Z轴旋转 | rotate_z | -180-180 | 0 | 绕Z轴旋转,就像侧倾 | 绕Z轴的旋转角度 | 向左倾用负数,向右倾用正数 |
| 背景颜色 | background_hex_color | 颜色代码 | #000000 | 设置背景颜色,用颜色代码表示 | 背景的十六进制颜色值 | 黑色用#000000,白色用#FFFFFF |
| 画面宽度 | frame_width | 64-4096 | 512 | 输出图片的宽度,像素数 | 渲染图像的宽度 | 高清用1024,标清用512 |
| 画面高度 | frame_height | 64-4096 | 512 | 输出图片的高度,像素数 | 渲染图像的高度 | 高清用1024,标清用512 |
| 法线贴图 | normals | True/False | False | 是否生成法线贴图,用于高级渲染 | 是否输出表面法线信息 | 做高级后期处理时选True |
3.10 SMPL Loader 节点(SMPL加载器)
这个节点就像是一个"动作文件播放器",可以加载之前保存的动作文件。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| SMPL文件 | smpl | 文件选择 | 选择要加载的文件 | 选择之前保存的动作文件 | 选择要加载的SMPL数据文件 | 从下拉菜单选择.pt文件 |
| SMPL模型 | smpl_model | 下拉选择 | SMPL_NEUTRAL.pkl | 选择要用的人体模型类型 | 选择SMPL人体模型文件 | 根据保存时的模型选择对应类型 |
3.11 Save SMPL 节点(SMPL保存器)
这个节点就像是一个"动作录像机",可以把生成的动作保存成文件。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例例 |
|---|---|---|---|---|---|---|
| SMPL数据 | smpl | SMPL | 必须连接 | 要保存的3D人体动作数据 | 输入的SMPL模型数据 | 连接任何SMPL数据源 |
| 文件名前缀 | filename_prefix | STRING | motiondiff_pt | 保存文件的名字前缀 | 保存文件的前缀名称 | "我的动作"、"跳舞动画"等 |
3.12 Export SMPL to 3DCGI Software 节点(SMPL导出器)
这个节点就像是一个"格式转换器",把动作数据转换成3D软件能用的格式。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| SMPL数据 | smpl | SMPL | 必须连接 | 要导出的3D人体动作数据 | 输入的SMPL模型数据 | 连接任何SMPL数据源 |
| 文件夹名前缀 | foldername_prefix | STRING | motiondiff_meshes | 导出文件夹的名字前缀 | 导出文件夹的前缀名称 | "我的3D模型"、"动画网格"等 |
| 格式 | format | 多种格式 | glb | 选择导出的3D文件格式 | 3D模型文件的格式类型 | Blender用glb,Unity用fbx |
3.13 SMPL Shape Parameters 节点(SMPL形状参数)
这个节点就像是一个"身材调节器",可以调整3D人体模型的体型。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| SMPL数据 | smpl | SMPL | 必须连接 | 要调整的3D人体模型 | 输入的SMPL模型数据 | 连接任何SMPL数据源 |
| 整体大小 | size | -100-100 | 0 | 调整人物的整体大小,就像胖瘦程度 | 控制整体体型大小的参数 | 胖一点用正数,瘦一点用负数 |
| 厚度 | thickness | -100-100 | 0 | 调整人物的厚薄程度 | 控制身体厚度的参数 | 厚实用正数,纤细用负数 |
| 上身高度 | upper_body_height | -100-100 | 0 | 调整上半身的长短 | 控制上身长度的参数 | 长上身用正数,短上身用负数 |
| 下身高度 | lower_body_height | -100-100 | 0 | 调整下半身的长短 | 控制下身长度的参数 | 长腿用正数,短腿用负数 |
| 肌肉量 | muscle_mass | -100-100 | 0 | 调整肌肉发达程度 | 控制肌肉量的参数 | 健壮用正数,纤弱用负数 |
| 腿部 | legs | -100-100 | 0 | 调整腿部的粗细 | 控制腿部形状的参数 | 粗腿用正数,细腿用负数 |
| 胸部 | chest | -100-100 | 0 | 调整胸部的大小 | 控制胸部形状的参数 | 大胸用正数,小胸用负数 |
| 腰部高度 | waist_height | -100-100 | 0 | 调整腰部的位置高低 | 控制腰部高度的参数 | 高腰用正数,低腰用负数 |
| 腰部宽度 | waist_width | -100-100 | 0 | 调整腰部的粗细 | 控制腰部宽度的参数 | 粗腰用正数,细腰用负数 |
| 手臂 | arms | -100-100 | 0 | 调整手臂的粗细 | 控制手臂形状的参数 | 粗臂用正数,细臂用负数 |
3.14 Human4D Loader 节点(Human4D加载器)
这个节点就像是一个"人体识别专家",专门用于从图片中识别人体姿态。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 检测器 | detector | 多种选择 | person_yolov8m-seg.pt | 选择用来找人的"眼睛",不同的眼睛精度不同 | 选择人体检测模型 | 精度要求高用yolov8x,速度要求高用yolov8s |
| 半精度 | fp16 | True/False | False | 是否用"简化计算",速度快但可能不够精确 | 是否使用16位浮点数计算 | 显存不够或要求速度选True |
3.15 Human4D Image2SMPL 节点(Human4D图片转SMPL)
这个节点就像是一个"姿态魔法师",能从照片中提取出3D人体姿态。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| Human4D模型 | human4d_model | HUMAN4D_MODEL | 必须连接 | 连接人体识别专家的"大脑" | 接收Human4D模型实例 | 连接Human4D Loader的输出 |
| 图像 | image | IMAGE | 必须连接 | 要分析的照片或图片 | 输入的图像数据 | 连接Load Image或其他图像源 |
| 检测置信度阈值 | det_confidence_thresh | 0.1-1.0 | 0.25 | 多确定才算找到人,就像调节"眼神"的严格程度 | 人体检测的置信度阈值 | 严格用0.5-0.7,宽松用0.2-0.3 |
| 检测重叠阈值 | det_iou_thresh | 0.1-1.0 | 0.7 | 避免把同一个人识别多次的"防重复"设置 | 非极大值抑制的IoU阈值 | 避免重复用0.7-0.8,允许重叠用0.4-0.5 |
| 检测批次大小 | det_batch_size | 1-20 | 10 | 一次处理多少张图片,就像一次看几张照片 | 检测阶段的批处理大小 | 显存大用15-20,显存小用5-8 |
| HMR批次大小 | hmr_batch_size | 1-20 | 8 | 一次分析多少个人,就像同时研究几个人的姿态 | HMR推理的批处理大小 | 显存大用12-16,显存小用4-6 |
3.16 Spectre Face Recon Loader 节点(Spectre人脸重建加载器)
这个节点就像是一个"人脸雕塑师"的工具箱,专门用于3D人脸重建。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 半精度 | fp16 | True/False | False | 是否用"简化计算"来节省显存 | 是否使用16位浮点数计算 | 显存不够选True,精度要求高选False |
3.17 Spectre Image2SMPL 节点(Spectre图片转SMPL)
这个节点就像是一个"人脸3D建模师",能从人脸照片重建出3D人脸模型。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| Spectre模型 | spectre_model | SPECTRE_MODEL | 必须连接 | 连接人脸雕塑师的"工具箱" | 接收Spectre模型实例 | 连接Spectre Face Recon Loader的输出 |
| 图像 | image | IMAGE | 必须连接 | 要重建3D模型的人脸照片 | 输入的人脸图像数据 | 连接包含人脸的图片 |
| 块大小 | chunk_size | 10-100 | 50 | 一次处理多少帧,就像分批雕刻 | 时序处理的块大小 | 显存大用70-100,显存小用30-50 |
3.18 Render Mutiple SMPL Mesh 节点(多人SMPL网格渲染器)
这个节点就像是一个"多人摄影师",能同时拍摄多个3D人体模型。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 多人SMPL数据 | smpl_multi_subjects | SMPL_MULTIPLE_SUBJECTS | 必须连接 | 要渲染的多个人体模型数据 | 输入的多主体SMPL数据 | 连接Human4D或其他多人数据源 |
| 绘制平台 | draw_platform | True/False | False | 是否在脚下画地板 | 是否渲染地面平台 | 想看脚部接触选True |
| 仅深度图 | depth_only | True/False | False | 是否只要深度信息 | 是否只输出深度图 | 做后期处理时选True |
| X焦距偏移 | fx_offset | 0.0-10000 | 0.0 | 调节X方向的"镜头焦距" | X方向焦距的偏移量 | 一般保持默认值0 |
| Y焦距偏移 | fy_offset | 0.0-10000 | 0.0 | 调节Y方向的"镜头焦距" | Y方向焦距的偏移量 | 一般保持默认值0 |
| X轴移动 | move_x | -500-500 | 0 | 左右移动整个场景 | 沿X轴的平移距离 | 向右移动用正数 |
| Y轴移动 | move_y | -500-500 | 0 | 上下移动整个场景 | 沿Y轴的平移距离 | 向上移动用正数 |
| Z轴移动 | move_z | -500-500 | 0 | 前后移动整个场景 | 沿Z轴的平移距离 | 向前移动用正数 |
| X轴旋转 | rotate_x | -180-180 | 0 | 绕X轴旋转整个场景 | 绕X轴的旋转角度 | 俯视用负数 |
| Y轴旋转 | rotate_y | -180-180 | 0 | 绕Y轴旋转整个场景 | 绕Y轴的旋转角度 | 向左转用负数 |
| Z轴旋转 | rotate_z | -180-180 | 0 | 绕Z轴旋转整个场景 | 绕Z轴的旋转角度 | 向左倾用负数 |
| 背景颜色 | background_hex_color | 颜色代码 | #000000 | 设置背景颜色 | 背景的十六进制颜色值 | 黑色用#000000 |
| 法线贴图 | normals | True/False | False | 是否生成法线贴图 | 是否输出表面法线信息 | 高级渲染时选True |
| 移除背景 | remove_background | True/False | True | 是否移除背景,只保留人物 | 是否移除渲染背景 | 想要透明背景选True |
3.19 Render OpenPose from SMPL Multiple 节点(多人SMPL转OpenPose)
这个节点就像是一个"姿态简化器",把复杂的3D人体模型转换成简单的骨架图。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 多人SMPL数据 | smpl_multi_subjects | SMPL_MULTIPLE_SUBJECTS | 必须连接 | 要转换的多人3D模型数据 | 输入的多主体SMPL数据 | 连接Human4D等多人数据源 |
3.20 Export Multiple SMPL Subjects to 3DCGI Software 节点(多人SMPL导出器)
这个节点就像是一个"多人格式转换器",把多人动作数据导出给3D软件使用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 多人SMPL数据 | smpl_multi_subjects | SMPL_MULTIPLE_SUBJECTS | 必须连接 | 要导出的多人3D模型数据 | 输入的多主体SMPL数据 | 连接Human4D等数据源 |
| 文件夹名前缀 | foldername_prefix | STRING | 4dhuman_meshes | 导出文件夹的名字前缀 | 导出文件夹的前缀名称 | "多人动画"、"群体模型"等 |
| 格式 | format | 多种格式 | glb | 选择导出的3D文件格式 | 3D模型文件的格式类型 | Blender用glb,Maya用obj |
4. 使用技巧和建议
4.1 文字描述动作的技巧
- 具体明确:不要说"动作",要说"跳跃"、"走路"、"挥手"
- 添加细节:比如"快速跳跃"、"缓慢走路"、"用力挥手"
- 组合动作:可以说"先走路然后跳跃"、"边走边挥手"
- 情感表达:加上"开心地跳舞"、"疲惫地走路"
4.2 模型选择建议
- MotionDiff:适合基础动作生成,速度快
- MotionGPT:适合复杂动作序列,质量高
- Human4D:适合从真实照片提取姿态
- Spectre:专门用于人脸重建
4.3 性能优化技巧
-
显存不够时:
- 开启半精度模式(fp16=True)
- 减少批次大小
- 降低图片分辨率
- 减少动作帧数
-
提高质量:
- 增加优化迭代次数
- 使用更高分辨率
- 选择更精确的模型
4.4 渲染参数调节
- 摄像机角度:
- 正面:rotation=0, elevation=90
- 侧面:rotation=90, elevation=90
- 俯视:rotation=0, elevation=150
- 距离调节:
- 全身:distance=7-10
- 半身:distance=4-6
- 特写:distance=2-4
5. 常见问题解答
Q1:为什么第一次使用很慢?
A: 第一次使用时需要下载大量模型文件:
- MotionDiff模型约5-10GB
- Human4D模型约3-5GB
- Spectre模型约2-3GB
- 下载完成后使用就会很快
Q2:显存不够用怎么办?
A: 可以尝试这些方法:
- 开启半精度模式(fp16=True)
- 减少批次大小
- 降低图片分辨率
- 减少同时处理的人数
- 关闭其他占用显存的程序
Q3:生成的动作不符合描述怎么办?
A: 检查这些方面:
- 文字描述是否够具体明确
- 尝试不同的随机种子
- 调整动作长度参数
- 尝试不同的模型(MotionDiff vs MotionGPT)
Q4:从照片提取的姿态不准确怎么办?
A: 可能的原因和解决方法:
- 照片中人物不够清晰 → 使用更清晰的照片
- 人物被遮挡 → 选择人物完整可见的照片
- 检测阈值太高 → 降低det_confidence_thresh
- 光线不好 → 使用光线充足的照片
Q5:渲染出来的3D模型变形怎么办?
A: 检查这些设置:
- SMPL模型类型是否正确
- 优化迭代次数是否足够
- 优化步长是否合适
- 形状参数是否设置过极端
Q6:导出的3D文件在其他软件打不开?
A: 可能的原因:
- 文件格式不兼容 → 尝试其他格式(glb、fbx、obj)
- 文件损坏 → 重新导出
- 软件版本问题 → 更新3D软件版本
6. 工作流程示例
基础文字生成动作工作流:
- 添加
MotionDiff Loader节点 - 添加
Empty Motion Data节点 - 添加
MotionCLIP Text Encode节点 - 添加
MotionDiff Simple Sampler节点 - 添加
Motion Data Visualizer节点 - 按顺序连接所有节点
照片转3D人体工作流:
- 添加
Load Image节点加载照片 - 添加
Human4D Loader节点 - 添加
Human4D Image2SMPL节点 - 添加
Render Mutiple SMPL Mesh节点 - 连接并设置参数
人脸重建工作流:
- 添加
Load Image节点加载人脸照片 - 添加
Spectre Face Recon Loader节点 - 添加
Spectre Image2SMPL节点 - 连接并处理
7. 高级应用
7.1 动作编辑和混合
- 使用多个动作生成节点
- 通过调整参数创建变化
- 保存和加载不同版本
7.2 批量处理
- 使用批次处理功能
- 同时处理多张图片
- 自动化工作流程
7.3 与其他插件结合
- 结合ControlNet使用生成的姿态
- 与视频处理插件配合
- 集成到完整的创作流程
8. 总结
ComfyUI-MotionDiff 插件为我们提供了一套完整的人体动作生成和3D建模工具。从简单的文字描述到复杂的3D动画,从照片姿态提取到专业级渲染,这个插件涵盖了动作生成的各个方面。
记住几个要点:
- 选择合适的模型和参数
- 合理管理显存和性能
- 善用不同的可视化和渲染选项
- 多实验不同的参数组合
希望这个教程能帮你充分发挥这个强大插件的潜力,创造出精彩的动作动画和3D内容!