Gaussian Splatting
Gaussian Splatting (高斯泼溅) 是近段时间,三维视觉领域热度极高的一项突破性工作。
2020 年提出的 NeRF 等辐射场方法彻底改变了多张照片或视频主导的场景新视角合成的算法生态,但训练、渲染的速度与质量仍存在瓶颈。Gaussian Splatting 在保持有竞争力的训练时间的同时实现最先进的视觉质量,重要的是允许在 1080p 分辨率下实现高质量的实时(≥30 fps)的新视图合成。
基于 3D Gaussian Splatting 的 SLAM 不仅全面继承了 NeRF-based SLAM 方法的优点,而且全面补足了其短板(渲染速度慢、图像质量不高、定位精度欠佳等),实现了更好的实时性、更好的渲染质量、更精确的定位精度。
3D Gaussian Splatting对比之前的NeRF算法
一些加载 Gaussian Splatting 的 Web 库
Web 端渲染 Gaussian Splatting 目前已经有很多现成的开源库,比如:
- gaussian-splatting-web 使用 WebGPU 的渲染器
- splat 不是用任何外部依赖的 WebGL 渲染器
- GaussianSplats3D 基于 Three.js 实现的渲染器
- super-splat Web 端的 Gaussian Splatting 编辑器
- Babylon.js 目前,新版本的 Babylon.js 也支持了渲染 Gaussian Splatting
遗憾的是 Cesium 是没有相关的渲染库的。
在 Cesium 中加载
由于没有现成的渲染库,因此只能考虑移植其他的库。这里我移植的是 GaussianSplats3D。
其实实现过程并不算复杂(但确实踩了不少坑),无非就是将 GaussianSplats3D 内部所有的 Three.js 的实现全部换成用 Cesium 来实现即可。
Cesium 的 WebGL 2.0 支持程度不高
在移植库的过程中,很容易发现,Cesium 不支持 GaussianSplats3D 中使用到的一些 WebGL 2.0 的规范和数据类型。
Cesium 虽然说支持 WebGL 2.0,但是这个 “支持” 其实更多的是 “兼容” ,很多 WebGL 2.0 的规范是没有实现的。
要解决这个问题,目前就只能通过修改 Cesium 的源码去实现。
实际效果展示
Cesium加载GaussianSplatting模型
原文链接
Cesium中加载GaussianSplatting模型