使用Potree渲染大规模点云-踩坑记录
最近在研究点云渲染 想自己在本地搭建环境跑起来玩玩,不料坑真是多。花了我三天时间折腾,快要放弃的时候,终于搞好了。中间真是走了不少弯路,先是在mac上跑没成功,觉得是因为环境问题,又去折腾虚拟机,用别人构建好的docker也没成功。编译总是出各种错,改c++源代码,功夫不负有心人,终于搞好了。
---------------- 2020年12月15日更新docker镜像--------------------------
鉴于有很多小伙伴在搭建环境时,总是遇到各种各样的问题 ,我觉得很浪费时间。 为此我制作了一个docker镜像,免去搭建环境的烦恼。
确保本地装有docker环境
我报的错并不是这个,而是filesystem缺失 反而有 experimental/filesystem fatal error: 'filesystem' file not found 我直接魔改源代码 直接改成了 #include
记得同时改掉命名空间
namespace fs = std::experimental::filesystem;
//编译成功之后
./PotreeConverter -h //查看相关的参数
//此处还有一个隐藏坑
//我们明明编译好了PotreeConverter工具,但是会报这样的一个错,原因是我们的终端字符集编码的问题
// what(): locale::facet::_S_create_c_locale name not valid
//解决的办法:https://github.com/potree/PotreeConverter/issues/281
export LC_ALL="zh_CN.GBK"
//实例:把las文件导出成为n个100kb大小的las文件
./PotreeConverter /Users/hejinlong/Desktop/las/a.las -o /Users/hejinlong/Desktop/las/change -p leida --output-format LAS
分割好las之后就可以导入potree项目使用
https://github.com/potree/potree
效果截图:(嘻嘻 小伙伴看出来这是哪里了吗)
最后还是不得不对于这次踩坑总觉一下
1. 遇到问题还是要耐心,坚持就是胜利
2. 遇到技术问题还是要多google
3. c++还是要再加强学习一下
docker pull zt123123/potree-convert-ubuntu:latest运行容器后,可直接执行PotreeConverter命令 此命令已经软连接到全局环境了 如果你不想踩坑,直接用镜像就好了,可以不用往下看了....... ---------------- 正文开始---------------- //Potree 介绍 //开源初探 https://blog.csdn.net/jz_x/article/details/78899357 //依赖的三方库 https://www.cnblogs.com/wema/p/7052980.html //PotreeConverter 安装过程 https://github.com/potree/PotreeConverter linux / gcc 4.9 //安装lastools lastools (from fork with cmake) cd ~/dev/workspaces/lastools git clone https://github.com/m-schuetz/LAStools.git master cd master/LASzip mkdir build cd build //安装没有cmake要安装cmake cmake -DCMAKE_BUILD_TYPE=Release ..//配置cmake make //安装PotreeConverter PotreeConverter cd ~/dev/workspaces/PotreeConverter git clone https://github.com/potree/PotreeConverter.git master cd master (这里有个坑,默认分支是develop, 记得切换成master,否则后续cmake 会提示没有cmake.list清单文件。我猜想这里可能是在开发当中,还没来得及加上。后续如果有的话,就不用切换分支了) mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release -DLASZIP_INCLUDE_DIRS=~/dev/workspaces/lastools/master/LASzip/dll -DLASZIP_LIBRARY=~/dev/workspaces/lastools/master/LASzip/build/src/liblaszip.so .. make //这个步骤有几个坑: //1.如果你是Mac OS 的电脑,你的电脑在编译lastools的时候,生成的文件叫liblaszip.dylib,而不是liblaszip.so,要不然会提示文件不存在 //2.cmake完成之后,进行到最后一步make的时候,会报一个致命错误 // fatal error: 'experimental/filesystem' file not found #260 //3. 路径要写成绝对路径(巨坑!!!) ~/dev/workspaces 替换成相应的 /Users/xxx/dev/workspaces //google一把,最后发现在github的issues里面人家早就发现这个问题了,人家早就列出了这个问题,也是醉了 //问题出在如果我们cmake的时候不指定gcc的路径,那么,cmake默认使用将是苹果公司的gcc版本,里面会缺少这个库 //解决的办法 cmake -DCMAKE_C_COMPILER=/usr/local/Cellar/gcc/8.1.0/bin/gcc-8 -DCMAKE_CXX_COMPILER=/usr/local/Cellar/gcc/8.1.0/bin/g++-8 -DCMAKE_BUILD_TYPE=Release -DLASZIP_INCLUDE_DIRS=/Users/hejinlong/Desktop/LAStools/master/LASzip/dll -DLASZIP_LIBRARY=/Users/hejinlong/Desktop/LAStools/master/LASzip/build/src/liblaszip.dylib .. //根据自己的gcc版本而定 4. 编译的时候可能还会遇到一个错误 ‘Potree::Point&’ from an rvalue of type ‘Potree::Point’ writer->write(reader->getPoint()); 原谅我太菜 c++不是很熟, 不然这个问题一眼就能看出来 再次goole得以解决 详情见 https://github.com/potree/PotreeConverter/issues/382 解决办法如下 Potree::Point point = reader->getPoint(); writer->write(point); 上述办法我没试验成功,我用了另一种方式
我报的错并不是这个,而是filesystem缺失 反而有 experimental/filesystem fatal error: 'filesystem' file not found 我直接魔改源代码 直接改成了 #include