Cesium即将迎来对I3S的支持~
最近在网上冲浪的过冲中发现Cesium GitHub仓库PR列表上有一个Tamrat-B的“Added I3S data source support in Cesium #9634”代码合并的请求,主要内容就是有四位大哥针对Cesium提交了针对ArcGIS i3s 3D Object以及IntegratedMesh图层的支持代码,不出意外这些代码如果被合并到主版本中,Cesium很快就可以支持ArcGIS I3S格式的数据源了。
目前在Web三维端有三个主要的标准,3D Tiles和I3S是被OGC采纳的行业标准,国内的就是超图牵头的S3M团体标准,这份代码的提交就可以让Cesium同时能够集成两方面的开放标准,虽然超图是基于Cesium做了闭源定制,但是目前似乎没有将S3M支持合并到开源版本的意思,如果这三个标准可以集成到一个体系下,这对多源融合还是有很大帮助的,避免了不必要的碎片化,比如现在大家都将自己独有的数据源以插件的方式集成到UE中,就是一个很好的模式。
在Pull Request的 Files Changes部分列出了本次提交中主要的8个修改,包括一些demo代码以及数据源上增加了I3SDataSource的支持。根据代码的注释我们可以大概了解作者集成的思路:
1、数据源上作者选择的是直接接入Scene Server的URL,然后遍历加载场景中所有图层的数据;
2、针对每个图层,都相应的创建一个Cesium 3D TileSet和根节点,这部分其实就是作者主要做的工作就是解析I3S并将其映射到3D Tiles格式;
3、瓦片加载部分,首先创建的是瓦片的外包这样就可以被Cesium的LOD调度使用,然后再根据可视情况进行实时的瓦片加载以及转换;
4、在请求上会创建异步的Web Work进行I3S Geometry到Cesium B3DM的转换,这个部分比之前验证的deck.gl要做的好,当时验证的deck.gl在加载I3S的时候是单线程同步阻塞,小场景没问题,场景一大就用不来了;
有兴趣的各位老铁可以保持持续的跟进~