ComfyUI-3D-Pack:Windows 下手动编译 mesh_inpaint_processor C++ 加速模块
环境:Windows 11 / RTX 3090 / Python 3.12 / VS 2022 / ComfyUI 0.18.0 + ComfyUI-3D-Pack

Windows ComfyUI 解决 xFormers 版本不匹配导致 ComfyUI-3D-Pack 加载失败
修复 ComfyUI-3D-Pack 在 Python 3.12 下的 SyntaxWarning 警告
ComfyUI-3D-Pack Windows 11 安装完全指南ComfyUI-3D-Pack: Complete Installation Guide for Windows 11
ComfyUI-3D-Pack 补充依赖完全指南ComfyUI-3D-Pack: Supplementary Dependencies Guide for Windows 11
ComfyUI-3D-Pack 六大依赖安装总览ComfyUI-3D-Pack: Complete Dependency Installation Guide for Windows 11
ComfyUI Hunyuan-3D-2 插件安装问题解决方案
Win11+RTX3090 亲测 · ComfyUI Hunyuan3D 全程实录 ③:diso 源码编译实战(CUDA 13.1 零降级)
Win11+RTX3090 亲测 · ComfyUI Hunyuan3D 全程实录 ②:nvdiffrast 源码编译实战(CUDA 13.1 零降级)
Win11+RTX3090 亲测 · ComfyUI Hunyuan3D 全程实录 ①:依赖安装完全指南(requirements_extras.txt 深度解析)
Win11 + RTX 3090 亲测:ComfyUI Hunyuan3D 自定义光栅化器编译全记录(CUDA 13.1 vs PyTorch 12.6 完美绕过)
起因
升级 ComfyUI 到 0.18.0 之后重启,盯着启动日志往下看,发现这么一行:
[WARNING] Using Python fallback mesh_inpaint_processor (slower)
InPaint Function CAN NOT BE Imported!!!

CAN NOT BE Imported!!! 三个感叹号,看着就很刺眼。实际上功能是可用的,只是走了 Python 的 fallback 实现,速度比 C++ 版慢。
既然有源码,那就编一个出来。
定位源码
日志里提示要运行 compile_mesh_painter.bat,但它说的路径根本不存在。搜了一下,bat 文件实际在这里:
custom_nodes\ComfyUI-3D-Pack\Gen_3D_Modules\Hunyuan3D_2_1\hy3dpaint\DifferentiableRenderer\compile_mesh_painter.bat
打开一看,是用 cl.exe 直接编译的,但路径写死了 VS 2019 的 BuildTools,直接跑肯定不行。好在 C++ 源码就在同目录:
mesh_inpaint_processor.cpp
自己手动编就行。

编译步骤
前置条件
- Visual Studio 2022(需要 C++ 桌面开发工作负载)
- 在 VS 2022 Developer Shell x64 里操作(不是普通 PowerShell)
第一步:获取 Python 头文件路径
# 激活你的 venv,然后执行
python -c "import sysconfig; print(sysconfig.get_path('include'))"
# 输出示例:D:\A\envs\py312\Include
python -c "import sys; print(sys.prefix)"
# 输出示例:H:\PythonProjects3\Win_ComfyUI\.venv
Python 的 .lib 文件在 Conda 父级(EPGF 架构) 环境的 libs 目录下:
ls D:\A\envs\py312\libs
# python312.lib ← 这个就是需要的
第二步:获取 pybind11 头文件路径
mesh_inpaint_processor.cpp 依赖 pybind11,需要把它的 include 路径也加上:
python -c "import pybind11; print(pybind11.get_include())"
# 输出示例:H:\PythonProjects3\Win_ComfyUI\.venv\Lib\site-packages\pybind11\include
如果提示 ModuleNotFoundError,先安装:
pip install pybind11

第三步:编译
进入源码目录,在 VS 2022 Developer Shell x64 里执行(注意:PowerShell 里换行要用反引号,或者直接写一行):
cd "custom_nodes\ComfyUI-3D-Pack\Gen_3D_Modules\Hunyuan3D_2_1\hy3dpaint\DifferentiableRenderer"
cl /O2 /LD /EHsc /MD /I "D:\A\envs\py312\Include" /I "H:\PythonProjects3\Win_ComfyUI\.venv\Lib\site-packages\pybind11\include" mesh_inpaint_processor.cpp /link /OUT:mesh_inpaint_processor.pyd /LIBPATH:"D:\A\envs\py312\libs" python312.lib
⚠️ 注意 :
/I后面的两个路径要替换成你自己的实际路径。
编译成功的输出大概是这样:
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.42.34444 版
mesh_inpaint_processor.cpp
正在创建库 mesh_inpaint_processor.lib 和对象 mesh_inpaint_processor.exp
没有 error 就是成功了,目录里会生成 mesh_inpaint_processor.pyd。

第四步:复制到正确位置
copy mesh_inpaint_processor.pyd ..\mesh_inpaint_wheel\mesh_inpaint_processor\

验证
重启 ComfyUI,启动日志里原来的 WARNING 变成了:
[INFO] Using compiled C++ mesh_inpaint_processor (fast)
fast 出现了,搞定。

踩坑记录
坑1:bat 文件不在日志提示的位置
日志说运行 compile_mesh_painter.bat,但没给出完整路径。实际位置在 DifferentiableRenderer 子目录里,不是 Hunyuan3D_2_1 根目录。
坑2:^ 换行符在 PowerShell 里不生效
原 bat 文件里用 ^ 做多行续行,这是 cmd 语法。在 PowerShell 里要改成反引号 `````,或者把命令写成一行。
坑3:漏掉 pybind11 的 include 路径
第一次编译只加了 Python 的 include,报错:
fatal error C1083: 无法打开包括文件: "pybind11/numpy.h": No such file or directory
加上 pybind11.get_include() 返回的路径就解决了。
小结
这个模块官方没有提供 Windows 预编译 wheel,源码也只有一个 .cpp 文件,依赖很简单(Python + pybind11),在 VS 2022 下几条命令就能编出来。如果你也在用 ComfyUI-3D-Pack 的 Hunyuan3D 功能,值得花两分钟编一下,省得每次看到那三个感叹号不舒服。