解读时间:2026-09-27 | 执行者:DSH(本机) 触发:用户要求了解「SAM 3D Body(ComfyUI 提取 3D 动作)→ Blender(穿透式等高难摄像机动画)→ MiniMax H3 Ref2V(3D 白模转高清成片)」这条链路 方法:官方文档 + 一手仓库 README 交叉核对 + 对 GPU 机本机 ComfyUI 0.37.0 做只读实测(未安装、未跑任务) 配套:
57-H3白模红模素材参考调研/(白模/红模素材能力核查、外部项目盘点)
这条链路的分工是"白模负责确定性,H3 负责想象力":SAM 3D Body 把真人视频里的动作变成可编辑的 3D 骨架/蒙皮动画(GLB/BVH),Blender 负责把文字描述不清的空间关系与摄像机运动(穿透、遮挡、穿缝、精确节拍)变成看得见的时序,H3 Ref2V 再给这个粗模换上材质、光照、氛围和同步声音。
它解决的是 H3 最弱的一环——摄像机与空间关系的可控性;代价是 H3 不提供动作捕捉级保真,白模信息量不足时"写实"和"完全一致"会互相冲突。
| 项 | 事实 |
|---|---|
| 出品 | Meta Superintelligence Labs,模型名 SAM 3D Body(3DB),参数化表示 MHR(Momentum Human Rig)——把骨架结构与表面形状解耦 |
| 能力 | 单张图 / 视频帧 → 全身 3D 人体网格(含身体、脚、手);支持 2D 关键点、mask 等提示式引导 |
| ComfyUI 原生支持 | 2026-08-23 由 Kijai 的 PR(Comfy-Org/ComfyUI #14370)合入内核,不需要自定义节点包 |
| 原生节点 | SAM3DBody_Loader / SAM3DBody_Predict / SAM3DBody_Render / SAM3DBody_Smooth / SAM3DBody_FaceExpression;配套 SAM3_VideoTrack(多人跟踪)、RTDETR_detect(人体检测)、LoadMoGeModel + MoGeGeometryToFOV(用 MoGe 估相机 FOV,让重建与源视频对齐更准) |
| 跨帧稳定 | 内置时序平滑(SAM3DBody_Smooth,gaussian,可调窗口) |
| 面部 | 基础模型不检测表情,靠 SAM3DBody_FaceExpression 用 MediaPipe blendshapes 补 |
| 导出(关键) | BuildPoseFile 节点:输出 glb 或 bvh,再交给 Save3DAdvanced / SaveGLB 落盘 |
BuildPoseFile 的导出档位(官方节点文档逐项抄录):
format = glb,mesh_style 四选一:
body_mesh=真骨架:127 根骨骼 + 蒙皮 + TRS 关键帧 + 72 个面部 morph(需要模型)bones_only=关节处的骨骼形状图元(预览用)openpose=OpenPose-18 的 3D 骨架(可选手部 21+21 点)scail=SCAIL 3D 胶囊 rig(开口圆柱 + 关节球封顶)format = bvh,=BVH 动作捕捉片段(单骨架,需要模型);官方文档明确写了 BVH export tested with Blender importcamera_translation(off 绑定位置 / centered 相对第 0 帧 / absolute 原始,Z 是相机深度,通常以米计)fps:默认 24.0bone_smooth_window(高斯平滑骨骼旋转关键帧 / 关键点轨迹,0=关,7–15 用于压掉上游没滤掉的抖动与翻转)也就是:这一步直接产出"带 127 骨骼、带蒙皮、带表情 morph 的动画角色",进 Blender 即可用,不需要你自己绑骨。
模型权重(Comfy-Org 重打包,实测体积)
| 文件 | 目标目录 | 体积 |
|---|---|---|
sam_3d_body_dinov3_bf16.safetensors | models/detection/ | 2699.6 MiB |
sam_3d_body_dinov3_int8_convrot.safetensors(轻量替代) | models/detection/ | 1901.7 MiB |
sam3.1_multiplex_fp16.safetensors | models/checkpoints/ | 1664.7 MiB |
rt_detr_v4-x-hgnet_fp32.safetensors | models/diffusion_models/ | 236.3 MiB |
moge_2_vitl_normal_fp16.safetensors(可选,只为对齐 FOV) | models/geometry_estimation/ | 631.2 MiB |
Comfy-Org/sam3.1、Comfy-Org/RT-DETR、Comfy-Org/MoGebody 档 0.27s)第三方实务指南(Seedance《MiniMax H3:将 Blender 动画转为逼真视频的实用工作流》)把 Blender 的定位讲得最清楚:
"Blender 控制事物的位置;视频模型则负责呈现世界的观感与质感。" 三维场景无需达到最终渲染质量——把它当成一份动态规格说明书:只布摄像机路径、粗略主体模型、地面平面、主要障碍物,就能在付费生成前消除歧义。
为什么非要用 Blender 而不是纯文字提示词?文档给的原话场景就是"穿透式"这类需求:
载具必须沿特定曲线行驶;角色必须从前景物体后方穿过;摄像机必须在准确节拍抵达关键揭示画面。Blender 能把上述意图转成可视的时间节奏、画面方向、比例尺度与遮挡关系。
Blender 侧的可操作要点
BuildPoseFile 导出的 GLB(127 骨骼 + 蒙皮 + 72 表情 morph)直接 File → Import → glTF;或导 BVH 做纯骨架动作。.blend 源文件作为生产源(便于改颜色 ID、换参考帧、局部重渲)。⚠️ 渲染方式的现实约束(本机向):
blender --background下 Cycles(CPU 或 CUDA/OptiX)最稳;Workbench / EEVEE 的后台渲染需要可用的 GPU/EGL 显示上下文,无显示器时容易失败——白模只需轮廓与遮挡,Cycles + 极低采样 + 纯色/漫反射材质完全够用。
同一份指南的核心结论(可直接当操作规范用):
| 问题 | 结论 |
|---|---|
| 选 Ref2VA 还是 FL2VA? | 整段 playblast 要指导时间节奏与摄像机运动 → Ref2VA;只需要锁定首尾构图 → FL2VA |
| 白模要不要做完材质? | 不需要。清晰的剪影、景深关系、接触点、可辨识动作 >> 精细 shader;用颜色编码区分不同对象有助于说明各自的参考角色 |
| 会 100% 保留动作吗? | 不会。把 playblast 当强引导信号,而非动作捕捉级保证;验收必须复核运动轨迹、接触关系、摄像机节奏、主体身份、物体数量 |
| 核心冲突 | "写实"与"与 playblast 完全一致"在粗模信息不足时互相冲突——模型会自行加关节细节、背景活动、更电影化的运镜 |
多参考的分工铁律(与官方 Ref2VA 一致):每个参考资产只给它一个角色——playblast 管运动/镜头;一张干净静帧管身份/外观;一段音频管节奏;不要上传多个相似资产却不说明谁管身份、谁管动作。
官方提示词模板(照抄即可)
以视频 1 作为运动与摄像机参考。严格保留主体运动路径、摄像机高度、转向时机、前景遮挡关系及最终停驻位置。将灰色占位模型替换为 [主体身份与结构描述]。环境设定为 [地点],包含 [时间、天气及实用光源]。材质必须呈现 [三种具体纹理]。仅添加自然发生的次级运动:[布料、尘埃、水、头发、植被]。同步生成 [环境音与关键音效事件]。保持 [物体数量、几何形态、服装、画面方向及镜头时长] 不变。单镜连续拍摄;无剪辑、无添加文字、无 Logo、无额外主体。
双栏验收表(推荐直接落地)
| 从 Blender 中「必须保留」 | 由生成「负责提升」 |
|---|---|
| 摄像机起始点、路径与终点 | 写实曝光与镜头响应 |
| 主体数量与画面方向 | 材质、磨损、反射 |
| 接触时机与关键姿态 | 布料、雨滴、尘埃、头发、植被 |
| 前景/背景遮挡关系 | 环境音、拟音、对白 |
| 镜头时长与剪辑预留点 | 细微纹理与氛围细节 |
每项标 通过 / 可修复后使用 / 未通过。只要转向错误或摄像机丢了揭示时机,画面再惊艳也判失败;反之运动准确时,轻微材质瑕疵可归为"可修复"。
审片顺序(很重要):先静音看摄像机与轨迹 → 再看接触与遮挡 → 再看身份与材质 → 最后核对声音与画面事件同步。精修过的单帧会掩盖转换失败。
真人舞蹈/动作视频
│ ① ComfyUI:SAM3_VideoTrack → RTDETR_detect → SAM3DBody_Predict
│ → SAM3DBody_Smooth → SAM3DBody_FaceExpression
▼
MHR_POSE_DATA(3D 骨架 + 形状 + 表情 + 相机平移)
│ ② BuildPoseFile(format=glb, mesh_style=body_mesh)
▼
角色.glb ← 127 骨骼 + 蒙皮 + TRS 关键帧 + 72 面部 morph
│ ③ Blender:导入 glb → 摆粗模/地面/遮挡物 → 画摄像机(可穿透)→ 渲染 playblast
▼
白模.mp4(24fps,H.264,YUV420P,边长为 32 的倍数)
│ ④ ComfyUI:H3 Director-rv2v / Ref2VA
│ <Video 1> = 白模.mp4(动作+镜头) <Picture N> = 角色图(身份) <Audio 1> = 可选节奏
▼
成片.mp4(同步音频,主体换皮、镜头与动作被保留)
④ 的硬约束(H3 参考视频规格,务必先合规再喂)
| 约束 | 值 | 说明 |
|---|---|---|
| 单段参考视频时长 | 2–15 s | 每段 |
| 全部参考视频合计 | ≤15 s | 单条就吃满预算时别再叠第二条 |
| 参考视频条数 | ≤3 段 | 与图/音频跨类型合计 ≤12 个 |
| 帧率 | 24 fps | H3 输出也是 24 fps,对齐可省一次真补帧 |
| 编码 | H.264 + YUV420P | 竖屏降到 480×864 可省显存(sm120 + SageAttention 长序列有灰屏风险) |
| 边长 | 32 的倍数 | 短边 480 / 768 / 1088 档 |
| 单段生成上限 | 15.083 s(362 帧) | 更长必须分段 + Motion Context 续接 |
本地已有更详细的 H3 侧记录:
10-视频生成流水线/H3长视频分段合成方法-20260914.md、06-ComfyUI-H3运维记录/ComfyUI-H3运维记录.md。
核查方式:
curl http://127.0.0.1:8189/object_info全节点扫描 + 模板目录 + 模型目录ls。未安装、未运行。
| 项 | 状态 |
|---|---|
| ComfyUI 版本 | 0.37.0 |
| SAM3D-Body 原生节点 | ✅ SAM3DBody_Loader / _Predict / _Render / _Smooth / _FaceExpression 全在 |
| SAM3.1 跟踪节点 | ✅ SAM3_Detect / SAM3_VideoTrack / SAM3_TrackToMask / SAM3_TrackPreview |
| 3D 导出/预览节点 | ✅ BuildPoseFile、SaveGLB、Save3DAdvanced、Preview3D、Preview3DAdvanced、Get3DComponents、MeshToFile3D、CreateCameraInfo、Load3D、Load3DAdvanced、RenderMesh、MoGeRender、VoxelToMesh |
| 缺的节点 | ❌ Load3DAnimation、Preview3DAnimation(0.37.0 尚未包含;不影响导出链路,只影响"把动画 GLB 导回 ComfyUI 预览") |
| 官方工作流模板 | ✅ utility_sam3d_body.json 已在模板库(本地共 580 个模板),节点参数实测:BuildPoseFile:[glb, scail, ..., 24, off, -1]、SAM3DBody_Loader:[sam_3d_body_dinov3_bf16.safetensors]、LoadMoGeModel:[moge_2_vitl_normal_fp16.safetensors]、UNETLoader:[rt_detr_v4-x-hgnet_fp32.safetensors]、CheckpointLoaderSimple:[sam3.1_multiplex_fp16.safetensors] |
| 模型权重 | ❌ 4 个全缺:models/detection/、models/geometry_estimation/ 目录里只有占位文件;checkpoints/ 只剩空的 sd1.5 / sdxl 目录 |
| Blender | ❌ 未安装(which blender 空;apt 候选仅 4.0.2,而第三方 FBX/BVH 导出节点要求 ≥4.1) |
| 磁盘 | 982G 已用 / 106G 可用(91%) —— 装 Blender(~400MB)+ 模型(~5.2GB)没问题 |
| 显存 | 16 GB;SAM3D Body 峰值 ~3.5 GB,H3 Ref2VA 本机实测峰值 ~14.5 GB → 两者不能同时常驻,必须错开 |
utility_sam3d_body.json 模板本身就能渲染网格叠加视频;把 BuildPoseFile 改成 openpose/scail 或直接用 SAM3DBody_Render 渲染 mesh,即可得到"无身份的骨骼/白模视频",正好当 <Video 1>。 适合:只想要"动作驱动 + 换皮",不追求特定运镜。 已有先例:本机 57-H3白模红模素材参考调研/ 里已有用现成白模/红模素材换人的成功记录。
需要补装:① 上面 4 个模型(约 5.2 GB,MoGe 可选);② Blender(建议 4.5.9 LTS 或 5.x 便携版,别用 apt 的 4.0.2)。 适合:需要穿透式运镜、精确遮挡、精确节拍揭示的镜头;也是"白模 + 渲染"理念的完整形态。
自定义节点 0(Apache-2.0)提供 Drive SAM3D Body Camera:围绕 MHR_POSE_DATA 的每一帧做相机轨道,再重投影网格/关键点/关节,内置关键帧编辑器(左键拖相机标记改 azimuth/elevation、滚轮 dolly、右键加/删关键帧、linear 直线段 / smooth Catmull-Rom 插值、azimuth 走最短路径跨 ±180°)。节点顺序:Detect Shape → Body Type Preset → Apply Shape → Drive Camera → Render 3D Body Pose;要导出原始身体动作(而非烘焙视角)时,从"相机之前"的分支取 GLB/BVH。 注意:这是轨道相机(绕主体转),做不到"相机穿模/穿缝"——真正的穿透式运镜还是得 Blender。 适合:环绕、推拉、Dolly 这类"看得清主体"的运镜,且不想装 Blender。
附加选项(没有驱动视频时):动作可以由 NVIDIA Kimodo 文生动作生成(ComfyUI-Kimodo-Bridge:文生动作 → Mixamo FBX / Unity Humanoid / BVH 导出),即"文字描述动作 → 3D 角色 → Blender 相机 → H3 渲染"。
# ① SAM 3D Body 权重(GPU 机,走 hf-mirror)
export HF_ENDPOINT=https://hf-mirror.com
# detection/
# sam_3d_body_dinov3_bf16.safetensors 2699.6 MiB
# (或 int8_convrot 版 1901.7 MiB)
# checkpoints/ sam3.1_multiplex_fp16.safetensors 1664.7 MiB
# diffusion_models/ rt_detr_v4-x-hgnet_fp32.safetensors 236.3 MiB
# geometry_estimation/moge_2_vitl_normal_fp16.safetensors 631.2 MiB(可选)
# ② Blender(本机经代理下载 → scp 到 GPU 机;GPU 机直连 blender.org 返回 403)
# blender-4.5.9-linux-x64.tar.xz(LTS 稳)或 blender-5.2.2-linux-x64.tar.xz(最新)
# 解包到 /home/zyw/blender-4.5.9-linux-x64/,用 ./blender -b 跑后台渲染
建议的验证顺序:先跑官方 utility_sam3d_body.json 模板确认模型链路通(输出 output/video/SAM3D_body/)→ 再导一次 format=bvh 和 mesh_style=body_mesh 的 GLB,确认 Blender 能导入且骨架/表情正常 → 再搭一个 5 秒单镜头、带一个穿透遮挡的白模 → 最后才喂 H3 Ref2V。
BuildPoseFile 节点:https://docs.comfy.org/built-in-nodes/BuildPoseFile../57-H3白模红模素材参考调研/H3白模红模素材参考能力核查-20260927.md../57-H3白模红模素材参考调研/H3素材驱动-开源项目盘点-20260927.md../56-抖音视频下载/02_L_去年夏天-白膜素材_1080x1920.mp4、03_L_复仇摇-ai素材_720x1280.mp4../10-视频生成流水线/H3换人视频-部署与实测报告-20260914.md、H3长视频分段合成方法-20260914.mdComfyUI/user/default/workflows/H3官方工作流/Director-rv2v.json