You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+18-18
Original file line number
Diff line number
Diff line change
@@ -90,7 +90,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE)
90
90
*[Introducing 3D Tiles](https://cesium.com/blog/2015/08/10/introducing-3d-tiles/) - the motivation for and principles of 3D Tiles. Read this first if you are new to 3D Tiles.
91
91
*[The Next Generation of 3D Tiles](https://cesium.com/blog/2017/07/12/the-next-generation-of-3d-tiles/) - future plans for 3D Tiles.
92
92
***Cesium implementation**
93
-
* Download [Cesium 1.35 or later](https://cesiumjs.org/downloads/) and check out the [Sandcastle examples labeled '3D Tiles'](http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=3D%20Tiles%20BIM.html&label=3D%20Tiles).
93
+
* Download [Cesium 1.35 or later](https://cesiumjs.org/downloads/) and check out the [Sandcastle examples labeled '3D Tiles'](http://cesiumjs.org/Cesium/Build/Apps/Sandcastle/index.html?src=3D%20Tiles%20BIM.html&label=3D%20Tiles).
*[3d-tiles-samples](https://github.com/AnalyticalGraphicsInc/3d-tiles-samples) - sample tilesets for learning how to use 3D Tiles
@@ -128,13 +128,13 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE)
128
128
129
129
## Spec status
130
130
131
-
The 3D Tiles spec is pre-1.0 (indicated by `"version": "0.0"` in the tileset JSON). We expect a draft 1.0 version and the Cesium implementation to stabilize in 2017; see the [remaining items](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues?q=is%3Aissue+is%3Aopen+label%3A%22draft+1.0%22).
131
+
The 3D Tiles spec is pre-1.0 (indicated by `"version": "0.0"` in the tileset JSON). We expect a draft 1.0 version and the Cesium implementation to stabilize in 2017; see the [remaining items](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues?q=is%3Aopen+is%3Aissue+label%3A1.0).
132
132
133
133
**Draft 1.0 Plans**
134
134
135
135
Topic | Status
136
136
---|---
137
-
[Tileset JSON](#tileset-json-file)<br /><br />The tileset's spatial hierarchy | :white_check_mark:**Solid base**, will add features as needed
137
+
[Tileset JSON](#tileset-json-files)<br /><br />The tileset's spatial hierarchy | :white_check_mark:**Solid base**, will add features as needed
138
138
[Batched 3D Model](TileFormats/Batched3DModel/README.md) (*.b3dm)<br /><br />Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark:**Solid base**, only minor, if any, changes expected
139
139
[Instanced 3D Model](TileFormats/Instanced3DModel/README.md) (*.i3dm)<br /><br />Trees, windmills, bolts, ... | :white_check_mark:**Solid base**, only minor, if any, changes expected
140
140
[Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)<br /><br />Massive amount of points | :white_check_mark:**Solid base**, only minor, if any, changes expected
@@ -146,7 +146,7 @@ Topic | Status
146
146
147
147
Topic | Status
148
148
---|---
149
-
Terrain v2 | :white_circle:**Not started**, [quantized-mesh](https://cesiumjs.org/data-and-assets/terrain/formats/quantized-mesh-1.0.html) is a good starting point; in the meantime, folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md)
149
+
Terrain v2 | :white_circle:**Not started**, [quantized-mesh](https://github.com/AnalyticalGraphicsInc/quantized-mesh/blob/master/README.md) is a good starting point; in the meantime, folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md)
150
150
[OpenStreetMap](TileFormats/OpenStreetMap/README.md) | :white_circle:**Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md)
151
151
Stars | :white_circle:**Not started**
152
152
@@ -186,7 +186,7 @@ Optionally, a separate 3D Tile Style may be applied to a tileset.
186
186
187
187
3D Tiles use URLs to reference tile content.
188
188
189
-
All URLs must be valid resolvable URIs, and may be absolute or relative. When the url is relative, it's base is always referring to the referring tileset `.json` file.
189
+
All URLs must be valid resolvable URIs, and may be absolute or relative. When the url is relative, its base is always relative to the referring tileset `.json` file.
190
190
191
191
## Tiles
192
192
@@ -232,21 +232,21 @@ An optional `viewerRequestVolume` property (not shown above) defines a volume, u
232
232
233
233
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. When `refine` is omitted, it is inherited from the parent tile.
234
234
235
-
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 the [roadmap Q&A](#How-do-I-request-the-tiles-for-Level-n).
235
+
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 the [roadmap Q&A](#how-do-i-request-the-tiles-for-level-n).
236
236
237
237
The url can be another tileset JSON to create a tileset of tilesets. See [External tilesets](#external-tilesets).
238
238
239
239
A file extension is not required for `content.url`. A content's [tile format](#tile-formats) can be identified by the `magic` field in its header, or otherwise as an external tileset if the content is JSON.
240
240
241
-
`content.boundingVolume` defines an optional bounding volume similar to the top-level `boundingVolume` property. But unlike the top-level `boundingVolume` 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 and `content.boundingVolume` enables tight view frustum culling. The screenshot below shows the bounding volumes for the root tile for [Canary Wharf](http://cesiumjs.org/CanaryWharf/). `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.
241
+
`content.boundingVolume` defines an optional bounding volume similar to the top-level `boundingVolume` property. But unlike the top-level `boundingVolume` property, `content.boundingVolume` is a tightly fit bounding volume enclosing just the tile's contents. `boundingVolume` provides spatial coherence and `content.boundingVolume` enables tight view frustum culling. The screenshot below shows the bounding volumes for the root tile for [Canary Wharf](http://cesiumjs.org/CanaryWharf/). `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.
242
242
243
243

244
244
245
245
`content.boundingVolume` is optional. When it is not defined, the tile's bounding volume is still used for culling (see [Grids](#grids)).
246
246
247
247
An optional `transform` property (not shown above) defines a 4x4 affine transformation matrix that transforms the tile's `content`, `boundingVolume`, and `viewerRequestVolume` as described in the [Tile transform](#tile-transform) section.
248
248
249
-
`children` is an array of objects that define child tiles. See the [section below](#tilesetjson).
249
+
`children` is an array of objects that define child tiles. See the [section below](#tileset-json-files).
250
250
251
251

252
252
@@ -276,7 +276,7 @@ The units for all linear distances are meters.
276
276
277
277
All angles are in radians.
278
278
279
-
3D Tiles do not explicitly store Cartographic coordinates (longitude, latitude, and height); these values are implicit in WGS84 Cartesian coordinates, which are efficient for the GPU to render since they do not require a non-affine coordinate transformation. A 3D Tiles tileset can include application-specific metadata, such as Cartographic coordinates, but the semantics are not part of the 3D Tiles specification.
279
+
3D Tiles do not explicitly store geographic coordinates (longitude, latitude, and height); these values are implicitly in WGS84 Cartesian coordinates, which are efficient for the GPU to render since they do not require a non-affine coordinate transformation. A 3D Tiles tileset can include application-specific metadata, such as geographic coordinates, but the semantics are not part of the 3D Tiles specification.
280
280
281
281
### Tile transform
282
282
@@ -288,7 +288,7 @@ The `transform` property applies to:
288
288
*`tile.content`
289
289
* Each feature's position.
290
290
* Each feature's normal should be transformed by the top-left 3x3 matrix of the inverse-transpose of `transform` to account for [correct vector transforms when scale is used](http://www.realtimerendering.com/resources/RTNews/html/rtnews1a.html#art4).
291
-
*`content.boundingVolume`, except when `content.boundingVolume.region` is defined, which is explicitly in [WGS84 / EPSG:4326 coordinates](http://spatialreference.org/ref/epsg/wgs-84/).
291
+
*`content.boundingVolume`, except when `content.boundingVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates.
292
292
*`tile.boundingVolume`, except when `tile.boundingVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates.
293
293
*`tile.viewerRequestVolume`, except when `tile.viewerRequestVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates.
294
294
@@ -326,8 +326,8 @@ function computeTransform(tile, transformToRoot) {
326
326
327
327
var children =tile.children;
328
328
var length =children.length;
329
-
for (vark=0; k< length; ++k) {
330
-
var child = children[k];
329
+
for (vari=0; i< length; ++i) {
330
+
var child = children[i];
331
331
var childToRoot =defined(child.transform) ?Matrix4.fromArray(child.transform) :Matrix4.clone(Matrix4.IDENTITY);
@@ -412,7 +412,7 @@ For more on request volumes, see the [sample tileset](https://github.com/Analyti
412
412
413
413
3D Tiles use one main tileset `.json` file as the entry point to define a tileset.
414
414
415
-
See [schema](schema) for the detailed tileset JSON schema.
415
+
See the [schema](schema) for the detailed tileset JSON schema.
416
416
417
417
Here is a subset of the tileset file used for [Canary Wharf](http://cesiumjs.org/CanaryWharf/) (also see the complete file, [`tileset.json`](examples/tileset.json)):
418
418
```json
@@ -467,11 +467,11 @@ The top-level object in the tileset JSON has four properties: `asset`, `properti
467
467
468
468
`geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered.
469
469
470
-
`root` is an object that defines the root tile using the JSON described in the [above section](#Tile-Metadata). `root.geometricError` is not the same as the tileset's top-level `geometricError`. tileset. The tileset's `geometricError` is the error when the entire tileset is not rendered; `root.geometricError` is the error when only the root tile is rendered.
470
+
`root` is an object that defines the root tile using the JSON described in the [above section](#tile-content). `root.geometricError` is not the same as the tileset's top-level `geometricError`. tileset. The tileset's `geometricError` is the error when the entire tileset is not rendered; `root.geometricError` is the error when only the root tile is rendered.
471
471
472
-
`root.children` is an array of objects that define child tiles. Each child tile has a `boundingVolume` fully enclosed by its parent tile's `boundingVolume` and, generally, a `geometricError` less than its parent tile's `geometricError`. For leaf tiles, the length of this array is zero, and `children` may not be defined.
472
+
`root.children` is an array of objects that define child tiles. Each child tile's `content.boundingVolume` is fully enclosed by its parent tile's `boundingVolume` and, generally, a `geometricError` less than its parent tile's `geometricError`. For leaf tiles, the length of this array is zero, and `children` may not be defined.
473
473
474
-
See the [Q&A below](#Will-a-tileset-file-be-part-of-the-final-3D-Tiles-spec) for how a tileset file will scale to a massive number of tiles.
474
+
See the [Q&A below](#will-a-tileset-file-be-part-of-the-final-3d-tiles-spec) for how a tileset file will scale to a massive number of tiles.
475
475
476
476
### External tilesets
477
477
@@ -636,7 +636,7 @@ No, 3D Tiles are a general spec for streaming massive heterogeneous 3D geospatia
636
636
637
637
#### What is the relationship between 3D Tiles and glTF?
638
638
639
-
[glTF](https://www.khronos.org/gltf), the runtime asset format for WebGL, is an open standard for 3D models from Khronos (the same group that does WebGL and COLLADA). Cesium uses glTF as its 3D model format, and the Cesium team contributes heavily to the glTF spec and open-source COLLADA2GLTF converter. We recommend using glTF in Cesium for individual assets, e.g., an aircraft, a character, or a 3D building.
639
+
[glTF](https://www.khronos.org/gltf) is an open standard for 3D models from Khronos (the same group that does WebGL and COLLADA). Cesium uses glTF as its 3D model format, and the Cesium team contributes heavily to the glTF spec and open-source COLLADA2GLTF converter. We recommend using glTF in Cesium for individual assets, e.g., an aircraft, a character, or a 3D building.
640
640
641
641
We created 3D Tiles for streaming massive geospatial datasets where a single glTF model would be prohibitive. Given that glTF is optimized for rendering, that Cesium has a well-tested glTF loader, and that there are existing conversion tools for glTF, 3D Tiles use glTF for some tile formats such as [b3dm](TileFormats/Batched3DModel/README.md) (used for 3D buildings). To avoid base64-encoding or multiple file overhead, [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#binary-gltf-layout), is embedded into binary tiles.
642
642
@@ -650,7 +650,7 @@ The general case runtime editing of geometry on a building, vector data, etc., a
650
650
651
651
#### Will 3D Tiles include terrain?
652
652
653
-
Yes, a [quantized-mesh](https://cesiumjs.org/data-and-assets/terrain/formats/quantized-mesh-1.0.html)-like tile would fit well with 3D Tiles and allow Cesium to use the same streaming code (we say _quantized-mesh-like_ because some of the metadata, e.g., for bounding volumes and horizon culling, may be organized differently or moved to the tileset file).
653
+
Yes, a [quantized-mesh](https://github.com/AnalyticalGraphicsInc/quantized-mesh/blob/master/README.md)-like tile would fit well with 3D Tiles and allow Cesium to use the same streaming code (we say _quantized-mesh-like_ because some of the metadata, e.g., for bounding volumes and horizon culling, may be organized differently or moved to the tileset file).
654
654
655
655
However, since Cesium already streams terrain well, we are not focused on this in the short-term.
Copy file name to clipboardexpand all lines: Styling/README.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -51,13 +51,13 @@ Contents:
51
51
*[Notes](#notes)
52
52
*[Batch Table Hierarchy](#batch-table-hierarchy)
53
53
*[Point Cloud](#point-cloud)
54
-
*[File Extension](#file-extension)
55
-
*[MIME Type](#mime-type)
54
+
*[File Extension](#file-extensions-and-mime-type)
55
+
*[MIME Type](#file-extensions-and-mime-type)
56
56
*[Acknowledgments](#acknowledgments)
57
57
58
58
## Overview
59
59
60
-
3D Tiles styles provide concise declarative styling of tileset. A style defines expressions to evaluate a feature's `color` (RGB and translucency) and `show` properties, often based on the feature's properties or class as stored in the tile's [Batch Table](../BatchTable/README.md).
60
+
3D Tiles styles provide concise declarative styling of tilesets. A style defines expressions to evaluate a feature's `color` (RGB and translucency) and `show` properties, often based on the feature's properties or class as stored in the tile's [Batch Table](../TileFormats/BatchTable/README.md).
61
61
62
62
While a style may be created for and reference properties of a tileset, a style is independent of a tileset, such that any style can be applied to any tileset.
Copy file name to clipboardexpand all lines: TileFormats/BatchTable/README.md
+10-10
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ Contents:
26
26
27
27
## Overview
28
28
29
-
A _Batch Table_ contains per-feature application-specific metadata in a tile. These properties may be queried at runtime for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. Some example Batch Table properties are building heights, cartographic coordinates, and database primary keys.
29
+
A _Batch Table_ contains per-feature application-specific metadata in a tile. These properties may be queried at runtime for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. Some example Batch Table properties are building heights, geographic coordinates, and database primary keys.
30
30
31
31
A Batch Table is used by the following tile formats:
32
32
*[Batched 3D Model](../Batched3DModel/README.md) (b3dm)
@@ -128,7 +128,7 @@ For example, given the following Batch Table JSON with `batchLength` of 10
128
128
"componentType" : "FLOAT",
129
129
"type" : "SCALAR"
130
130
},
131
-
"cartographic" : {
131
+
"geographic" : {
132
132
"byteOffset" : 40,
133
133
"componentType" : "DOUBLE",
134
134
"type" : "VEC3"
@@ -149,19 +149,19 @@ var heightArray = new Float32Array(batchTableBinary.buffer, byteOffset, heightAr
149
149
var heightOfFeature = heightArray[batchId];
150
150
```
151
151
152
-
To get the `"cartographic"` values:
152
+
To get the `"geographic"` values:
153
153
154
154
```javascript
155
-
varcartographic=batchTableJSON.cartographic;
156
-
var byteOffset =cartographic.byteOffset;
157
-
var componentType =cartographic.componentType;
158
-
var type =cartographic.type;
155
+
vargeographic=batchTableJSON.geographic;
156
+
var byteOffset =geographic.byteOffset;
157
+
var componentType =geographic.componentType;
158
+
var type =geographic.type;
159
159
var componentSizeInBytes =sizeInBytes(componentType)
varcartographicOfFeature=positionArray.subarray(batchId * numberOfComponents, batchId * numberOfComponents + numberOfComponents); // Using subarray creates a view into the array, and not a new array.
vargeographicOfFeature=positionArray.subarray(batchId * numberOfComponents, batchId * numberOfComponents + numberOfComponents); // Using subarray creates a view into the array, and not a new array.
Copy file name to clipboardexpand all lines: TileFormats/Instanced3DModel/README.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -120,7 +120,7 @@ module.
120
120
#### Default Orientation
121
121
122
122
If `NORMAL_UP` and `NORMAL_RIGHT` or `NORMAL_UP_OCT32P` and `NORMAL_RIGHT_OCT32P` are not present,
123
-
the instance will not have a custom orientation. If `EAST_NORTH_UP` is `true` the instance is assumed to be on the `WGS84` ellipsoid and its orientation will default to the `east/north/up` reference frame at its Cartographic position.
123
+
the instance will not have a custom orientation. If `EAST_NORTH_UP` is `true` the instance is assumed to be on the `WGS84` ellipsoid and its orientation will default to the `east/north/up` reference frame at its geographic position.
124
124
This is suitable for instanced models like trees whose orientation is always facing up from their position on the ellipsoid's surface.
Copy file name to clipboardexpand all lines: schema/README.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# 3D Tiles JSON Schema
2
2
3
-
Parts of 3D Tiles, such as [tileset.json](../#tilesetjson), [Feature Table](../TileFormats/FeatureTable/README.md), and [Batch Table](../TileFormats/BatchTable/README.md), are represented with JSON. The JSON schema is defined using [JSON Schema](http://json-schema.org/) draft v4 in schema subdirectories.
3
+
Parts of 3D Tiles, such as [tileset.json](../README.md#tileset-json-files), [Feature Table](../TileFormats/FeatureTable/README.md), and [Batch Table](../TileFormats/BatchTable/README.md), are represented with JSON. The JSON schema is defined using [JSON Schema](http://json-schema.org/) draft v4 in schema subdirectories.
0 commit comments