文章目录
前言
现在官网上的open3d放出来的下载包,都是编译好的默认cpu版本的dll和lib库,对于不想麻烦的可以直接去下载编译好的Open3d包,但对于有GPU需求的童鞋不太友好,所以在此放出open3d-gpu版的编译过程、遇到的bug以及相应的解决方案,文末也会放出编译好的GPU版的open3d的动态库Dll和静态库文件。
编译前的准备
源码下载:Open3d Github链接,下载好压缩包后解压,也可以使用命令:git clone https://github.com/isl-org/Open3D.git 然后在项目目录中新建文件夹:build(随便什么名字都可以 记住路径就行);修改Open3d中的CMakeLists.txt文件,修改地方有:
BUILD_CUDA_MODULE=ON BUILD_COMMON_CUDA_ARCHS=ON BUILD_ISPC_MODULE=OFF BUILD_WEBRTC=OFF BUILD_SHARED_LIBS=ON
其他软件版本:
- cmake = 3.25.3
- python = 3.9.12
- visual studio = 2019 community
- Open3d = 0.17.0
编译过程
可以使用cmake-GUI,也可以使用cmd在终端中进行编译,前者更方便更改编译选项,但因为网络问题,我使用的是后者:
cd build#跳转到你创建的build路径
cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="." ..
解决完过程中出现的Bug,再进行下一步:
cmake --build . --config Release --target ALL_BUILD
cmake --build . --config Release --target INSTALL
这一步会生成所有需要的Lib文件以及Open3d.dll文件,也比较耗时,需要下载许多第三方库,编译过程中遇到的大部分Bug也是由于这些第三方库没有成功下载。
编译过程中遇到的bug
1.下载超时问题,curl、filament、ispc、zeromq包等。
这些三方库可以先离线下载,然后将压缩包放到Open3D\3rdparty_downloads对应的包名目录下,再重新进行编译。
2. DirectXMath、DirectXHeaders包问题。
通过离线下载的方式,将DirectX-Headers和DirectXMath两个项目clone下来,在Open3D\build\uvatlas\src分别新建ext_directxheaders和ext_directxmath,将两个项目分别放到这两个目录下,再重新编译。
3. pytorch版本问题。
open3d 0.17.0不支持torch2.0以上的版本,但Open3d 0.18.0支持。