当前位置: 首页 > news >正文

windows11环境配置psbody_mesh库编译安装详细教程

windows11环境配置psbody_mesh库编译安装详细教程

文章目录

  • windows11环境配置psbody_mesh库编译安装详细教程
  • 前言
  • 必要依赖准备
  • 编译安装psbody_mesh
  • 总结


前言

psbody_mesh 【官方代码】是一个专注于处理与操作3D人体网格数据的Python库,特别是提供了高效、便捷的数据结构、核心几何操作、变形模型接口以及可视化工具:提供基于NumPy和PyTorch的、高度优化的3D网格核心操作(包含数据结构、IO、变形、可视化和几何计算)的实现;作为底层工具包,显著简化和加速3D人体建模、动画、姿态估计以及形状分析等任务中涉及网格处理的复杂流程,为构建更高级、可扩展的人体数字化研究与应用框架提供基础支撑。

参考:
CGAL:Win10 + VS2017 编译 CGAL 5.2
在windows系统的python3.9的解释器中成功安装psbody_mesh包
DiffSpeaker 部署踩坑笔记


必要依赖准备

1.安装 生成工具2019
【Visual Studio安装配置教程】
勾选 “使用 C++ 的桌面开发” 组件,确保包含:
MSVC v142 - VS 2029 C++ x86/64 生成工具(最新)
Windows 10 SDK
C++ CMake 工具

2.anaconda虚拟环境配置
这个psbody_mesh点云库需要安装许多库,如果在原来的环境进行的话会覆盖掉,所以最好新建一个环境。python最好选择3.5及以上,使用anaconda新建psbody_mesh虚拟环境:

conda create -n psbody_mesh python=3.9
activate psbody_mesh
# 通过阿里源安装,安装第三方依赖包
pip install -i https://mirrors.aliyun.com/pypi/simple/  setuptools numpy==1.22.4 matplotlib scipy pyopengl pillow pyzmq pyyaml opencv-python

3.编译Boost库
从Boost官网下载最新源码(博主是boost_1_85_0.zip)并解压到在合适的路径(博主在F:\boost_1_85_0)。
以管理者身份打开"x64 Native Tools Command Prompt for VS 2019"终端(安装VS 2019),输入以下指令:

# 进入解压目录目录下
cd F:\boost_1_85_0
# 这个指令段在 x64 Native Tools Command Prompt for VS 2019
set DISTUTILS_USE_SDK=1
#  Windows系统直接运行bootstrap.bat:生成构建工具b2本身
.\bootstrap.bat
# 安装和构建 Boost 库
.\b2.exe --toolset=msvc-14.2 --prefix=F:\boost_1_85_0\build address-model=64 link=shared threading=multi install -j8
# --toolset=msvc-14.2:指定使用 MSVC 14.2 工具集
# --prefix=F:\boost_1_85_0\build:指定安装前缀,构建后的头文件和库将被复制到此目录下
# address-model=64:构建 64 位版本
# link=shared:构建动态链接库(DLL)
# threading=multi:构建多线程版本的库
# -j8:使用 8 个线程进行并行构建

4.编译CGAL库
下载psbody_mesh源码到合适的路径(博主在F:\mesh)

# 下载githup源代码到合适文件夹,并cd到代码文件夹内(科学上网)
git clone https://github.com/MPI-IS/mesh.git --recursive
# 中途下载中断
git submodule update --init --recursive

在mesh库的在thirdparty路径下自带了CGAL库(CGAL-4.7),这里进行解压:

进入CGAL-4.7\auxiliary\gmp路径下 ,这里是空的,README的内容说明还需要额外的GMP和 MPFR 库。

# 如果使用 Windows 安装程序,该目录将包含 GMP 和 MPFR 库的头文件和预编译库。
If the Windows installer is used, this directory will contain headers and
precompiled libraries of the GMP and MPFR libraries.


下载GMP and MPFR libraries, for Windows 64bits.zip是两个必需依赖库【官方地址】

将GMP and MPFR libraries解压后的gmp文件夹复制到 CGAL-4.7\auxiliary\gmp文件夹中:

# CGAL编译需要依赖于Boost库
# 设置是临时环境变量,只在当前CMD窗口有效
set BOOST_ROOT=F:\boost_1_85_0\build
set INCLUDE=%INCLUDE%;F:\boost_1_85_0\build\include\boost-1_85
set LIB=%LIB%;F:\boost_1_85_0\libs
# 查看临时环境变量是否设置成功
echo %BOOST_ROOT%
echo %INCLUDE%
echo %LIB%
# 进入CGAL-4.7工程
cd CGAL-4.7
# 创建build目录并进入
mkdir build && cd build
# 生成构建系统
cmake ..


打开CGAL.sln,在release|x64模式下,在解决方案资源管理器—>右键点击ALL_BUILD–>生成。

没有任何报错信息就是编译完成,在build 文件夹下生成bin、lib俩个关键文件夹件。


编译安装psbody_mesh

1.修改mesh工程下的setup.py文件部分内容
修改前的代码段:

def _get_all_extensions():try:import numpyexcept:return []# valid only for gcc/clangextra_args = ['-O3']import sysif sys.platform.find('linux') > -1:extra_args += ['-fopenmp']  # openmp not supported on OSXdefine_macros = [('NDEBUG', '1')]define_macros_mesh_ext_without_cgal_link = [('CGAL_NDEBUG', 1),('MESH_CGAL_AVOID_COMPILED_VERSION', 1),('CGAL_HAS_NO_THREADS', 1),('CGAL_NO_AUTOLINK_CGAL', 1)]undef_macros = []package_name_and_srcs = [('aabb_normals', ['mesh/src/aabb_normals.cpp'], define_macros_mesh_ext_without_cgal_link),('spatialsearch', ['mesh/src/spatialsearchmodule.cpp'], define_macros_mesh_ext_without_cgal_link),('visibility', ['mesh/src/py_visibility.cpp', 'mesh/src/visibility.cpp'], define_macros_mesh_ext_without_cgal_link),('serialization.plyutils', ['mesh/src/plyutils.c', 'mesh/src/rply.c'], []),('serialization.loadobj', ['mesh/src/py_loadobj.cpp'], []),]out = []for current_package_name, src_list, additional_defines in package_name_and_srcs:ext = _Extension("%s.mesh.%s" % (namespace_package, current_package_name),src_list,language="c++",include_dirs=['mesh/src', numpy.get_include()],libraries=[],define_macros=define_macros + additional_defines,undef_macros=undef_macros,extra_compile_args=extra_args,extra_link_args=extra_args)out += [ext]return out

修改后的代码段:

1.注释 # (‘CGAL_NO_AUTOLINK_CGAL’, 1)
2.根据前面内容,更改成CGAL的include和lib的对应路径:cgal_include_path 和cgal_lib_path ;更改成GMP的include和lib的对应路径:gmp_include_path 和gmp_lib_path。

def _get_all_extensions():try:import numpyexcept:return []# valid only for gcc/clangextra_args = ['-O3']import sysif sys.platform.find('linux') > -1:extra_args += ['-fopenmp']  # openmp not supported on OSXdefine_macros = [('NDEBUG', '1')]define_macros_mesh_ext_without_cgal_link = [('CGAL_NDEBUG', 1),('MESH_CGAL_AVOID_COMPILED_VERSION', 1),('CGAL_HAS_NO_THREADS', 1),# ('CGAL_NO_AUTOLINK_CGAL', 1)]undef_macros = []package_name_and_srcs = [('aabb_normals', ['mesh/src/aabb_normals.cpp'], define_macros_mesh_ext_without_cgal_link),('spatialsearch', ['mesh/src/spatialsearchmodule.cpp'], define_macros_mesh_ext_without_cgal_link),('visibility', ['mesh/src/py_visibility.cpp', 'mesh/src/visibility.cpp'], define_macros_mesh_ext_without_cgal_link),('serialization.plyutils', ['mesh/src/plyutils.c', 'mesh/src/rply.c'], []),('serialization.loadobj', ['mesh/src/py_loadobj.cpp'], []),]out = []for current_package_name, src_list, additional_defines in package_name_and_srcs:# 为需要CGAL的扩展设置额外的链接选项libraries = []library_dirs = []extra_link_args = extra_args[:]  # 复制基础链接参数# 仅对需要CGAL的模块添加链接选项if additional_defines == define_macros_mesh_ext_without_cgal_link:if sys.platform == 'win32':# 根据自己实际路径修改cgal_lib_path = r'F:\mesh\mesh\thirdparty\CGAL-4.7\build\lib'gmp_lib_path = r'F:\mesh\mesh\thirdparty\CGAL-4.7\auxiliary\gmp\lib'# 使用实际文件名(不带扩展名)cgal_lib = 'CGAL-vc140-mt-4.7'gmp_lib = 'libgmp-10'mpfr_lib = 'libmpfr-4'libraries = [cgal_lib, gmp_lib, mpfr_lib]library_dirs = [cgal_lib_path, gmp_lib_path]#添加 / MANIFEST: NOextra_link_args += ['/MANIFEST:NO']# # 根据自己实际路径修改cgal_include_path = r'F:\mesh\mesh\thirdparty\CGAL-4.7\build\include'gmp_include_path = r'F:\mesh\mesh\thirdparty\CGAL-4.7\auxiliary\gmp\include'include_dirs = ['mesh/src',numpy.get_include(),cgal_include_path,gmp_include_path]ext = _Extension("%s.mesh.%s" % (namespace_package, current_package_name),src_list,language="c++",include_dirs=include_dirs,libraries=libraries,library_dirs=library_dirs,define_macros=define_macros + additional_defines,undef_macros=undef_macros,extra_compile_args=extra_args,extra_link_args=extra_args)out += [ext]return out

2.编译安装psbody

# 进入mesh工程目录
cd mesh
# 激活虚拟环境
activate psbody_mesh
# 执行编设置是临时环境变量,只在当前CMD窗口有效
set BOOST_ROOT=F:\boost_1_85_0\build
set INCLUDE=%INCLUDE%;F:\boost_1_85_0\build\include\boost-1_85
set LIB=%LIB%;F:\boost_1_85_0\libs
# 执行编译
python setup.py install

出现错误"F:\mesh\mesh\src\AABB_n_tree.h(9): fatal error C1083: 无法打开包括文件: “CGAL/AABB_tree.h”: No such file or directory",只需要把上面的CGAL-4.7拷贝到mesh\build\temp.win-amd64-cpython-39\Release路径下,重新再执行编译即可。

pip list


总结

尽可能简单、详细的介绍windows11环境配置psbody_mesh库编译安装详细教程。

http://www.lryc.cn/news/604450.html

相关文章:

  • MySQL设置为严格模式
  • Kubernetes 中 ConfigMap 与 Secret 的深度解析
  • [leetcode] 反转字符串中的单词
  • Syzkaller实战教程2:运行环境配置+实例运行
  • 小程序端基于 AI 的语音交互功能深度开发
  • 《计算机组成原理与汇编语言程序设计》实验报告六 存储器实验
  • 【C++】类和对象(中)拷贝构造、赋值重载
  • 自动驾驶车辆的敏捷安全档案
  • PAES算法求解 ZDT1 双目标优化问题
  • 实例教学FPN原理与PANet,Pytorch逐行精讲实现
  • AUTO TECH 2025广州电动车/混合动力车展:新能源汽车的时代交响
  • 无刷电机在汽车领域的应用与驱动编程技术
  • 河南萌新联赛2025第(三)场:河南理工大学【补题】
  • cpp c++面试常考算法题汇总
  • 汽车、航空航天、适用工业虚拟装配解决方案
  • 爱车生活汽车GPS定位器:智能监控与安全驾驶的守护者
  • aws(学习笔记第五十课) ECS集中练习(2)
  • arkui 动画曲线
  • 【python 获取邮箱验证码】模拟登录并获取163邮箱验证码,仅供学习!仅供测试!仅供交流!
  • 【go】实现BMI计算小程序与GUI/WEB端实现
  • python案例分析:基于抖音评论的文本分析,使用svm算法进行情感分析以及LDA主题分析,准确率接近90%
  • 相亲小程序聊天与互动系统模块搭建
  • 鹏哥C语言_82_指针_指针数组
  • 构建智能体(Agent)时如何有效管理其上下文
  • 大语言模型(LLM)技术架构与工程实践:从原理到部署
  • 基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(二)
  • 【Lua】元表常用属性
  • PCB学习笔记(一)
  • 【Python系列】如何安装无 GIL 的 Python 3.13
  • dify 添加 ollama 模型报错