Gaussian Splatting 插件新功能

GPU 加速、更多格式以及更强大的应用工具

使用 Gaussian Splatting 插件渲染的卡莫纳罗马桥 Gaussian Splatting 捕捉效果

3D Gaussian Splatting 已迅速成为将真实世界带入 3D 应用的最佳方式之一。几分钟的照片或视频就足以重建一个地点或物体,并保留照片级的细节,工业团队越来越多地将其用于数字孪生、现场记录、检查和沉浸式培训。

Gaussian Splatting 插件 将这项技术带到了桌面端、移动端和 Web 端的 Evergine 应用中。在我们的 五月版本 中,我们为其添加了压缩的 SOG 格式和 WebGPU 渲染支持。此后,我们一直在两个方向上持续改进该插件:使其更快,尤其是在 Web 端,并使其能够读取您已有的文件,无论这些文件是由何种工具生成的。在此过程中,它还获得了用于交互式应用的新功能,以及更清晰、更稳固的内部架构。

为了方便大家体验这些改进,我们还发布了一个使用该插件构建的网页查看器,任何人都可以将 Gaussian Splatting 文件拖放到浏览器中打开。

简而言之:

本文内容

使用计算着色器加速渲染

为了绘制 Gaussian Splatting 场景,每一帧都需要将每个 splat 投影到屏幕上:其 3D 形状会变成一个 2D 椭圆,并且其颜色会根据当前观察方向进行计算。到目前为止,这项工作是在顶点着色器中完成的,并且会为每个 splat 的每个顶点重复执行。

在支持计算着色器的平台上,例如 DirectX 12、Vulkan、Metal 和 WebGPU,该插件现在会在绘制前的计算通道中完成这项工作。Splat 数据以紧凑的布局存储在 GPU 上,计算着色器每帧处理每个 splat 一次,绘制时只需读取结果。将 splat 按正确顺序混合的排序过程也在 GPU 上运行。这更好地利用了 GPU,减少了每帧的工作量,并使 CPU 可以腾出来处理应用的其余部分。

WebGPU

在 Web 端,计算着色器只能通过 WebGPU 使用。该插件自五月版本起就已支持 WebGPU,现在它也在 Web 端使用了计算路径,因此在支持 WebGPU 的浏览器中,场景渲染速度会快得多。这也需要对 Evergine 的 WebGPU 后端进行一些更改。

对于不支持 WebGPU 的浏览器,WebGL 仍然作为后备方案得到支持。在 WebGL 中,splat 会在一个 web worker 中进行排序,因此页面不会发生阻塞。

针对每台设备进行调优

快速的 GPU 路径只是故事的一半。另一半是避免做那些没人会看到的工作,这在手机和平板电脑上最为重要,因为在这些设备上,发热和电池续航与帧率同等重要。

两者都是 GSplatMesh 组件的常规属性,因此每个应用程序都可以在质量和成本之间选择自己的平衡点,或根据设备在运行时动态调整。

更稳定、更轻量、加载更快

并非所有改进都体现在屏幕上。大量工作投入到了提升插件的可靠性上:

更多格式,统一管线

3D Gaussian Splatting 仍是一个年轻的领域,许多捕获应用、训练工具和网页查看器都使用自己的格式。有些追求简洁,有些侧重压缩、流式传输或超大场景。为了打开您已有的文件,此插件现在支持读取最常见的格式:

格式扩展名来源
PLY.ply原始 3DGS 训练代码及大多数训练工具新增
压缩 PLY.plyPlayCanvas SuperSplat
Splat.splat早期网页查看器
SOG.sogPlayCanvas已改进
SPZ.spzNiantic,Scaniverse 使用新增
KSplat.ksplatGaussianSplats3D新增
LCC文件夹XGRIDS新增
LCC2文件夹XGRIDS新增

关于新格式的一些说明:

您无需告知插件文件使用哪种格式:它会根据内容而非扩展名自动检测。每个读取器都将其输入转换为相同的内部表示,因此每种格式都能受益于相同的渲染、相同的 GPU 管线和相同的选项。

选择与分割

现在,每个 splat 都可以携带额外信息,这为交互式应用打开了大门:

入门指南

在 Evergine Studio 的插件管理器中安装 Evergine.GaussianSplatting 插件,然后将 GSplatPrefab 预制体拖入场景。或者通过代码创建实体:

using Evergine.Framework;
using Evergine.Framework.Graphics;
using Evergine.GaussianSplatting;

public class MyScene : Scene
{
    protected override void CreateScene()
    {
        var gaussianSplatting = new Entity("GaussianSplatting")
            .AddComponent(new Transform3D())
            .AddComponent(new GSplatMesh()
            {
                // Any supported format: .ply, .splat, .sog, .spz, .ksplat or an LCC folder
                SplatPath = "Splats/warehouse.spz",

                // Optional: skip splats that barely contribute to the image
                MinContribution = 0.15f,

                // Optional: re-sort at most every 150 ms
                SortIntervalMs = 150,
            })
            .AddComponent(new GSplatRenderer());

        this.Managers.EntityManager.Add(gaussianSplatting);
    }
}

插件会在支持的平台上自行选择计算路径,因此同一套代码可在各处运行。Evergine 文档 的 Gaussian Splatting 部分详细解释了每个组件以及 Web 项目的额外步骤。

实际体验:我们的 Web 查看器

为了让任何人都能轻松试用该插件,我们在 splat.evergine.com 发布了一个 Gaussian Splatting 查看器。这是一个使用 Evergine 和 Gaussian Splatting 插件构建的示例应用,因此本文描述的所有功能都在其中运行。它完全免费,在浏览器中运行,无需安装:将模型拖放到页面上即可打开。

Web 查看器,已准备好通过拖放接收模型

将文件或文件夹拖放到页面上,或浏览选择

其主要功能如下:

Web 查看器的相机控制面板

工具栏可在轨道相机和自由相机之间切换、框选模型,并打开变换和选项面板。帮助按钮列出了相机控制方式

Web 查看器的选项面板和性能面板

选项面板,左侧为性能面板

在模型上以点形式绘制的高斯中心

显示每个高斯点的中心有助于检查捕获的密度和结构

手机上的 Web 查看器

手机上的查看器,支持触控操作

除了展示插件的功能外,它还是日常工作中的便捷工具:检查导出文件是否正确打开、比较两个扫描版本,或在会议中展示捕获内容而无需准备项目。

后续计划

Gaussian Splatting 技术发展迅速,我们将持续为出现的新格式和技术提供支持。以下是我们目前正在进行的一些工作:

两者都旨在实现同一个目标:让 Gaussian Splatting 场景不仅可供观看,还能让应用程序与之交互。

立即试用并分享你的想法

这些改进是 Evergine 2026 年 11 月版本的一部分。更新 Evergine,将 Gaussian Splatting 插件添加到你的项目中,然后加载你的捕获内容。

我们很乐意看到你捕获的内容,并期待听到你希望接下来支持哪些格式或功能。

David Ávila
作者
David Ávila
Plain Concepts Research