Cesium的下一个十年~
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的下一个十年,也期待国内在这个生态里面涌现更多有远见的实体出来~