3dTile技术研究-概念详述(6)

上篇:3dTile技术研究-概念详述(5)

1. 特定扩展数据和应用程序附加数据(Specifying extensions and application specific extras)

3D Tiles定义了扩展数据,允许对基础规范扩展新功能,同时也为了特定于应用程序的元数据而定义了额外数据。

1.1 扩展(Extensions)

扩展数据允许以新功能来扩展基础规范。这个可选的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数组属性中列出来,这样也就意味着extensionsRequiredextensionsUsed的子集。所有在extensionsRequired中的数据必须在 extensionsUsed中存在。

1.2 额外数据(Extras)

这个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.

2. Tile format specifications

每个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中使用不同格式。

3. 声明式样式规范(Declarative styling specification)

3D Tiles包含使用JSON定义的简洁声明式样式以及用一小部分JavaScript增强样式编写的表达式。

样式基于对象(a feature)的属性使用表达式 定义了一个对象是如何显示的,例如showcolor(RGB和半透明)。

下面的示例将高度超过90的对象(a feature)颜色设置为红色,将其他颜色设置为白色。

{
    "color" : "(${Height} > 90) ? color('red') : color('white')"
}

有关完整的详细信息,请参见声明式样式规范。 

4. 小结

允许对基础规范扩展新功能,这样就定义了Extensions;

为了有特定于应用程序的元数据,这样就定义了Extras;

 

传送:

3dTile技术研究-开篇

3dTile技术研究-概述

3dTile技术研究-概念详述(1)

3dTile技术研究-概念详述(2)

3dTile技术研究-概念详述(3)

3dTile技术研究-概念详述(4)

3dTile技术研究-概念详述(5)

 

你可能感兴趣的:(BIM,图形学,lod,3dtiles,cesium,BIM,图形学)