SuGaR:3D高斯泼溅网格提取算法

我们引入了一种方法,可以在几分钟内在单个 GPU 上从 3D 高斯分布表示中提取准确且可编辑的网格。网格可以通过非常逼真的高斯泼溅渲染进行编辑、动画、合成等,为计算机图形学提供了新的可能性。

请注意,例如,我们在左下角的捕获场景和右侧的合成场景之间更改了机器人的姿势,所有这些都使用高斯泼溅光栅器进行渲染。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

0、概述

我们提出了一种方法,可以从 3D 高斯分布中精确且极其快速地提取网格(SIGGRAPH 2023)。

Gaussian Splatting 最近变得非常流行,因为它可以产生逼真的渲染,同时训练速度比 NeRF 快得多。然而,从数百万个微小的 3D 高斯模型中提取网格是一项挑战,因为这些高斯模型在优化后往往是无组织的,而且迄今为止还没有提出任何方法。

我们的第一个关键贡献是正则化项,它鼓励 3D 高斯与场景表面良好对齐。

然后,我们介绍一种方法,利用这种对齐方式对场景真实表面上的样本点进行对齐,并使用泊松重建从高斯分布中提取网格,与通常应用于从神经 SDF 中提取网格。

最后,我们引入了一种可选的细化策略,将高斯函数绑定到网格表面,并通过高斯泼溅渲染联合优化这些高斯函数和网格。这样可以使用传统软件(Blender、Unity、虚幻引擎等)通过操纵网格而不是高斯本身来轻松编辑、雕刻、装配、动画或重新照亮高斯。

使用我们的方法检索这样一个可编辑网格以进行真实渲染只需几分钟,而使用神经 SDF 上最先进的方法则需要数小时,同时在 PSNR、SSIM 和 LPIPS 方面提供更好的渲染质量。

1、将3D高斯与表面对齐

为了促进高斯网格的创建,我们首先提出一个正则化项,它鼓励高斯分布在场景表面上,以便它们更好地捕获场景几何形状。

我们的方法是在假设高斯分布平坦且均匀分布在场景表面上的情况下,从高斯分布中推导出体积密度。通过在优化过程中最小化该密度与高斯计算的实际密度之间的差异,我们鼓励 3D 高斯很好地表示表面几何形状。

2、高效网格提取

真实场景的高斯泼溅表示通常最终会产生一个或数百万个具有不同尺度和旋转的 3D 高斯,其中大多数都非常小,以便再现场景中的纹理和细节。这导致密度函数几乎在任何地方都接近于零,并且即使使用精细的体素网格,行进立方体算法也无法提取这种稀疏密度函数的适当水平集。

相反,我们引入了一种非常有效地对密度函数水平集的可见部分上的点进行采样的方法,使我们能够在这些点上运行泊松重建算法以获得三角形网格。与 Marching Cubes 算法相比,这种方法是可扩展的,与其他依赖神经 SDF 从辐射场提取网格的最先进方法相比,它可以在单个 GPU 上在几分钟内重建高度详细的表面网格。

3、将新的 3D 高斯绑定到网格

提取该网格后,我们提出了一种可选的细化策略:将新的高斯函数绑定到网格三角形,并使用高斯泼溅光栅器联合优化高斯函数和网格。

这种优化可以使用高斯喷射渲染而不是传统的纹理网格渲染来实现高质量的网格渲染。我们在下面提供了几个例子。

与推理时依赖底层网格的其他辐射场模型相比,这在渲染质量方面具有更高的性能。

这种绑定策略还使得使用传统的网格编辑工具来编辑场景的高斯泼溅表示成为可能,为计算机图形学提供了无限的可能性。

4、场景组装示例

在下面的视频中,我们展示了如何使用 SuGaR 提取的网格在 Blender 中组合场景。正如我们在视频末尾所示,可以使用高斯泼溅光栅器和绑定到网格表面的3D高斯来渲染该合成。

5、场景编辑和角色动画示例

在下面的视频中,我们展示了如何使用 SuGaR 提取的网格在 Blender 中为角色制作动画。正如我们在视频末尾所示,可以使用高斯泼溅光栅器和绑定到网格表面的高斯来渲染该动画。

在下面的视频中,我们展示了如何使用 SuGaR 提取的网格来分割和绑定角色:


原文链接:SuGaR: 从3DGS提取网格 - BimAnt

### 配置 VTK 中高斯网格化参数 对于配置 VTK 中的高斯 (Gaussian Splatting) 网格化参数,主要涉及的是创建项目以及链接必要的库文件。具体来说,在 `CMakeLists.txt` 文件中的配置如下: ```cmake cmake_minimum_required(VERSION 2.6) PROJECT(GaussianSplat) FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE}) ADD_EXECUTABLE(GaussianSplat GaussianSplat.cxx) TARGET_LINK_LIBRARIES(GaussianSplat ${VTK_LIBRARIES}) ``` 上述代码片段用于初始化 CMake 最低版本需求并定义项目名称为 `GaussianSplat`[^1]。 针对具体的高斯操作及其参数设定,通常是在源码内部完成。由于 VTK 官方文档并没有直接提供关于 “gaussian splatting”的特定函数接口说明,因此这可能涉及到自定义算法或者第三方扩展模块的应用。如果要调整与高斯有关的具体属性(比如点云密度、颜色映射等),则需查阅所使用的具体实现方式的相关资料或API手册。 为了更好地理解如何处理此类问题,可以考虑以下几个方面来探索解决方案: - 查看是否有适用于目标平台上的现成插件或工具包支持该功能; - 参考社区贡献者分享的经验贴和技术博客获取灵感; - 如果基于某种特定框架开发,则深入研究其官方指南中是否存在间接提及的内容。 #### 关于平滑Mesh的方法 值得注意的是,在 VTK 中存在多种平滑 Mesh 的技术方案可供选择,例如采用 `vtkWindowedSincPolyDataFilter` 进行高质量表面重建和平滑处理[^2]。虽然这不是直接关联到高斯的操作,但在某些情况下可能会作为预处理步骤被应用以优化最终效果。 #### GPU 加速的支持情况 考虑到性能因素,了解 VTK 对 GPU 渲染的支持也是重要的考量之一。通过实例化像 `vtkWin32OpenGLRenderWindow` 和 `vtkOpenGLRenderer` 类的对象能够开启硬件加速渲染路径[^3]。然而,这种做法更多地影响到了可视化阶段而非数据结构本身的变化过程。 #### Mask 转换为 Mesh 的实践案例 最后,当涉及到将图像掩模转换为三维模型时,也有相应的 Python 实践例子展示了从二维二值图生成三角形面片的过程[^4]。尽管这些内容并非直接解决当前提问的核心议题,但对于构建完整的图形流水线而言仍然是非常有价值的参考资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值