上篇:3dTile技术研究-概念详述(5)
3D Tiles定义了扩展数据,允许对基础规范扩展新功能,同时也为了特定于应用程序的元数据而定义了额外数据。
扩展数据允许以新功能来扩展基础规范。这个可选的extensions
字典属性可以添加到任意3D Tiles JSON对象中,其中包含了扩展数据的名字和扩展的特定对象。以下示例显示了具有假设供应商扩展名的tile对象,该扩展名指定了单独的碰撞量。
{
"transform": [
4.843178171884396, 1.2424271388626869, 0, 0,
-0.7993325488216595, 3.1159251367235608, 3.8278032889280675, 0,
0.9511533376784163, -3.7077466670407433, 3.2168186118075526, 0,
1215001.7612985559, -4736269.697480114, 4081650.708604793, 1
],
"boundingVolume": {
"box": [
0, 0, 6.701,
3.738, 0, 0,
0, 3.72, 0,
0, 0, 13.402
]
},
"geometricError": 32,
"content": {
"uri": "building.b3dm"
},
"extensions": {
"VENDOR_collision_volume": {
"box": [
0, 0, 6.8,
3.8, 0, 0,
0, 3.8, 0,
0, 0, 13.5
]
}
}
}
tileset中所有用到的扩展,包括任何后代的外部的tileset中的,都必须在入口的tileset JSON的顶级extensionsUsed
数组属性中列出来,例如,
{
"extensionsUsed": [
"VENDOR_collision_volume"
]
}
所谓“后代的外部的tileset”是指child tile引用了外部的tileset的情况,child tile是后代的。
所有的需要加载和渲染tileset(包括后代的外部的tileset)也都需要在入口的tileset JSON的顶级extensionsRequired
数组属性中列出来,这样也就意味着extensionsRequired
是extensionsUsed
的子集。所有在extensionsRequired
中的数据必须在 extensionsUsed
中存在。
这个extras
属性允许在任何3D Tiles JSON对象中添加特定于应用程序的元数据。下面的示例展示了一个有额外的特定于程序的“name”属性的tile对象。
{
"transform": [
4.843178171884396, 1.2424271388626869, 0, 0,
-0.7993325488216595, 3.1159251367235608, 3.8278032889280675, 0,
0.9511533376784163, -3.7077466670407433, 3.2168186118075526, 0,
1215001.7612985559, -4736269.697480114, 4081650.708604793, 1
],
"boundingVolume": {
"box": [
0, 0, 6.701,
3.738, 0, 0,
0, 3.72, 0,
0, 0, 13.402
]
},
"geometricError": 32,
"content": {
"uri": "building.b3dm"
},
"extras": {
"name": "Empire State Building"
}
}
元数据对应的英文是“metadata”,这里有一个比较好的解释:Metadata is data about data.
See Property reference for the tileset JSON schema reference. The full JSON schema can be found in tileset.schema.json
.
每个tile的content.uri
属性可能指向了包含如何渲染tile的3D内容的二进制数据。这个内容是下面表格中的一种实例。
Format | Uses |
---|---|
Batched 3D Model (b3dm ) |
Heterogeneous 3D models. E.g. textured terrain and surfaces, 3D building exteriors and interiors, massive models. |
Instanced 3D Model (i3dm ) |
3D model instances. E.g. trees, windmills, bolts. |
Point Cloud (pnts ) |
Massive number of points. |
Composite (cmpt ) |
Concatenate tiles of different formats into one tile. |
此表格已经翻译过,参考之前的文章。
一个tileset可以包含tile格式的任何组合。3D Tiles通过使用 Composite tile支持在一个tile中使用不同格式。
3D Tiles包含使用JSON定义的简洁声明式样式以及用一小部分JavaScript增强样式编写的表达式。
样式基于对象(a feature)的属性使用表达式 定义了一个对象是如何显示的,例如show
和color
(RGB和半透明)。
下面的示例将高度超过90的对象(a feature)颜色设置为红色,将其他颜色设置为白色。
{
"color" : "(${Height} > 90) ? color('red') : color('white')"
}
有关完整的详细信息,请参见声明式样式规范。
允许对基础规范扩展新功能,这样就定义了Extensions;
为了有特定于应用程序的元数据,这样就定义了Extras;
传送:
3dTile技术研究-开篇
3dTile技术研究-概述
3dTile技术研究-概念详述(1)
3dTile技术研究-概念详述(2)
3dTile技术研究-概念详述(3)
3dTile技术研究-概念详述(4)
3dTile技术研究-概念详述(5)