Cesium中加载GaussianSplatting模型

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 目前已经有很多现成的开源库,比如:

  1. gaussian-splatting-web 使用 WebGPU 的渲染器
  2. splat 不是用任何外部依赖的 WebGL 渲染器
  3. GaussianSplats3D 基于 Three.js 实现的渲染器
  4. super-splat Web 端的 Gaussian Splatting 编辑器
  5. 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模型

### 如何在 Cesium加载和显示高斯模型 #### 使用 `Model` 或者自定义着色器实现 Gaussian Splatting 由于 Cesium 对于某些 WebGL 2.0 特性的不完全支持,直接加载高斯(Gaussian Splatting模型可能遇到兼容性问题[^3]。然而,可以通过以下几种方式尝试实现: 1. **利用现有的 Model 实体** 如果目标平台已经部分实现了所需功能,则可以直接使用 Cesium 提供的 `Model` 类来加载特定格式的数据文件,并通过调整材质属性模拟高斯效果。 ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); viewer.scene.primitives.add(new Cesium.Model({ uri : 'path/to/gaussian_splatting_model.glb', })); ``` 2. **创建自定义几何图形并应用特殊着色器** 对于更复杂的场景需求,建议开发人员编写自定义顶点/片段着色程序,以充分利用 GPU 计算能力完成高质量渲染任务。这通常涉及到对原始点云数据进行预处理转换成适合传输至客户端的形式,再由前端负责最终呈现工作。 ```javascript // 假设已准备好经过编码后的二进制流 dataBuffer 和对应的描述信息 metadata const primitive = new Cesium.Primitive({ geometryInstances: new Cesium.GeometryInstance({ geometry: new CustomGeometry(dataBuffer, metadata), }), appearance: new Cesium.MaterialAppearance({ material: Cesium.Material.fromType('CustomMaterial'), }) }); viewer.scene.primitives.add(primitive); ``` 需要注意的是,在实际操作过程中还需要解决诸如坐标系变换、光照计算等一系列技术难题。此外,考虑到性能因素,应当尽可能减少不必要的重绘次数,合理设置缓存策略等优化措施也非常重要。 为了更好地适配不同设备环境下的表现差异,开发者往往还需针对具体应用场景做出适当妥协与权衡。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值