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

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

1.1 Tile JSON

一个tile JSON对象由以下属性构成。

3dTile技术研究-概念详述(3)_第1张图片

下面的示例展示了一个没有叶子节点的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可以理解成基本对象,更简化来说就理解成构件或建筑就可以。

3dTile技术研究-概念详述(3)_第2张图片

这个可选的transform属性(在上述示例中未出现)定义了一个 4x4的放射矩阵,就像在Tile transform章节中描述的那样,它作用于tile的 contentboundingVolumeboundingVolume

这个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技术研究-概念详述(3)_第3张图片

其实这里更像是总结,因为前面的文章已经分片讲过这些内容了,既然又来一遍,不妨作为总结,趁机巩固一下。

 

传送:

3dTile技术研究-开篇

3dTile技术研究-概述

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

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

 

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