• 使用Potree渲染大规模点云-踩坑记录


    最近在研究点云渲染 想自己在本地搭建环境跑起来玩玩,不料坑真是多。花了我三天时间折腾,快要放弃的时候,终于搞好了。中间真是走了不少弯路,先是在mac上跑没成功,觉得是因为环境问题,又去折腾虚拟机,用别人构建好的docker也没成功。编译总是出各种错,改c++源代码,功夫不负有心人,终于搞好了。
     
    ---------------- 2020年12月15日更新docker镜像--------------------------
    鉴于有很多小伙伴在搭建环境时,总是遇到各种各样的问题 ,我觉得很浪费时间。 为此我制作了一个docker镜像,免去搭建环境的烦恼。
    确保本地装有docker环境
    docker pull zt123123/potree-convert-ubuntu:latest
    运行容器后,可直接执行PotreeConverter命令
    此命令已经软连接到全局环境了
    如果你不想踩坑,直接用镜像就好了,可以不用往下看了.......
     
     
    ---------------- 正文开始----------------
    //Potree 介绍
    //开源初探
    //依赖的三方库
     
    //PotreeConverter 安装过程
     
    linux / gcc 4.9
    //安装lastools
    lastools (from fork with cmake)
     
    cd ~/dev/workspaces/lastools
    cd master/LASzip
    mkdir build
    cd build
     
    //安装没有cmake要安装cmake
    cmake -DCMAKE_BUILD_TYPE=Release ..//配置cmake
    make
     
     
    //安装PotreeConverter
    PotreeConverter
     
    cd ~/dev/workspaces/PotreeConverter
    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得以解决
    解决办法如下
    Potree::Point point = reader->getPoint();
    writer->write(point);
     
    上述办法我没试验成功,我用了另一种方式
    我报的错并不是这个,而是filesystem缺失 反而有 experimental/filesystem
    fatal error: 'filesystem' file not found 
    我直接魔改源代码 直接改成了 #include<experimental/filesystem>
    记得同时改掉命名空间
    namespace fs = std::experimental::filesystem;
     
    //编译成功之后
    ./PotreeConverter -h //查看相关的参数
     
    //此处还有一个隐藏坑
    //我们明明编译好了PotreeConverter工具,但是会报这样的一个错,原因是我们的终端字符集编码的问题
    //  what(): locale::facet::_S_create_c_locale name not valid
    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++还是要再加强学习一下
  • 相关阅读:
    P3916 图的遍历 dfs
    P4568 [JLOI2011]飞行路线 分层图最短路
    P1948 [USACO08JAN]电话线Telephone Lines spfa 二分答案
    P1849 [USACO12MAR]拖拉机Tractor bfs
    P1730 最小密度路径 floyed
    P1661 扩散 二分答案 并查集
    使用unittest和Django搭配写一个接口测试平台
    AJAX解决跨域的几种方式
    Django
    基于pytest框架自动化测试脚本的编写
  • 原文地址:https://www.cnblogs.com/zt123123/p/13531581.html
Copyright © 2020-2023  润新知