使用QT搭建点云显示框架系列七·继续往点云框架中添加功能,向CC更进一步
点云框架系列代码下载已经在本人置顶的博客中分享了。有任何问题加我QQ详细讨论:498771026
哦还有一点,你的电脑必须装VS2013才行。不然会少库。
本来是想继续上次的专题来写,可惜,妈呀真是太麻烦了。因为涉及的东西太多了,如果耗费大量时间在讲解上,恐怕会浪费更多的时间。这样做明显是得不偿失的。
所以干脆还是回归老套路,代码全部分享给大家,自己看去吧。。。。
由于本人即将毕业,论文也已经完成,这段时间正好用来疯狂学习。必须抓紧剩下的时间了。这段时间也有很多小伙伴们问我能不能把我的框架给他们毕业用。回答是,完全没问题。因为我希望各位从我的框架中吸取精华,也希望给我的框架提出宝贵的意见,大家愿意用我的东西我当然是欢迎,前提是,别被自己的老师发现哦,哈哈。
好了,下面详细介绍一下修改了哪些东西。由于本人的框架几乎每天都有新的东西加进来,然后东西太多了太庞杂了,有时候我也说不全自己究竟添加了哪些东西,大家自己下载我的软件感受去吧。
首先我们的点云框架变成了这样:
1)没错,它更像CC了。左边的combox等等,可以更改点云的大小,以及可视化等等基础功能。
2) 左边的工具栏应该是新添加的,几个视图都已经搞好了。还添加了各种投影变换的相互切换。
3)向屏幕上添加了一些文字,用于叙述功能。emmm这样比较人性化。然后右下角画了一个小的坐标轴可以随着你的相机操纵而一同旋转。红绿蓝分别是XYZ轴。背景变成了渐变颜色,具体颜色可以根据setting来进行修改。比如我就用这个setting修改了背景颜色。这个渐变的具体画法就是用QT的渐变色先绘制一个背景图片,然后用OPENGL绘制到背景上。这个还是有点难度的。具体画法看代码就行了。同样的,外包核的颜色也可以进行修改。
3)我将PCL库成功加到我的系统框架中来了,这又是一个不错的突破。这样,pcl中的八叉树啊,精简啊,滤波啊什么的就都能用了。我就把八叉树功能做了一个不错的展示。把八叉树的每一个层级都绘制出来。然后在左边的combobox中可以更改八叉树的显示层级。是不是很漂亮啊?
4)然后PCL中的法线计算功能也加进去了,emmm我只实现了一种,大家用默认参数就行了。可以看出还是有变化的。如果此时进行点云精简,法线会保留。如果再次计算,则会覆盖。
5)凹包检测功能也已经加进去了,这个算法是从CC中提取出来,改成自己的代码然后加入到系统中去的,可以看到,平面凹包已经被完美检测并绘制出来了,并添加到左边的树节点上了。可惜emmm我把树节点挡住了哈哈。
6) 最后我还增添了5种上色的方法,有直接上色的,还有减色法上色的,还有几种渐变颜色上色的。下图是默认的渐变上色:
总结和反思:
总之,这一次框架添加的代码是非常非常多的,涉及到的知识点也是很多很多的,对于新人小朋友们够喝一壶的了。但是对于我自己而言,我也只是把QT这些东西不停地重复而已。回想起来,虽然这几天在学习状态和工作量上面我对自己是非常满意的,开学到现在仅仅一个月的时间就可以加入这么多代码,我还是很欣慰的。但是,在新知识的加入上,还是有所欠缺,自己没有攻破一些高深的算法,也没有进行更好地优化。
比如说,我的进图条的加入导致点云读取速度变慢,而CC中,既保持了进度条的速度,又保证了读取速度。而且在显示方面,我才刚刚起步,只能显示少量的点云,也就1000W左右。QGLViewer中虽然有类似的优化接口叫做postdraw(),但是自己还没有胆量进行尝试,毕竟这个大软件框架已经变成一个牵一发而动全身的怪物了。
还是希望能有人指导自己做出更好的东西吧,毕竟在一个人的奋斗之路上你必须忍受孤独和学习的寂寞。如果有名师指导,你可以获得更好的学习资料和手段。如果有一个更好的团队供我进行学习的话,我说不定会用LOD模型进行点云显示的优化,我说不定会成为opengl大牛。这一点说明,一个好的团队还是非常重要的。
现在笔者也面临毕业,马上就要离开这一台陪伴了我三年的电脑了。但我的程序会永远留在这台电脑上。我相信这也仅仅是开始,因为我相信在未来的工作之路上我还能学到更多变态的算法和框架搭建的方法。
我也同样感谢你们,我亲爱的读者朋友们,谢谢你们的陪伴!
就这样吧。