Cesium的数据格式主要是3DTiles,3DTiles由tileset.json和tile组成,其中tile可以是.b3dm、.i3dm、.pnts、.vctr和.cmpt中的任一种格式文件。此外Cesium还支持其它3D格式,包括glTF、glb、Quantized-mesh(.terrain)等,支持其它数据向3DTiles格式的转换后加载,包括obj、BIM等。
- 3DTiles
3DTiles是一个抽象的数据定义,表现在其没有统一的数据格式,而仅仅是一种命名(也就是说Cesium中的数据到处都可以称为3DTiles格式,但到底什么是3DTiles格式呢?并没有统一的数据格式)。实际上它定义数据的基本框架是瓦片集,瓦片集包括瓦片集数据(tileset.json)和瓦片数据(tile),其中瓦片数据可以是多种文件类型,基本结构如图1.1所示。瓦片集数据是对整个瓦片集的说明以及瓦片的空间组织结构的存储,瓦片数据负责存储单个瓦片内的所有三维地理信息数据,包括模型数据、属性数据等。

图1.1 3DTiles数据基本逻辑框架
3DTiles的瓦片数据有多种:b3dm(Batched 3D Modal,批量3D模型)、i3dm(Instanced 3D Modal,实例3D模型)、pnts(Point Cloud,点云)、vctr(Vector Data,矢量数据)和cmpt(Composite,复合数据)。
- b3dm
b3dm瓦片可以用于存储带纹理的地形表面、三维建筑物的外部和内部(BIM数据)、大量的三维模型数据等。
b3dm的数据结构如图1.2所示,其基本文件结构是文件头部加主体。文件头部记录了文件类型、版本、大小等基本信息,同时也记录了要素表、批量表的大小。主体部分首先是要素表与批量表,然后是存储模型的glb文件。要素表存储要素的元数据(要素个数),批量表存储具体属性(要素id等),要素表与批量表可以采用JSON文本或二进制,没有强制要求。glb文件被内嵌到b3dm文件中,其中使用的几何数据和图片资源可以集成到glb也可以采用外部引用形式。b3dm是3DTiles中用途最多、使用最频繁的瓦片数据种类。

图1.2 b3dm瓦片文件数据结构
- i3dm
i3dm瓦片也存储glb的模型,但是i3dm瓦片强调物体的可复制性。这说明i3dm的模型只用于表达一个对象,通过指定位置该模型对象可以在多个位置出现。官方建议,i3dm可以用于存储大尺度上的树木、风车、消防栓、井盖、路灯、交通信号灯等物体,也可以用于存储小尺度上的螺丝钉、阀门、插座等物体。i3dm体现的是要素的相同性、这种相同性不仅表现在要素的种类也表现在具体的内容,i3dm从很大程度上减少了数据冗余度,这也刚好诠释了i3dm对于“实例”的定义。i3dm文件的基本结构与b3dm类似,如图1.3所示,文件头部仅仅多了对引用glb文件的描述(url或内嵌二进制glTF)。
i3dm与b3dm的差别主要在要素表部分,i3dm的要素表除了实例的个数还需要存储实例出现的位置以及方位,通过位置坐标与方向参数确定实例模型在三维椭球上的渲染位置与姿态。此外,i3dm也提供了在局部地表的东北上坐标框架,当设置这种坐标框架开启时可以不用设置模型方位参数,而改由Cesium运行环境计算所需参数。

1万+

被折叠的 条评论
为什么被折叠?



