ComfyUI-3D-Pack:Windows 下手动编译 mesh_inpaint_processor C++ 加速模块

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 功能,值得花两分钟编一下,省得每次看到那三个感叹号不舒服。

相关推荐
uzong2 小时前
“腾讯QClaw全面开放”,不花 Token 钱、真正体验一把小龙虾的快乐,最低成本全面了解龙虾
人工智能·后端
楼田莉子2 小时前
C++高并发内存池:内存池调优与测试
c++·后端·哈希算法·visual studio
vx_biyesheji00012 小时前
计算机毕业设计:Python多源新闻数据智能舆情挖掘平台 Flask框架 爬虫 SnowNLP ARIMA 可视化 数据分析 大数据(建议收藏)✅
爬虫·python·机器学习·数据分析·django·flask·课程设计
剑穗挂着新流苏3122 小时前
111_神经网络的指路明灯:损失函数与反向传播深度解析
人工智能·深度学习·神经网络
m0_587958952 小时前
机器学习与人工智能
jvm·数据库·python
2501_908329852 小时前
Python入门:从零到一的第一个程序
jvm·数据库·python
ofoxcoding2 小时前
怎么用 API 搭一个 AI 客服机器人?从零到上线的完整方案
人工智能·ai·机器人
雾隐潇湘2 小时前
C++——第三篇 继承与多态
开发语言·c++
阿贵---2 小时前
分布式系统C++实现
开发语言·c++·算法