vault backup: 2024-01-01 18:05:06

This commit is contained in:
2024-01-01 18:05:06 +08:00
parent ef0349461e
commit badecf4f76
3 changed files with 195 additions and 1 deletions

View File

@@ -0,0 +1,180 @@
---
title: GaussianSplattingViewer
date: 2023-12-29 19:35:16
excerpt:
tags:
rating: ⭐
---
# 前言
使用GLFW创建的程序。
# main.py
主要逻辑位于main()中,大致逻辑如下:
1. 获取前文设置的全部变量。
2. 创建imgui用于控制变量。
3. 创建GLFW渲染窗口**windows**。
4. 调用**imgui.integrations.glfw**中的**GlfwRenderer**,并且将结果渲染到这个**windows**中。
5. 获取tk(tkinter)并且赋值给root之后调用withdraw()。应该是用于绘制选择文件窗口的。
6. 绑定glfw的set_cursor_pos_callback、set_mouse_button_callback、set_scroll_callback、set_key_callback、set_window_size_callback事件。
7. 创建**renderer_ogl**的**OpenGLRenderer**渲染器对象并将其加入g_renderer_list全局渲染器列表。
8. 创建**renderer_cuda**的**CUDARenderer**渲染器对象如果成功将其加入g_renderer_list全局渲染器列表。
9. 按照之前设置的渲染器index选择用于渲染的渲染器并赋值给**g_renderer**。
10. 高斯数据处理
1. gaussians = util_gau.naive_gaussian(),创建写死的高斯数据。
2. update_activated_renderer_state(gaussians)
11. 开始进入渲染循环
1. 调用glfw、GlfwRenderer、imgui循环相关函数。
2. 清屏。
3. 更新摄像机Location & Intrin。
4. imgui菜单控制逻辑。调整各种参数、打开Ply点云文件。**载入逻辑位于util_gau.py的load_ply()**
1. 文件载入之后会进行一次高斯数据更新update_gaussian_data()以及排序sort_and_update()
5. 摄像机更新。
6. 缩放更新。
7. 如果修改了Shading则更新渲染模式set_render_mod()
8. 如果点击了sort Gaussians按钮则进行一次排序sort_and_update()
9. 如果勾选了g_auto_sort则进行一次排序sort_and_update()
10. 保存图片按钮逻辑。
11. imgui、GlfwRenderer渲染函数调用glfw更换前后缓存。
## 渲染器函数
### renderer_ogl.py
> 渲染模式为:"Gaussian Ball", "Billboard", "Depth", "SH:0", "SH:0~1", "SH:0~2", "SH:0~3 (default)。
`_sort_gaussian`
```python
def _sort_gaussian(gaus: util_gau.GaussianData, view_mat):
xyz = gaus.xyz
xyz_view = view_mat[None, :3, :3] @ xyz[..., None] + view_mat[None, :3, 3, None]
depth = xyz_view[:, 2, 0]
index = np.argsort(depth)
index = index.astype(np.int32).reshape(-1, 1)
return index
```
`__init__`
1. 载入Shader。
2. 定义面片顶点数据。
3. 设置属性通道为Position并将顶点数据塞入VAO。
4. 设置渲染属性:
1. 禁用剔除。
2. 开启BlendModegl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA。也就是线性插值。
`update_gaussian_data`
1. 传入当前高斯数据。
2. 调用下面的flat函数赋值给gaussian_data。
3. 传递vao、buffer_id、gaussian_data、bind_idx到Shader中。
4. 调用 `util.set_uniform_1int(self.program, gaus.sh_dim, "sh_dim")`
`sort_and_update`排序并且更新Shader中的数据。
`draw`:绘制函数。
1. 传递VAO点云数据数组到VertexShader。
2. 取得点云数。
3. 绘制与点云数目一样多的面片Instance。
```python
def flat(self) -> np.ndarray:
ret = np.concatenate([self.xyz, self.rot, self.scale, self.opacity, self.sh], axis=-1)
return np.ascontiguousarray(ret)
```
#### VertexShader
1. 根据gl_InstanceID、total_dim计算当前面片Instance的点云数据开始index。
2. 根据开始index从g_data[]取得g_pos数据并且转换成屏幕空间坐标。
3. 执行early culling。将不在屏幕内的点云数据都塞到Vec4(-100, -100, -100,1)。
4. 根据开始index从g_data[]取得g_rot。
5. 根据开始index从g_data[]取得g_scale。
6. 根据开始index从g_data[]取得g_opacity。
7. 调用computeCov3D() => computeCov2D(),计算协方差矩阵。
```c++
mat3 cov3d = computeCov3D(g_scale * scale_modifier, g_rot);
vec2 wh = 2 * hfovxy_focal.xy * hfovxy_focal.z;
vec3 cov2d = computeCov2D(g_pos_view,
hfovxy_focal.z,
hfovxy_focal.z,
hfovxy_focal.x,
hfovxy_focal.y,
cov3d,
view_matrix);
// Invert covariance (EWA algorithm)
float det = (cov2d.x * cov2d.z - cov2d.y * cov2d.y);
if (det == 0.0f)
gl_Position = vec4(0.f, 0.f, 0.f, 0.f);
float det_inv = 1.f / det;
conic = vec3(cov2d.z * det_inv, -cov2d.y * det_inv, cov2d.x * det_inv);
vec2 quadwh_scr = vec2(3.f * sqrt(cov2d.x), 3.f * sqrt(cov2d.z)); // screen space half quad height and width
vec2 quadwh_ndc = quadwh_scr / wh * 2; // in ndc space
g_pos_screen.xy = g_pos_screen.xy + position * quadwh_ndc;
coordxy = position * quadwh_scr;
gl_Position = g_pos_screen;
```
8. alpha = g_opacity;
9. if (render_mod == -1)则计算深度最后输出color为1/Depth的灰度值。"Depth"渲染模式。
```c++
// Covert SH to color
int sh_start = start + SH_IDX;
vec3 dir = g_pos.xyz - cam_pos;
dir = normalize(dir);
color = SH_C0 * get_vec3(sh_start);
if (sh_dim > 3 && render_mod >= 1) // 1 * 3
{
float x = dir.x;
float y = dir.y;
float z = dir.z;
color = color - SH_C1 * y * get_vec3(sh_start + 1 * 3) + SH_C1 * z * get_vec3(sh_start + 2 * 3) - SH_C1 * x * get_vec3(sh_start + 3 * 3);
if (sh_dim > 12 && render_mod >= 2) // (1 + 3) * 3
{
float xx = x * x, yy = y * y, zz = z * z;
float xy = x * y, yz = y * z, xz = x * z;
color = color +
SH_C2_0 * xy * get_vec3(sh_start + 4 * 3) +
SH_C2_1 * yz * get_vec3(sh_start + 5 * 3) +
SH_C2_2 * (2.0f * zz - xx - yy) * get_vec3(sh_start + 6 * 3) +
SH_C2_3 * xz * get_vec3(sh_start + 7 * 3) +
SH_C2_4 * (xx - yy) * get_vec3(sh_start + 8 * 3);
if (sh_dim > 27 && render_mod >= 3) // (1 + 3 + 5) * 3
{
color = color +
SH_C3_0 * y * (3.0f * xx - yy) * get_vec3(sh_start + 9 * 3) +
SH_C3_1 * xy * z * get_vec3(sh_start + 10 * 3) +
SH_C3_2 * y * (4.0f * zz - xx - yy) * get_vec3(sh_start + 11 * 3) +
SH_C3_3 * z * (2.0f * zz - 3.0f * xx - 3.0f * yy) * get_vec3(sh_start + 12 * 3) +
SH_C3_4 * x * (4.0f * zz - xx - yy) * get_vec3(sh_start + 13 * 3) +
SH_C3_5 * z * (xx - yy) * get_vec3(sh_start + 14 * 3) +
SH_C3_6 * x * (xx - 3.0f * yy) * get_vec3(sh_start + 15 * 3);
}
}
}
color += 0.5f;
```
#### PixelShader
1.  if (render_mod == -2)则直接显示当前颜色,并且结束渲染。"Billboard"渲染模式
2. 计算`power = -0.5f * (conic.x * coordxy.x * coordxy.x + conic.z * coordxy.y * coordxy.y) - conic.y * coordxy.x * coordxy.y;`丢弃power大于0的像素。
3. 计算float opacity = `min(0.99f, alpha * exp(power))`;丢弃opacity小于1/255的像素。
4. FragColor = vec4(color, opacity);
5.  if (render_mod == -3)则将透明度低于0.22的像素都隐藏。"Gaussian Ball"渲染模式
"Depth", "SH:0", "SH:0~1", "SH:0~2", "SH:0~3 (default)。
### renderer_cuda.py
## 相关函数
**update_activated_renderer_state**:更新渲染器状态。包括更新**高斯数据**、**摄像机缩放&高斯点云排序**、摄像机位移、渲染比例、渲染Mode。
```python
def update_activated_renderer_state(gaus: util_gau.GaussianData):
    g_renderer.update_gaussian_data(gaus)
    g_renderer.sort_and_update(g_camera)
    g_renderer.set_scale_modifier(g_scale_modifier)
    g_renderer.set_render_mod(g_render_mode - 3)
    g_renderer.update_camera_pose(g_camera)
    g_renderer.update_camera_intrin(g_camera)
    g_renderer.set_render_reso(g_camera.w, g_camera.h)
```

View File

@@ -0,0 +1,79 @@
---
title: 未命名
date: 2023-12-29 16:20:43
excerpt:
tags:
rating: ⭐
---
# 前言
- 文档:https://sibr.gitlabpages.inria.fr
- 代码:https://gitlab.inria.fr/sibr/sibr_core
- 案例代码
- [renderer/SimpleView.hpp](https://gitlab.inria.fr/mbenadel/sibr_simple/-/blob/master/renderer/SimpleView.hpp)&[renderer/SimpleView.cpp](https://gitlab.inria.fr/mbenadel/sibr_simple/-/blob/master/renderer/SimpleView.cpp)
- [renderer/SimpleRenderer.hpp](https://gitlab.inria.fr/mbenadel/sibr_simple/-/blob/master/renderer/SimpleRenderer.hpp)&[renderer/SimpleRenderer.cpp](https://gitlab.inria.fr/mbenadel/sibr_simple/-/blob/master/renderer/SimpleRenderer.cpp)
- [Simple SIBR Project](https://gitlab.inria.fr/sibr/projects/simple) 
- [SIBR/OptiX integration example](https://sibr.gitlabpages.inria.fr/docs/0.9.6/optixPage.html)
- [Tensorflow/OpenGL Interop for SIBR](https://sibr.gitlabpages.inria.fr/docs/0.9.6/tfgl_interopPage.html)
- Shader:需要将你自己编写的Shader放入**renderer/shaders**文件夹中
- 关键词:
- Structure-from-Motion (SfM)
- Multi-View Stereo (MVS)
## 功能
https://sibr.gitlabpages.inria.fr/docs/0.9.6/projects.html
- [Sample algorithms & toolboxes](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_samples.html)
- [Dataset Preprocessing Tools](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_dataset_tools.html) ([https://gitlab.inria.fr/sibr/sibr_core](https://gitlab.inria.fr/sibr/sibr_core))
- [Unstructured Lumigraph Rendering (ULR)](https://sibr.gitlabpages.inria.fr/docs/0.9.6/ulrPage.html) ([https://gitlab.inria.fr/sibr/sibr_core](https://gitlab.inria.fr/sibr/sibr_core))
- [Our algorithms](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_ours.html)
- [Exploiting Repetitions for IBR of Facades](https://sibr.gitlabpages.inria.fr/docs/0.9.6/facade_repetitionsPage.html) ([https://gitlab.inria.fr/sibr/projects/facades-repetitions/facade_repetitions](https://gitlab.inria.fr/sibr/projects/facades-repetitions/facade_repetitions)) (Exploiting Repetitions for IBR of Facades (paper reference :[http://www-sop.inria.fr/reves/Basilic/2018/RBDD18/](http://www-sop.inria.fr/reves/Basilic/2018/RBDD18/)))
- [Deep Blending for Free-Viewpoint Image-Based Rendering Scalable Inside-Out Image-Based Rendering](https://sibr.gitlabpages.inria.fr/docs/0.9.6/inside_out_deep_blendingPage.html) ([https://gitlab.inria.fr/sibr/projects/inside_out_deep_blending](https://gitlab.inria.fr/sibr/projects/inside_out_deep_blending)) (Deep Blending for Free-Viewpoint Image-Based Rendering, paper references: [http://www-sop.inria.fr/reves/Basilic/2018/HPPFDB18/](http://www-sop.inria.fr/reves/Basilic/2018/HPPFDB18/) , [http://visual.cs.ucl.ac.uk/pubs/deepblending/](http://visual.cs.ucl.ac.uk/pubs/deepblending/) ; Scalable Inside-Out Image-Based Rendering, paper references: [http://www-sop.inria.fr/reves/Basilic/2016/HRDB16](http://www-sop.inria.fr/reves/Basilic/2016/HRDB16) , [http://visual.cs.ucl.ac.uk/pubs/insideout/](http://visual.cs.ucl.ac.uk/pubs/insideout/) )
- [Multi-view relighting using a geometry-aware network](https://sibr.gitlabpages.inria.fr/docs/0.9.6/outdoorRelightingPage.html) ([https://gitlab.inria.fr/sibr/projects/outdoor_relighting](https://gitlab.inria.fr/sibr/projects/outdoor_relighting)) (Multi-view Relighting Using a Geometry-Aware Network; paper reference ([https://www-sop.inria.fr/reves/Basilic/2019/PGZED19/](https://www-sop.inria.fr/reves/Basilic/2019/PGZED19/)) )
- [Image-Based Rendering of Cars using Semantic Labels and Approximate Reflection Flow](https://sibr.gitlabpages.inria.fr/docs/0.9.6/semantic_reflectionsPage.html) ([https://gitlab.inria.fr/sibr/projects/semantic-reflections/semantic_reflections](https://gitlab.inria.fr/sibr/projects/semantic-reflections/semantic_reflections)) (Image-Based Rendering of Cars using Semantic Labels and Approximate Reflection Flow (paper reference : [http://www-sop.inria.fr/reves/Basilic/2020/RPHD20/](http://www-sop.inria.fr/reves/Basilic/2020/RPHD20/)))
- [Depth Synthesis and Local Warps for plausible image-based navigation - Bayesian approach for selective image-based rendering using superpixels](https://sibr.gitlabpages.inria.fr/docs/0.9.6/spixelwarpPage.html) ([https://gitlab.inria.fr/sprakash/spixelwarp](https://gitlab.inria.fr/sprakash/spixelwarp)) (Depth Synthesis and Local Warps for plausible image-based navigation, paper reference: [http://www-sop.inria.fr/reves/Basilic/2013/CDSD13/](http://www-sop.inria.fr/reves/Basilic/2013/CDSD13/) ; Bayesian approach for selective image-based rendering using superpixels, paper reference: [http://www-sop.inria.fr/reves/Basilic/2015/ODD15/](http://www-sop.inria.fr/reves/Basilic/2015/ODD15/) ))
- [Glossy Probe Reprojection for Interactive Global Illumination](https://sibr.gitlabpages.inria.fr/docs/0.9.6/synthetic_ibrPage.html) ([https://gitlab.inria.fr/sibr/projects/glossy-probes/synthetic_ibr](https://gitlab.inria.fr/sibr/projects/glossy-probes/synthetic_ibr)) (Glossy Probe Reprojection for Interactive Global Illumination (paper reference : [http://www-sop.inria.fr/reves/Basilic/2020/RLPWSD20/](http://www-sop.inria.fr/reves/Basilic/2020/RLPWSD20/)))
- [Other algorithms](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_others.html)
- [Soft3D](https://sibr.gitlabpages.inria.fr/docs/0.9.6/soft3dPage.html) ([https://gitlab.inria.fr/sibr/projects/soft3d](https://gitlab.inria.fr/sibr/projects/soft3d)) (Soft 3D Reconstruction for View Synthesis (paper reference : [https://ericpenner.github.io/soft3d/](https://ericpenner.github.io/soft3d/)))
- [Integrated toolboxes](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_toolbox.html)
- [Core framework of FRIBR](https://sibr.gitlabpages.inria.fr/docs/0.9.6/fribrFrameworkPage.html) ([https://gitlab.inria.fr/sibr/fribr_framework](https://gitlab.inria.fr/sibr/fribr_framework)) (Core framework of FRIBR)
- [SIBR/OptiX integration example](https://sibr.gitlabpages.inria.fr/docs/0.9.6/optixPage.html) ([https://gitlab.inria.fr/sibr/projects/optix](https://gitlab.inria.fr/sibr/projects/optix)) (SIBR/OptiX integration example)
- [Simple SIBR Project](https://sibr.gitlabpages.inria.fr/docs/0.9.6/simplePage.html) ([https://gitlab.inria.fr/sibr/projects/simple](https://gitlab.inria.fr/sibr/projects/simple)) (A simple sample SIBR project for you to base your projects on)
- [Tensorflow/OpenGL Interop for SIBR](https://sibr.gitlabpages.inria.fr/docs/0.9.6/tfgl_interopPage.html) ([https://gitlab.inria.fr/sibr/tfgl_interop](https://gitlab.inria.fr/sibr/tfgl_interop)) (Tensorflow GL interoperability dependencies and cuda code)
- [示例算法和工具箱](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_samples.html)
- [数据集预处理工具](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_dataset_tools.html)[https://gitlab.inria.fr/sibr/sibr_core](https://gitlab.inria.fr/sibr/sibr_core)
- [非结构化 Lumigraph 渲染 (ULR)](https://sibr.gitlabpages.inria.fr/docs/0.9.6/ulrPage.html) ( [https://gitlab.inria.fr/sibr/sibr_core](https://gitlab.inria.fr/sibr/sibr_core) )
- [我们的算法](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_ours.html)
- [Exploiting Repetitions for IBR of Facades](https://sibr.gitlabpages.inria.fr/docs/0.9.6/facade_repetitionsPage.html) ( [https://gitlab.inria.fr/sibr/projects/facades-repetitions/facade_repetitions](https://gitlab.inria.fr/sibr/projects/facades-repetitions/facade_repetitions) ) (Exploiting Repetitions for IBR of Facades (论文参考: http: [//www-sop.inria.fr/里夫/巴西利克/2018/RBDD18/](http://www-sop.inria.fr/reves/Basilic/2018/RBDD18/)
- [用于基于自由视点图像的渲染的深度混合 可扩展的由内而外基于图像的渲染](https://sibr.gitlabpages.inria.fr/docs/0.9.6/inside_out_deep_blendingPage.html)( [https://gitlab.inria.fr/sibr/projects/inside_out_deep_blending](https://gitlab.inria.fr/sibr/projects/inside_out_deep_blending) ) (用于基于自由视点图像的渲染的深度混合,论文参考:[http://www-sop.inria.fr/reves/Basilic/2018/HPPFDB18/http](http://www-sop.inria.fr/reves/Basilic/2018/HPPFDB18/) : [//visual.cs.ucl.ac.uk/pubs/deepblending/](http://visual.cs.ucl.ac.uk/pubs/deepblending/);可扩展的由内而外基于图像的渲染,论文参考:[http://www-sop.inria.fr/reves/Basilic/2016/HRDB16http](http://www-sop.inria.fr/reves/Basilic/2016/HRDB16) : [//visual.cs.ucl.ac.uk/pubs/insideout/](http://visual.cs.ucl.ac.uk/pubs/insideout/)
- [使用几何感知网络的多视图重新照明](https://sibr.gitlabpages.inria.fr/docs/0.9.6/outdoorRelightingPage.html)( [https://gitlab.inria.fr/sibr/projects/outdoor_relighting](https://gitlab.inria.fr/sibr/projects/outdoor_relighting) )(使用几何感知网络的多视图重新照明;论文参考 ( [https://www-sop. inria.fr/reves/Basilic/2019/PGZED19/](https://www-sop.inria.fr/reves/Basilic/2019/PGZED19/) ) )
- [使用语义标签和近似反射流的基于图像的汽车渲染](https://sibr.gitlabpages.inria.fr/docs/0.9.6/semantic_reflectionsPage.html)[https://gitlab.inria.fr/sibr/projects/semantic-reflections/semantic_reflections](https://gitlab.inria.fr/sibr/projects/semantic-reflections/semantic_reflections))(使用语义标签和近似反射流的基于图像的汽车渲染(论文参考:[http://www-sop.inria.fr/reves/Basilic/2020/RPHD20/](http://www-sop.inria.fr/reves/Basilic/2020/RPHD20/)
- [用于合理的基于图像的导航的深度合成和局部扭曲 - 使用超像素进行选择性基于图像的渲染的贝叶斯方法](https://sibr.gitlabpages.inria.fr/docs/0.9.6/spixelwarpPage.html)[https://gitlab.inria.fr/sprakash/spixelwarp](https://gitlab.inria.fr/sprakash/spixelwarp))(用于合理的基于图像的导航的深度合成和局部扭曲,论文参考:[http://www-sop.inria.fr/reves/Basilic/2013/CDSD13/](http://www-sop.inria.fr/reves/Basilic/2013/CDSD13/);使用超像素进行选择性基于图像渲染的贝叶斯方法,论文参考: http: [//www-sop.inria.fr/里夫/巴西利克/2015/ODD15/](http://www-sop.inria.fr/reves/Basilic/2015/ODD15/)
- [用于交互式全局照明的光泽探针重投影](https://sibr.gitlabpages.inria.fr/docs/0.9.6/synthetic_ibrPage.html)[https://gitlab.inria.fr/sibr/projects/glossy-probes/synthetic_ibr](https://gitlab.inria.fr/sibr/projects/glossy-probes/synthetic_ibr))(用于交互式全局照明的光泽探针重投影(论文参考:[http://www-sop.inria。 fr/reves/Basilic/2020/RLPWSD20/](http://www-sop.inria.fr/reves/Basilic/2020/RLPWSD20/) ))
- [其他算法](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_others.html)
- [Soft3D](https://sibr.gitlabpages.inria.fr/docs/0.9.6/soft3dPage.html)[https://gitlab.inria.fr/sibr/projects/soft3d](https://gitlab.inria.fr/sibr/projects/soft3d)用于视图合成的软3D重建论文参考 https: [//ericpenner.github.io/soft3d/](https://ericpenner.github.io/soft3d/)
- [集成工具箱](https://sibr.gitlabpages.inria.fr/docs/0.9.6/sibr_projects_toolbox.html)
- [FRIBR核心框架](https://sibr.gitlabpages.inria.fr/docs/0.9.6/fribrFrameworkPage.html)[https://gitlab.inria.fr/sibr/fribr_frameworkFRIBR](https://gitlab.inria.fr/sibr/fribr_framework)核心框架)
- [SIBR/OptiX 集成示例](https://sibr.gitlabpages.inria.fr/docs/0.9.6/optixPage.html)( [https://gitlab.inria.fr/sibr/projects/optix](https://gitlab.inria.fr/sibr/projects/optix) )SIBR/OptiX 集成示例)
- [简单 SIBR 项目](https://sibr.gitlabpages.inria.fr/docs/0.9.6/simplePage.html)( [https://gitlab.inria.fr/sibr/projects/simple](https://gitlab.inria.fr/sibr/projects/simple) )(一个简单的示例 SIBR 项目,供您作为项目的基础)
- [SIBR 的 Tensorflow/OpenGL 互操作](https://sibr.gitlabpages.inria.fr/docs/0.9.6/tfgl_interopPage.html)[https://gitlab.inria.fr/sibr/tfgl_interopTensorflow](https://gitlab.inria.fr/sibr/tfgl_interop) GL 互操作性依赖项和 cuda 代码)
项目结构:
- `renderer/`: contains your library code and configuration
- `preprocess/`: contains your preprocesses listed by directory, and the configuration CMake file to list them
- `apps/`: contains your apps listed by directory, and the configuration CMake file to list them
- `documentation/`: contains additional doxygen documentation
# SIBR数据集创建方式
**SIBR**本身定义了一种数据格式
可以使用**RealityCapture**或者**Colmap**创建原生的SIBR数据集也可以根据文档使用SFM或者MVS系统创建兼容数据集合。
- [如何从 Reality Capture 创建数据集](https://sibr.gitlabpages.inria.fr/docs/0.9.6/HowToCapreal.html)
- [如何从 Colmap 创建数据集](https://sibr.gitlabpages.inria.fr/docs/0.9.6/HowToColmap.html)
官方提供的案例数据集:https://repo-sam.inria.fr/fungraph/sibr-datasets/museum_front27_ulr.zip
# 运行案例方式
下载编译好的版本
>SIBR_ulrv2_app_rwdi.exe --path C:/Downloads/museum_front27_ulr/museum_front27/sibr_cm sibr -museum-front