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 |
在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绘制调用的开销。
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.
{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,它仅仅包围了根瓦片中的四个要素(模型)。
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属性是定义子瓦片的对象数组。