3D Tiles介绍(一)

原文地址:点击打开链接

Spec status

The 3D Tiles spec is pre-1.0 (indicated by "version": "0.0" in tileset.json). We expect a draft 1.0 version and the Cesium implementation to stabilize in 2017。

Draft 1.0 Plans

Topic Status
tileset.json

The tileset's spatial hierarchy
瓦片集的空间层次
Solid base, will add features as needed
Batched 3D Model (*.b3dm)

Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ...
纹理地形和表面,3D建筑物外部和内部,海量模型...
Solid base, only minor, if any, changes expected
Instanced 3D Model (*.i3dm)

Trees, windmills, bolts, ...
树木,直升机,螺栓,...
Solid base, only minor, if any, changes expected
Point Cloud (*.pnts)

Massive amount of points
点云
Solid base, only minor, if any, changes expected
Vector Data (*.vctr)

Polygons, polylines, and placemarks
面,线和地标
⚪️ In progress, #124
Composite (*.cmpt)

Combine heterogeneous tile formats
兼容异构瓦片格式
Solid base, only minor, if any, changes expected
Declarative Styling

Style features using per-feature metadata
Solid base, will add features/functions as needed, #2

Introduction简介

In 3D Tiles, a tileset is a set of tiles organized in a spatial data structure, thetree. Each tile has a bounding volume completely enclosing its contents. The tree has spatial coherence; the content for child tiles are completely inside the parent's bounding volume. To allow flexibility, the tree can be any spatial data structure with spatial coherence, including k-d trees, quadtrees, octrees, and grids.

在3D Tiles中,瓦片集是用树形空间数据结构组织的瓦片集合。每个瓦片都有一个包围体完全包围它的内容(content)。树具有空间相干性,子瓦片的内容完全包含在父瓦片的包围体内。为了满足灵活性的需求,树可以是任何具有空间相干性的空间数据结构,包括k-d树,四叉树(quadtrees),八叉树(octrees),格网(grids)。

To support tight fitting volumes for a variety of datasets from regularly divided terrain to cities not aligned with a line of longitude or latitude to arbitrary point clouds, the bounding volume may be an oriented bounding box, a bounding sphere, or a geographic region defined by minimum and maximum longitudes, latitudes, and heights.

为了使各种各样数据集(从规则分割的地形,到不沿经纬线对齐的城市,到任意点云)的包围体紧凑,包围体可以是有向包围盒,包围球,最大最小经纬度和高程定义的地理区域。

A tile references a feature or set of features, such as 3D models representing buildings or trees, points in a point cloud, or polygons, polylines, and points in a vector dataset. These features may be batched together into essentially a single feature to reduce client-side load time and WebGL draw call overhead.

一个瓦片代表一个要素或一个要素集,例如,以建筑物、绿化为代表3D 模型,点云中的点,和向量数据集中的点、多边形、折线。这些要素可能被批处理成单个要素,以便减少客户端加载时间和WebGL绘制调用的开销。

Tile metadata 瓦片元数据

The metadata for each tile - not the actual contents - are defined in JSON. For example:

每个瓦片的元数据并不是实际的内容数据,元数据定义在JSON文件中。例如:

{
  "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
      ]
    },
    "url": "2/0/0.b3dm"
  },
  "children": [...]
}

The boundingVolume.region property is an array of six numbers that define the bounding geographic region in WGS84 / EPSG:4326 coordinates with the order[west, south, east, north, minimum height, maximum height]. Longitudes and latitudes are in radians, and heights are in meters above (or below) theWGS84 ellipsoid. Besidesregion, other bounding volumes, such asbox and sphere, may be used.

boundingVolume.region属性是6个数的数组,定义了WGS84/EPSG:4326坐标系下的包围地域,数组顺序是[西经,南纬,东经,北纬,最小高程,最大高程]。经纬度单位是弧度,高程单位是米(高于或低于WGS84椭球体)。除了region,也可以用box、sphere属性。

The geometricError property is a nonnegative number that defines the error, in meters, introduced if this tile is rendered and its children are not. At runtime, the geometric error is used to computeScreen-Space Error (SSE), i.e., the error measured in pixels. The SSE determinesHierarchical Level of Detail (HLOD) refinement, i.e., if a tile is sufficiently detailed for the current view or if its children should be considered.

geometricError属性是一个非负数字,定义了一个以米为单位的误差,如果当前瓦片被渲染而它的子瓦片不被渲染,则引入这个误差。运行时,此误差用来计算SSE,即用像素测量的误差。SSE用来判定HLOD细化,即,一个瓦片在当前视图是否足够精细,它的子瓦片是否需要考虑。

An optional viewerRequestVolume property (not shown above) defines a volume, using the same schema asboundingVolume, that the viewer must be inside of before the tile's content will be requested and before the tile will be refined based ongeometricError. See the Viewer request volume section.

可选属性viewerRequestVolume使用和boundingVolume相同的概要,在瓦片内容被请求之前和瓦片被精细(依据geometricError属性)之前,视景器必须被包含在这个体中。

The refine property is a string that is either"REPLACE" for replacement refinement or"ADD" for additive refinement. It is required for the root tile of a tileset; it is optional for all other tiles. Whenrefine is omitted, it is inherited from the parent tile.

refine属性是这两个字符串之一:“REPLACE”(置换细化),“ADD”(附加细化)。这个属性对于瓦片集根瓦片是必须的,对其他瓦片是可选的。当省略refine属性时,从父瓦片继承。

The content property is an object that contains metadata about the tile's content and a link to the content.content.url is a string that points to the tile's contents with an absolute or relative url. In the example above, the url,2/0/0.b3dm, has a TMS tiling scheme, {z}/{y}/{x}.extension, but this is not required; see theroadmap Q&A.

content属性是一个对象,包含关于瓦片内容的元数据和一个到瓦片的连接。content.url是一个字符串,指向瓦片数据,连接可以是绝对或相对url。例子中的url,2/0/0.b3dm,是瓦片地图服务(TMS)命名规则,{z}/{y}/{x}.extension

The url can be another tileset.json file to create a tileset of tilesets. SeeExternal tilesets.

url可以是另外一个tileset.json文件,用来创建瓦片集的子瓦片集。

A file extension is not required for content.url. A content'stile format can be identified by themagic field in its header, or otherwise as an external tileset if the content is JSON.

content.url的文件扩展名不是必须的。content的瓦片格式(.b3dm, .i3dm, .pnts, .vctr, .cmpt)可以通过在其header处的magic字段进行判断,或者如果是JSON文件就作为外部瓦片集对待。(A tile is composed of a header section immediately followed by a body section. 参加各瓦片格式的Layout)

content.boundingVolume defines an optional bounding volume similar to the top-levelboundingVolume property. But unlike the top-levelboundingVolume property,content.boundingVolume is a tightly fit bounding volume enclosing just the tile's contents. This is used for replacement refinement;boundingVolume provides spatial coherence andcontent.boundingVolume enables tight view frustum culling. The screenshot below shows the bounding volumes for the root tile forCanary Wharf.boundingVolume, shown in red, encloses the entire area of the tileset;content.boundingVolume shown in blue, encloses just the four features (models) in the root tile.

content.boundingVolume属性定义一个可选的包围体属性,类似顶层的boundingVolume属性。不同的是,它是一个紧凑的包围体,仅仅包含瓦片内容。它用来作置换细化,boundingVolume提供空间相干性,content.boundingVolume允许紧凑视锥体筛选。下图中,红色包围体代表根瓦片的boundingVolume,它包围了瓦片集的整个区域,蓝色包围体展示content.boundingVolume,它仅仅包围了根瓦片中的四个要素(模型)。

3D Tiles介绍(一)

content is optional. When it is not defined, the tile's bounding volume is still used for culling (seeGrids).

content是可选的。当没有定义content属性时,瓦片的包围体依然用作筛选。

An optional transform property (not shown above) defines a 4x4 affine transformation matrix that transforms the tile'scontent,boundingVolume, and viewerRequestVolume as described in theTile transform section.

可选的transform属性定义一个4X4的仿射变换矩阵,用来变换瓦片的content,boundingVolum和viewerRequestVolume。

children is an array of objects that define child tiles. See thesection below.

children属性是定义子瓦片的对象数组。

3D Tiles介绍(一)