您的位置:首页 > 其它

关于cesium的3dTiles数据的理解

2017-11-06 21:10 369 查看
cesium是基于js编写的webGL三维地图引擎,它支持3维数据,2.5维数据的显示,是一个优秀的三维显示软件,如果你要选择开源、高效、免费的3D渲染引擎,那么cesium是一个你值得学习的优秀开源软件。
3DTiles数据集是cesium小组AnalyticlGraphics与2016年3月定义的一种数据集,3DTiles数据集以分块、分级渲染,将大数据量三维数据以分块,分层的形式组织起来,可以大量减轻浏览器和GPU的负担是一个优秀的,并且格式公开的数据格式。

前面说到,cesium是以js编写的webGL三维地图渲染引擎,既然如此,cesium理所应当应该支持gltf格式数据的加载和渲染,cesium的initBIM()方法可以加载.glb格式的数据,所谓glb数据,就是以gltf/bin/glsl等文件组织而成的三维精细模型的二进制格式,.glb格式的定时首先是为了数据的交换,它将所有的三维模型所需要的文件以一个文件的方式组织起来,便于数据的共享。其次,定义.glb格式是为了方便机器解析数据,以更快更高效的方式来读取数据内容,进入到渲染引擎中进行渲染。
AnalyticlGraphics小组在glb的基础上加上28字节的头,进而定义了.b3dm数据(实际上定义一个数据格式是件很容易的事,但难以解决的是大数据量的进入以后,数据格式的扩充的问题,AnalyticlGraphics认识到了这个问题,只在glb的基础上进行了扩充,并没有实质上内容的改变),值得注意的一件事就是,由于gltf格式是一种开源的格式,会衍生出很多其它很多的版本,3dTiles数据集采用 KHR_binary_glTF格式的二进制格式文件,这种文件的特点可以通过查看二进制的.b3dm数据发现,前28字节是b3dm的头,依次是20字节的glTF头,跟着就是glTF的json文件,查看这部分文件可知,有buffviews的节点用来精确定位到后边的二进制文件,像一些纹理图片、几何数据,着色语言等等,3dTiles数据集采用glb的格式的定义可以更快的加载数据。
那么3dTiles数据的重点在哪里?为何不直接采用加载精细模型的方式?下面介绍一个与之跟随的json数据。
json数据是3dtiles数据集的精华所在,json数据可以认为是每个三维数据的元数据,json数据里边有几个节点的性质十分重要。boundingVolume节点是用来表示三维模型的范围,注意它是以wgs84直角坐标的方式存储的,它不明文存储数据的地理位置,但是可以从wgs84直角坐标中反解出地理左边,也就是经纬度坐标。refine节点有两个属性,add/replace属性,其意义是在加载这个节点数据时,时在上级数据的基础上add还是replace。
总之json数据的定义十分灵活,可以完成很多功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: