3 月 23 日 Cesium 的 CEO PATRICK COZZI 在官方博客上发表了一篇题为 “The CesiumJS Roadmap” 的文章,用来总结 Cesium 过去十年的成果以及未来 Cesium 演进的技术路线。
谈技术,十年太长,这个层面上只能谈态度,未来一年还是比较容易些,毕竟按照 PATRICK COZZI 的说法过去 Cesium 的发展也是完全超出开始的预期的,当然从现在开始 Cesium 开始了下一个十年的征程。
一、过去十年的成就
1、CesiumJS 在过去的时间中累计下载量已经达到了两百万,仅仅过去一年就达到将近一百万,我相信中国区应该是贡献了大多数;
2、论坛的发文数量超过了 45000 篇;
3、Cesium 保持了和 WebGL 生态的一起成长,并且和两个著名的开放标准 glTF 和 3D Tiles 紧密关联,当然其中 3D Tiles 也是 Cesium 的杰作,在科技领域有一个行业真谛:“一流企业定标准、二流企业做品牌、三流企业做产品”,从这个角度上看,Cesium 现在算是一家一流的企业了,虽然产品上还有些差强人意,但是从 Cesium 的战略布局上,他们已经开始关注以 3D Tiles 为核心的生态构建上了;
二、下一个十年的开始
1、3D Tiles 的下一步
Cesium 一方面相信 3D Tiles 未来将会成为整个地理空进生态的一个基础设施,另外一方面也看到了折现年整个行业变化的一些趋势:
- 人工智能和机器学习的发展,使得能够生成更加丰富的语义元数据;
- 跨行业的时空 3D 地理空间数据使用需求;
- 建模与仿真领域从仿真模型到实景模型的转变;
- 空间可视化和分析逐渐开始使用一个通用的空间数据结构;
- 矢量图层叠加 3D 模型的使用需求;
- 围绕 glTF 的开放生态的成长;
所以 3D Tiles 未来会在如下几个方面进行扩展增强:
(1)通过扩展 Batch Table 概念提高要素元数据集成的颗粒度;
(2)隐式定义用于空间剖分的空间数据结构,以前用的可能直接就是四叉树索引或者八叉树索引,这边看介绍上是要引入 Z 曲线,这个 Z 曲线应该是对剖分数据的进一步组织形式,其实 Z 曲线的价值就是将二维空间的瓦片或者三维空间的瓦片按照空间自相关的顺序进行一维线性的物理存储,提高数据获取的效率;
(3)更干净的与 glTF 生态互操作,这个部分按照 extensions/3DTILES_content_gltf/0.0.0/README.md 中描述就是,未来会支持直接将 glTF 和 GLB 生成 3D Tiles 的 Content;
(4)支持瓦片格式的矢量点、线、面的支持,这部分其实就是针对我们目前针对属性数据挂接方面的一些痛点,目前别的一些商业平台通过要素服务扩展的方式已经实现了,按照这块计划明年 3D 矢量瓦片也会增加进来以保证单体化的支持;
2、 glTF: KTX 2.0, MESHOPT 和 PBR 的下一步
glTF 是有效传输 3D 模型的开放标准。这是一种将单个 3D 模型加载到 CesiumJS 中的格式,并且我相信它将成为有史以来使用最广泛的 3D 格式。
CesiumJS 从一开始就支持 glTF,CesiumJS 与 glTF 的发展保持同步。Cesium 使命的一部分是将创新从计算机图形学引入地理空间。
那基于 glTF Cesium 准备在如下三个方面增强,包括纹理的压缩支持 KTX 2.0、网格的压缩支持 MESHOPT、材质模型支持 PBR:
(1)KTX 2.0 启用了压缩纹理以在 GPU 供应商之间进行传输和运行时使用,从而实现了减少内存,带宽和功耗的通用优化。在 3D 地理空间中,通过卫星和无人机捕获的图像在全球范围内激增了纹理的爆炸性增长,因此对纹理的压缩很有必要。
(2)glTF 的 MESHOPT 扩展定义了缓冲区和几何压缩,可以高效地进行编码,传输和解码,并保持压缩在 GPU 内存中。这是计算机科学中罕见的近乎双赢的折衷方案,在我们的用例中,MESHOPT + gzip 的压缩后的体积几乎与 Draco 一样小,同时解码速度更快。使用 WebAssembly SIMD,可以在现代台式机上每秒解码约 1 GB。在 CesiumJS 中实现 MESHOPT 将提高具有大量几何图形,动画或实例的 glTF 模型的性能;高密度 3D Tileset,例如倾斜三维模型;以及最后生成的地形。
(3)glTF 的 PBR Next 计划召集全球基于物理渲染(PBR)的专家,以提高 glTF 从金属粗糙度和镜面光泽度开始的材质表示,以支持各种新的视觉效果,例如透明涂层,透射率和体积工作。在 CesiumJS 中添加对 PBR 的支持 将提高 glTF 模型以及 3D Tiles 的视觉质量。
3、海底空间支持
以前 Cesium 集成的数据更多的是从卫星影像、无人机倾斜等数据,这是太空采集和天空采集的部分,但是 Cesium 觉得对于空间的集成应该更彻底一些,不仅仅要做地面物体还应该增加对海底空间的集成,因为未来 Cesium 会支持海底地形以及海面可视化的支持。
4、开发者体验提升
CesiumJS 拥有 33,000 多个提交和 200 个终身贡献者,这是一个大型项目,开发者的生产力和舒适性对贡献者和用户都至关重要。自 CesiumJS 诞生以来,JavaScript,Web API,IDE 和工具都已经有了比较大的发展。为此 Cesium 决定同步技术栈,从原生的 Promise 到 updated testing 架构,再到将 npm 广泛用于依赖管理。
Cesium 的开发体验确实是不好,他们中间也有一些努力要去改善这些问题,但是总体感觉还是隔靴搔痒,框架太大了动起来太麻烦,使用者的体验一直得不到提升,和主流的一些框架集成总得需要一些非主流的方法,十分不优雅,这也是 Cesium 自身代码质量管理上的一个挑战。
5、学习资料和持续维护
随着 3D 地理空间作为一个领域的发展,对学习资料的需求仍然大于对供应资料的需求。因此,Cesium 计划推出有关相机控制,交互式绘图以及在 3D Tiles 中使用和扩展元数据的教程, 还计划为示例代码存储库创建一个新的 Sandcastle,以便对大量代码示例进行更好的搜索和组织,以便开发者可以轻松查找所需内容。
不仅要期待 Cesium 的下一个十年,也期待国内在这个生态里面涌现更多有远见的实体出来~