Gaussian Splatting 插件新功能
GPU 加速、更多格式以及更强大的应用工具

3D Gaussian Splatting 已迅速成为将真实世界带入 3D 应用的最佳方式之一。几分钟的照片或视频就足以重建一个地点或物体,并保留照片级的细节,工业团队越来越多地将其用于数字孪生、现场记录、检查和沉浸式培训。
Gaussian Splatting 插件 将这项技术带到了桌面端、移动端和 Web 端的 Evergine 应用中。在我们的 五月版本 中,我们为其添加了压缩的 SOG 格式和 WebGPU 渲染支持。此后,我们一直在两个方向上持续改进该插件:使其更快,尤其是在 Web 端,并使其能够读取您已有的文件,无论这些文件是由何种工具生成的。在此过程中,它还获得了用于交互式应用的新功能,以及更清晰、更稳固的内部架构。
为了方便大家体验这些改进,我们还发布了一个使用该插件构建的网页查看器,任何人都可以将 Gaussian Splatting 文件拖放到浏览器中打开。
简而言之:
- 计算着色器。 在支持计算着色器的平台上,例如 DirectX 12、Vulkan、Metal 和 WebGPU,该插件现在会在绘制前使用计算着色器在 GPU 上处理 splat。
- Web 端速度更快。 借助 WebGPU,浏览器现在也能使用计算路径,渲染速度比以前快得多。
- 针对每台设备进行调优。 新增选项可跳过对图像贡献极小的 splat,并限制 splat 重新排序的频率,从而保持手机凉爽并延长电池续航。
- 更多格式。 除了压缩的 PLY、
.splat和 SOG 之外,现在还支持未压缩的 PLY、SPZ、KSplat、LCC 和 LCC2。格式会被自动检测。 - 选择和分割。 Splat 现在可以按组进行高亮显示和着色,例如用于展示 AI 分割的结果。
- 更稳定、更轻量。 加载速度更快,内存占用更低,加载错误提示清晰,并进行了多项修复。
- 用于试用的网页查看器。 splat.evergine.com 是一个使用该插件构建的查看器,您可以在其中打开自己的模型。
本文内容
使用计算着色器加速渲染
为了绘制 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 路径只是故事的一半。另一半是避免做那些没人会看到的工作,这在手机和平板电脑上最为重要,因为在这些设备上,发热和电池续航与帧率同等重要。
- 最小贡献裁剪。 许多高斯点云在捕获中非常小或非常透明,对画面几乎无影响,但绘制成本相同。此插件现在可以跳过对屏幕贡献低于阈值的每个高斯点,从而减少过度绘制,且视觉差异极小。该功能由
MinContribution属性控制。 - 排序间隔。 无需每帧都对数百万个高斯点重新排序。
SortIntervalMs属性设置了两次排序之间的最短时间:当相机移动时,排序顺序可能滞后几毫秒,一旦相机停止,顺序便会立即恢复正确。这不会改变帧率,但能减少持续负载,避免移动设备降频。
两者都是 GSplatMesh 组件的常规属性,因此每个应用程序都可以在质量和成本之间选择自己的平衡点,或根据设备在运行时动态调整。
更稳定、更轻量、加载更快
并非所有改进都体现在屏幕上。大量工作投入到了提升插件的可靠性上:
- 加载更快。 格式读取器经过重构,减少了内存分配,加快了场景加载速度。
- 内存占用更低。 场景在加载时和上传到 GPU 后所需的内存都更少。
- 清晰的加载错误。 如果文件无法读取,插件会报告原因,而不是静默失败。
- 着色器组织更优。 计算着色器和绘制着色器共享的代码现在位于单个着色器库中,使插件更易于维护和扩展。
- .NET 10。 插件及其示例已随 Evergine 其余部分一起更新至 .NET 10。
- 大量修复, 包括所有后端的伽马校正、Alpha 混合和点渲染问题。
更多格式,统一管线
3D Gaussian Splatting 仍是一个年轻的领域,许多捕获应用、训练工具和网页查看器都使用自己的格式。有些追求简洁,有些侧重压缩、流式传输或超大场景。为了打开您已有的文件,此插件现在支持读取最常见的格式:
| 格式 | 扩展名 | 来源 | |
|---|---|---|---|
| PLY | .ply | 原始 3DGS 训练代码及大多数训练工具 | 新增 |
| 压缩 PLY | .ply | PlayCanvas SuperSplat | |
| Splat | .splat | 早期网页查看器 | |
| SOG | .sog | PlayCanvas | 已改进 |
| SPZ | .spz | Niantic,Scaniverse 使用 | 新增 |
| KSplat | .ksplat | GaussianSplats3D | 新增 |
| LCC | 文件夹 | XGRIDS | 新增 |
| LCC2 | 文件夹 | XGRIDS | 新增 |
关于新格式的一些说明:
- PLY:此前插件仅读取压缩的 PLY 文件。现在它也能读取未压缩的 PLY,即大多数训练工具的标准输出,支持 ASCII 和二进制格式。
- SPZ 是 Niantic 发布的压缩格式,作为高斯点云的开放交换格式。同时支持第 4 版和旧版 gzip 文件。
- KSplat 将高斯点分组到空间桶中,并使用多种压缩级别进行量化。
- LCC 和 LCC2 是 XGRIDS 激光和相机扫描仪的格式,专为大型扫描设计。它们是文件夹而非单个文件:LCC 在空间网格中存储多个细节级别,LCC2 则将场景分割为以 SOG 或 SPZ 格式存储的块。
您无需告知插件文件使用哪种格式:它会根据内容而非扩展名自动检测。每个读取器都将其输入转换为相同的内部表示,因此每种格式都能受益于相同的渲染、相同的 GPU 管线和相同的选项。
选择与分割
现在,每个 splat 都可以携带额外信息,这为交互式应用打开了大门:
- 选择。 一张选择纹理标记哪些 splat 被选中,渲染器会用选择颜色高亮它们。预览颜色则显示即将被选中的内容。
- 分割。 你可以为每个 splat 分配一个标签,并为每个标签分配一种颜色,插件会按分割区域渲染场景。这是展示 AI 模型识别捕获内容中物体结果的自然方式:墙壁、机器、管道或车辆,各具其色。
入门指南
在 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 插件构建的示例应用,因此本文描述的所有功能都在其中运行。它完全免费,在浏览器中运行,无需安装:将模型拖放到页面上即可打开。

将文件或文件夹拖放到页面上,或浏览选择
其主要功能如下:
- 打开任何支持的格式。 将文件或文件夹拖放到页面上,或浏览选择。
- 自动选择 WebGPU 或 WebGL。 查看器会检测你的浏览器支持情况,在可用时使用 WebGPU,并以 WebGL 作为后备方案。
- 更好的相机操控。 围绕物体旋转或自由穿梭于场景中,一键框选模型,并在帮助面板中查看鼠标、键盘和触控操作说明。
- 模型检查工具。 调整模型的位置、旋转和缩放,或显示每个高斯点的中心以检查捕获的结构。
- 性能工具。 显示帧率和性能面板,并在手机和平板等性能有限的设备上开启高性能模式。

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

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

显示每个高斯点的中心有助于检查捕获的密度和结构
手机上的查看器,支持触控操作
除了展示插件的功能外,它还是日常工作中的便捷工具:检查导出文件是否正确打开、比较两个扫描版本,或在会议中展示捕获内容而无需准备项目。
后续计划
Gaussian Splatting 技术发展迅速,我们将持续为出现的新格式和技术提供支持。以下是我们目前正在进行的一些工作:
- 流式加载。 从网络逐步加载和渲染场景,而非在显示任何内容前下载整个文件。
- 自动碰撞生成。 从捕获内容生成碰撞体,使其能够参与物理模拟,用户可以在其上行走或与之交互。
两者都旨在实现同一个目标:让 Gaussian Splatting 场景不仅可供观看,还能让应用程序与之交互。
立即试用并分享你的想法
这些改进是 Evergine 2026 年 11 月版本的一部分。更新 Evergine,将 Gaussian Splatting 插件添加到你的项目中,然后加载你的捕获内容。
- 浏览 Evergine 文档,其中 Gaussian Splatting 部分详细介绍了该插件。
- 在我们的 Web 查看器中打开你自己的模型,网址为 splat.evergine.com。
- 阅读之前的文章,了解 SOG 和 WebGPU 支持 以及插件的早期改进。
- 发现问题或有想法? 在 Evergine 反馈仓库 中告诉我们。
我们很乐意看到你捕获的内容,并期待听到你希望接下来支持哪些格式或功能。
