重建我的3D世界【代码开源】【连载-2】

今天拍了些园区的蓝天白云,挑选一张与君共享
在这里插入图片描述
继上一篇为重建3D世界系列开了个头之后,博主并没有歇着,一方面在和朋友们的交流中,有不少给我建议用Colmap替代OpenMVG来完成SFM部分,理由是Colmap的SFM要比OpenMVG更稳,这让博主在方案上有了其它想法,其实就是选择Colmap+OpenMVS还是OpenMVG+OpenMVS,秉着实践出真知的道理,我会同时编译Colmap和OpenMVG,测试一些数据来观察下结果再做决定,测试结果我会另开博客来整理。

不得不说,Colmap的编译确实是非常麻烦,相比而言OpenMVG显得十分容易,我这几天不仅自己再尝试编译,也在找朋友橙子[大橙子的博客] 要一个他编译好的版本。过程艰辛不表。

转言之,趁着编译的空挡,咱也不能闲着,菜鸟的QT练习之路还漫漫而修远,本篇就给大家带来在界面上的一些努力和进展。

1 图像可以控制和预览了

前面我们提到,在UI中实现了图像载入和显示,但这完全只是第一步,必须的一些图像交互也要跟上,包括图像平移缩放,都是很基础的功能。我重载了图像视图控件,并在绘制事件中重写了绘制函数。具体的大家可以参看源码的QImgViewWidget类实现。

此外,我还增加了多图预览功能,这样可以对整个图像集有一个初步的浏览,整个图像集的预览图生成相对较慢,所以我重写了一个继承于QThread的预览图更新线程类QUpdatePreviewThread来完成后台预览图生成。

这里是具体的操作演示视频:

重建我的3D世界:图像操作演示-1

查看高清视频请点击:重建我的3D世界:图像操作演示-1

2 窗口可以自适应了

作为QT菜鸟,窗口自适应上一篇并没有做,以实现模块为主,现在,这个部分也是加上了,操作整个主界面的缩放,内部的子窗口也会自适应的改变大小了。具体的,我在主窗口中重载了resizeEvent方法,对所有的窗口做了一个尺寸自适应。

这里是具体的操作演示视频:

重建我的3D世界:自适应窗口演示-1

查看高清视频请点击:重建我的3D世界:自适应窗口演示-1

3 模型显示窗口的一点进展

模型显示窗口,是基于OpenGL的三维显示窗口,我也在思考是用现有成熟的渲染引擎如OSG,还是基于OpenGL的较为原始的实现方案,最后我暂且先决定用后者,在开始还是尽量轻量化一些吧。目前的进展是写了一个重载与QOpenGLWidget的窗口类QModelViewGLWidget,并重载了基本的渲染相关方法如initializeGL、resizeGL、paintGL,但具体的实现还没有完成。

4 暂时移除了对OpenCV和Eigen的依赖

上面说到,在开始我希望整个工程还是要保持轻量,目前也没有用到OpenCV和EIgen的地方,可能后面会再加进来,但是暂且我们先移除。

5 源码更新了

以上操作,我都在Github仓库中实时的进行了更新,大家可以pull下来体验了。

工程源码地址:TellusBuilder

感兴趣的同学,建议先点上star和watch,当然想基于我的工作自己往后做的也欢迎fork啊。**
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/rs_lys/article/details/117967665