上篇:3dTile技术研究-概念详述(2)
一个tile JSON对象由以下属性构成。
下面的示例展示了一个没有叶子节点的tile。
{
"boundingVolume": {
"region": [
-1.2419052957251926,
0.7395016240301894,
-1.2415404171917719,
0.7396563300150859,
0,
20.4
]
},
"geometricError": 43.88464075650763,
"refine" : "ADD",
"content": {
"boundingVolume": {
"region": [
-1.2418882438584018,
0.7395016240301894,
-1.2415422846940714,
0.7396461198389616,
0,
19.4
]
},
"uri": "2/0/0.b3dm"
},
"children": [...]
}
boundingVolume
定义了一个包围tile的体,在运行时它被用来判断要渲染哪些tile。上述的示例使用了一个region
体,但是其它的包围体(比如OBB包围盒和包围球)也可能被使用。
geometricError
属性是一个非负的数值,它以米为单位定义了误差,用来判断是否是当前tile要被渲染而不渲染它的children tiles。在运行时,geometricError
用来计算以像素为单位的Screen-Space Error (SSE)。SSE用来判断对于当前视图来说该tile是否足够详细或者是否需要考虑渲染它的children tiles,参考 Geometric error。
这个可选的viewerRequestVolume
属性(在上面的示例中未出现)定义了一个和包围体格式相同的体,在tile的内容将要被请求前,在tile基于geometricError
判定将要被细化前,相机必须位于该体范围内。
这个refine
属性是一个字符串,它既可以是"REPLACE"
(对应细化类型为replacement)也可以是"ADD"
(对应细化类型为additive),具体请参考Refinement。对于root tile来说是需要这个属性的,对于其它tile来说就是可选项。一个tileset可以使用"REPLACE"
和 "ADD"
的任意组合。当忽略refine
属性时,就是从parent tile那里继承对应值。
这个content
属性是一个包含tile渲染内容元数据的对象。content.uri
是一个指向了tile二进制内容(参考Tile format specifications),或为了创建属于该tileset的tileset的另一个tileset JSON对象(参考External tilesets)。
对于content.uri
来说,文件的扩展名不是必须的。tile内容的格式可以定义在magic
字段中,或者是一个外部的tileset(如果内容是JSON对象)。
这个content.boundingVolume
属性定义了一个可选的包围体,和顶级的boundingVolume
属性类似。不同于顶级boundingVolume
属性的是,content.boundingVolume
是一个紧密包围tile内容的包围体。boundingVolume
提供空间连贯性,而content.boundingVolume
允许进行紧密的视锥体平截剔除,而不呈现任何可能不在视域范围内的内容。当它未定义时,tile的包围体(即boundingVolume
)仍用于剔除(请参见Grids)。
下面的截图展示了Canary Wharf的root tile的包围体。红色显示的boundingVolume
包含了tileset的整体区域,而蓝色显示的content.boundingVolume
则仅仅包含了root tile表示的4个对象。
已经多次提到:该系列文章中features或models可以理解成基本对象,更简化来说就理解成构件或建筑就可以。
这个可选的transform
属性(在上述示例中未出现)定义了一个 4x4的放射矩阵,就像在Tile transform章节中描述的那样,它作用于tile的 content
、boundingVolume
和boundingVolume
。
这个children
属性是定义了child tile的对象数组。每个child tile的内容被完全包含在其parent tile的boundingVolume
中,并且通常来说,child tile的geometricError
要比parent tile的小。对于叶子tile,children
属性可能为空或者没有被定义。详细参考下面的Tileset JSON章节。
See Property reference for the tile JSON schema reference. The full JSON schema can be found in tile.schema.json
.
原文章提供了一些格式的schema文件,详细描述了对应部分的格式,对于学习3D Tiles格式很有帮助,如下,
其实这里更像是总结,因为前面的文章已经分片讲过这些内容了,既然又来一遍,不妨作为总结,趁机巩固一下。
传送:
3dTile技术研究-开篇
3dTile技术研究-概述
3dTile技术研究-概念详述(1)
3dTile技术研究-概念详述(2)