本文在上面环境配置好的基础上,下载模型并查看,主要分享SIBR_viewers的编译流程,并简单分析SIBR_gaussianViewer_app的源码结构
目录
- 1 SIBR_viewers的编译
- 2 SIBR_gaussianViewer_app源码解析
内容
- 1 SIBR_viewers的编译流程
用CMake配置项目, 编译选项选择Visual studio/x64,整个配置过程中,会自动下载所需对应的三方库版本。此过程中由于选择的VS版本不同,OpenCV的配置会存在问题;在之后的编译过程中boost的依赖会存在问题,提示无法解析的外部符号,因此需做如下调整。
1)OpenCV调整
本地选择的生成器是VS 2017,而自动下载下来的三方库OpenCV只有VC16版本,因此可复制VC16文件夹,将其改名为VC15即可,如下图所示:
2)boost配置
需要至少1.71.0版本的boost,从vcpkg中安装boost,本地安装的vcpkg为vcpkg-2023.10.19,对应的boost版本为1.83。boost配置如下图所示:
选择Boost_INCLUDE_DIR路径后,其它boost相关的依赖项会自动找到。
- 2 SIBR_gaussianViewer_app的源码结构
解决方案依次选择文件夹projects,gaussian、apps 下的SIBR_gaussianViewer_app项目。
1)参数设置
设置模型路径,如下图所示:
模型路径下存在cfg_args文件,并修改其中的source_path路径为SFM后对应的文件夹。
2)参数解析
读取点云ply文件:
场景的创建,创建BasicIBRSene对象,解析数据,由于cfg_args中的source_path路径设置的为SFM后对应的文件夹,此处识别的为colmap2类型。@蔡平(caiping)至于与其他类型的区别有待深入研究。
2)视图创建
创建GaussianView对象:
其中GaussianView对象有如下成员变量。
构造函数实现如下:
解析ply文件:
创建MultiViewManager对象:
3)渲染
由上节创建的GaussianView对象,循环遍历。
调用GaussianView中的onRenderIBR方法,由当前视口状态变量sibr::Camera获取绘制纹理对象sibr::IRenderTarget。
将栅格化的结果以ScreenQuad的形式渲染到IRenderTarget对象上。
最后将纹理渲染到屏幕上:
总结:
本文在上节环境配置好的基础上,下载模型并查看,主要分享SIBR_viewers的编译流程,并简单分析SIBR_gaussianViewer_app的源码结构。下节主要分析CUDA下栅格化算法,及绘制细节的解读。