参考来源https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification
数据组织结构
有三类数据组成Tileset.json类似索引文件,Styling 样式文件和模型等数据组成。
一、Tileset.json
cesuim加载3dTile 数据时就是先读取Tileset.json文件。
{
"asset" : {
"version": "1.0",
"tilesetVersion": "e575c6f1-a45b-420a-b172-6449fa6e0a59",
},
"properties": {
"Height": {
"minimum": 1,
"maximum": 241.6
}
},
"geometricError": 494.50961650991815,
"root": {
"boundingVolume": {
"region": [
-0.0005682966577418737,
0.8987233516605286,
0.00011646582098558159,
0.8990603398325034,
0,
241.6
]
},
"geometricError": 268.37878244706053,
"refine": "ADD",
"content": {
"uri": "0/0/0.b3dm",
"boundingVolume": {
"region": [
-0.0004001690908972599,
0.8988700116775743,
0.00010096729722787196,
0.8989625664878067,
0,
241.6
]
}
},
"children": [..]
}
}
1. asset 数据版本信息
- version: 数据版本号
2. properties 数据集的外包框信息
- 数据外包立方体
3. geometricError
单位是米 (关于这个的含义请看另一帖子3DTile 的geometricError含义)
4. root 跟节点
tileset.json 的四叉树、kd树或八叉树的跟节点
- 四叉树
- kd树
当每个图块具有由平行于x,y或z轴(或纬度,经度,高度)的分割平面分隔的两个子图时,创建kd树。当水平沿树向下增加时,分割轴通常是循环旋转的,并且可以使用中值分割,表面区域启发法或其他方法来选择分割平面。
- 八叉树
八叉树通过使用三个正交分裂平面来扩展四叉树以将瓦片细分为八个子元素。
1)transfrom 变换矩阵
变换矩阵不是必须的,可以没有。若有变换矩阵,则从根节点作用到底部。
- b3dm 变换矩阵T=T0* T1 * T3
- i3dm 变换矩阵T= T0 * T1 * T4
- pnts 变换矩阵T=T0*T2
2)boundingVolume 外包范围
-
外包矩形体
-
外包球
3)refine 加载方式
是加载当前子节点的方式,是3dTile的一个重要字段有两个参数
- ADD 就是加载当前节点是新增的方式。
父节点 | 子节点 |
---|---|
- REPLACE 就是加载当前节点替换父节点的过程
父节点 | 子节点 |
---|---|