cloudcompare加载海量点云

动态加载海量点云

1.简介

实验数据:点云总数>6亿   

         设计思路大概如下:

cloudcompare加载海量点云_第1张图片

 
 

2.内容

2.1. 构造八叉树

为了保证数据无冗余,每个节点中都存储了数据。

数据量可压缩到原始数据的1/3-1/2。

2.2. 动态显示

动态显示部分,基于cloudcompare开发了一个插件。

(1)目前是主线程做渲染交互,开了其他线程做数据读取和加载。

最开始渲染准备也用一个线程,但受限于cloudcompare目前暂时不支持多线程渲染,2.6.3版本中有部分多线程的代码,我修改之后可以实现渲染,但由于删除一个节点的点云时,其顶点的VBO缓存也需要释放,否则会导致内存泄漏,这时就会造成QGLContextmake current failed的错误,导致再也无法构造顶点vbo,渲染界面卡死。该问题目前暂时未能解决,和cloudcompare的作者发了邮件,他建议使用最新版本2.9和参考qt5.0以上的版本。

目前采用主线程渲染,为了防止过多的刷新,仅在有gui操作时才进行重绘。

(2)为了防止提高效率,缓存了一部分数据,数据缓存采取了LRU的机制。

3.总结

(1)后期可采用多线程渲染的方式,加快渲染效率。

(2)目前加载时,八叉树的节点一直存放在内存中,本实验的数据全部加载完后,树大概占了50M左右的内存,尚属可接受范围。

有问题可以加群416312956讨论。

你可能感兴趣的:(开发)