1、Cmake configure 后会有部分第三方依赖库无法下载,可自行在github 或官网下载后添加到 3rdparty文件夹中对应的第三方库文件夹中,需要注意的是拷贝路径要与3rdparty文件夹中原有的路径一致
2、ippcv
3、geometry编译时报错 ,其中两个关键的报警是下面两个,解决办法参照,intel-isl/open3d issue 2885 中的解决办法
open3d::geometry::line3d 没有成员transform,
planes使用未定义的class std::array<plane_t,6>
https://github.com/intel-isl/Open3D/pull/2885/commits/a27fbebe3e5df8df1a38061ce95b65bfc48bb415
@@ -1,5 +1,6 @@ | |||
#include "Line3D.h" | #include "Line3D.h" | ||
#include <array> | |||
#include <cmath> | #include <cmath> | ||
namespace open3d { | namespace open3d { | ||
@@ -27,7 +28,8 @@ Line3D::Line3D(const Eigen::Vector3d& origin, | |||
} | } | ||
void Line3D::Transform(const Eigen::Transform<double, 3, Eigen::Affine>& t) { | void Line3D::Transform(const Eigen::Transform<double, 3, Eigen::Affine>& t) { | ||
this->transform(t); | direction() = (t * direction()).normalized(); | ||
origin() = t * origin(); | |||
} | } | ||
std::pair<double, double> Line3D::SlabAABBBase( | std::pair<double, double> Line3D::SlabAABBBase( | ||
@@ -87,12 +89,12 @@ utility::optional<double> Line3D::ExactAABB( | |||
box.max_bound_ + Vector3d(tol, tol, tol)}; | box.max_bound_ + Vector3d(tol, tol, tol)}; | ||
using plane_t = Eigen::Hyperplane<double, 3>; | using plane_t = Eigen::Hyperplane<double, 3>; | ||
std::array<plane_t, 6> planes{{{{-1, 0, 0}, box.min_bound_}, | std::array<plane_t, 6> planes{plane_t{Vector3d{-1, 0, 0}, box.min_bound_}, | ||
{{1, 0, 0}, box.max_bound_}, | plane_t{Vector3d{1, 0, 0}, box.max_bound_}, | ||
{{0, -1, 0}, box.min_bound_}, | plane_t{Vector3d{0, -1, 0}, box.min_bound_}, | ||
{{0, 1, 0}, box.max_bound_}, | plane_t{Vector3d{0, 1, 0}, box.max_bound_}, | ||
{{0, 0, -1}, box.min_bound_}, | plane_t{Vector3d{0, 0, -1}, box.min_bound_}, | ||
{{0, 0, 1}, box.max_bound_}}}; | plane_t{Vector3d{0, 0, 1}, box.max_bound_}}; | ||
// Get the intersections | // Get the intersections | ||
std::vector<double> parameters; | std::vector<double> parameters; | ||
@@ -321,7 +323,7 @@ Segment3D::Segment3D(const std::pair<Eigen::Vector3d, Eigen::Vector3d>& pair) | |||
: Segment3D(std::get<0>(pair), std::get<1>(pair)) {} | : Segment3D(std::get<0>(pair), std::get<1>(pair)) {} | ||
void Segment3D::Transform(const Eigen::Transform<double, 3, Eigen::Affine>& t) { | void Segment3D::Transform(const Eigen::Transform<double, 3, Eigen::Affine>& t) { | ||
this->transform(t); | this->Transform(t); | ||
end_point_ = t * end_point_; | end_point_ = t * end_point_; | ||
} | } | ||
4、jason 报错
[100%] Performing patch step for 'ext_jsoncpp'
error: patch failed: CMakeLists.txt:22
error: CMakeLists.txt: patch does not apply
error: patch failed: src/lib_json/CMakeLists.txt:125
error: src/lib_json/CMakeLists.txt: patch does not apply
make[3]: *** [CMakeFiles/ext_jsoncpp.dir/build.make:120: jsonc
https://github.com/intel-isl/Open3D/issues/3053
remove the build/jsoncpp
folder and rebuild.
5、Eigen报错 Eigen::eigen_assert_exception missing from includes of src/Core/products/Parallelizer.h
在一个国外论坛中找到解决办法
https://gitlab.com/libeigen/eigen/-/commit/ef3cc72cb65e2d500459c178c63e349bacfa834f
这个bug应该是Eigen 3.3.8 的bug