在Threejs导入并显示点云数据
最近在项目中遇到需求,需要在web端显示点云数据。将我的实现步骤介绍在这里供大家参考。我使用的是threejs开源库,最终实现
1. 数据格式
原本是点云数据是ply格式的。在threejs中有ply导入的loader,经过简略的阅读和学习。我只找到了它加载mesh文件的支持函数,对于点云没有找到相关的支持。于是我就考虑使用对html来说更容易读取的json格式存储和导入点云数据。
值得一提的是,json文件占用空间会更大,如果有时间我也希望可以使用一些二进制的存储方式,但是在这里只是为了实现,暂时不考虑太多效率方面的问题。
于是我使用C++,先将ply文件转写成json文件。
1.1 jsoncpp
C++上使用的是jsoncpp,但是cmakelist配置遇到了一点问题。最后综合了许多回答。加载了头文件之后,我自己在电脑中找到了静态库文件加载到了项目中。可能不是很优美,但是可以完美的运行和使用了。
find_package(PkgConfig REQUIRED)
pkg_check_modules(JSONCPP jsoncpp)
include_directories(
${JSONCPP_INCLUDE_DIRS}
)
target_link_libraries(example
/usr/local/lib/libjsoncpp.a
)