From 0e22b00bd0987d09e590131b77cfd3c4442497fd Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Tue, 20 Jun 2017 17:14:04 -0400 Subject: [PATCH 01/37] 0.0 to 1.0 --- README.md | 7 ++----- examples/tileset.json | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4804b86d8..1c1ee4d31 100644 --- a/README.md +++ b/README.md @@ -108,10 +108,6 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * **News** * [3D Tiles thread on the Cesium forum](https://groups.google.com/forum/#!topic/cesium-dev/tCCooBxpZFU) - get the latest 3D Tiles news and ask questions here. -## 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; see the [remaining items](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues?q=is%3Aissue+is%3Aopen+label%3A%22draft+1.0%22). - **Draft 1.0 Plans** Topic | Status @@ -353,7 +349,7 @@ _tileset.json_ defines a tileset. Here is a subset of the tileset.json used for ```json { "asset" : { - "version": "0.0", + "version": "1.0", "tilesetVersion": "e575c6f1-a45b-420a-b172-6449fa6e0a59", "gltfUpAxis": "Y" }, @@ -376,6 +372,7 @@ _tileset.json_ defines a tileset. Here is a subset of the tileset.json used for ] }, "geometricError": 268.37878244706053, + "refine": "ADD", "content": { "url": "0/0/0.b3dm", "boundingVolume": { diff --git a/examples/tileset.json b/examples/tileset.json index d3e37b0a3..7e16b204d 100644 --- a/examples/tileset.json +++ b/examples/tileset.json @@ -1,6 +1,6 @@ { "asset": { - "version" : "0.0" + "version" : "1.0" }, "properties": { "Longitude": { From 7cc26a8c14beceed4373174f87d669632c864e07 Mon Sep 17 00:00:00 2001 From: Patrick Cozzi Date: Tue, 17 Apr 2018 10:55:13 -0400 Subject: [PATCH 02/37] Add link to OneSky blog post --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6fcf48093..6cb5de13b 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * 3D Tiles motivation and ecosystem update ([pdf](https://cesium.com/presentations/files/3D-Tiles-OGC-DC.pdf)) at the OGC Technical Committee Meeting (March 2016). * 3D Tiles intro ([pdf](https://cesium.com/presentations/files/SIGGRAPH2015/Cesium3DTiles.pdf)) at the Cesium BOF at SIGGRAPH 2015. * **Selected Articles** + * [OneSky Using Cesium / 3D Tiles For Volumetric Airspace Visualization](https://onesky.blog/2018/04/16/onesky-using-cesium-3dtiles-for-volumetric-airspace-visualization/). April 2018. * [Draco Compressed Meshes with glTF and 3D Tiles](https://cesium.com/blog/2018/04/09/draco-compression/). April 2018. * [OGC Testbed-13: 3D Tiles and I3S Interoperability and Performance ER](http://docs.opengeospatial.org/per/17-046.html). March 2018. * [Historic Pharsalia Cabin Point Cloud Using Cesium & 3D Tiles](https://cesium.com/blog/2018/02/05/historic-pharsalia-cabin-point-cloud/). February 2018. From 59247c49c1a5046fff9498e1e55021b60f20efcd Mon Sep 17 00:00:00 2001 From: ggetz Date: Tue, 17 Apr 2018 19:02:50 -0400 Subject: [PATCH 03/37] 3D Tiles 1.0 updates --- README.md | 119 +++++++++++++++++-------- Styling/README.md | 22 ++--- TileFormats/Batched3DModel/README.md | 27 +++--- TileFormats/Composite/README.md | 10 +-- TileFormats/Instanced3DModel/README.md | 19 ++-- TileFormats/PointCloud/README.md | 14 ++- schema/asset.schema.json | 6 ++ schema/b3dm.featureTable.schema.json | 6 ++ schema/batchTable.schema.json | 12 +++ schema/extension.schema.json | 11 +++ schema/extras.schema.json | 5 ++ schema/i3dm.featureTable.schema.json | 6 ++ schema/pnts.featureTable.schema.json | 6 ++ schema/properties.schema.json | 6 ++ schema/tile.content.schema.json | 6 ++ schema/tile.schema.json | 6 ++ schema/tileset.schema.json | 6 ++ 17 files changed, 197 insertions(+), 90 deletions(-) create mode 100644 schema/extension.schema.json create mode 100644 schema/extras.schema.json diff --git a/README.md b/README.md index 6fcf48093..a81848c2c 100644 --- a/README.md +++ b/README.md @@ -67,11 +67,11 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [Resources](#resources) * [Spec status](#spec-status) * [Introduction](#introduction) -* [Tile metadata](#tile-metadata) +* [Tiles](#tiles) * [Coordinate System and Units](#coordinate-system-and-units) * [Tile transform](#tile-transform) * [Viewer request volume](#viewer-request-volume) -* [tileset.json](#tilesetjson) +* [Tileset JSON file](#tileset-json-files) * [External tilesets](#external-tilesets) * [Bounding volume spatial coherence](#bounding-volume-spatial-coherence) * [Creating spatial data structures](#creating-spatial-data-structures) @@ -128,13 +128,13 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) ## 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; see the [remaining items](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues?q=is%3Aissue+is%3Aopen+label%3A%22draft+1.0%22). +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). **Draft 1.0 Plans** Topic | Status ---|--- -[tileset.json](#tilesetjson)

The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed +[Tileset JSON](#tileset-json-file)

The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed [Batched 3D Model](TileFormats/Batched3DModel/README.md) (*.b3dm)

Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected [Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)

Massive amount of points | :white_check_mark: **Solid base**, only minor, if any, changes expected @@ -164,9 +164,35 @@ _TODO: include a screenshot of each bounding volume type._ 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. -## Tile metadata +A 3D tileset consists of at least one tileset `.json` file specifying the metadata and the tree of tiles, as well as any referenced tile content files which may be any valid tile format, described below. -The metadata for each tile - not the actual contents - are defined in JSON. For example: +Optionally, a separate 3D Tile Style may be applied to a tileset. + +## File Extensions and MIME Types + +* Tileset files use the `.json` extension and the `application/json` MIME type. +* A tile's referenced content may be an external tileset `.json` file (`application/json`), or the file type and MIME format specific to the [tile format](#tile-formats). +* Tileset style files use the `.json` extension and the `application/json` MIME type. + +## JSON encoding + +3D Tiles has the following restrictions on JSON formatting and encoding. + + 1. JSON must use UTF-8 encoding without BOM. + 2. All strings defined in this spec (properties names, enums) use only ASCII charset and must be written as plain text. + 3. Names (keys) within JSON objects must be unique, i.e., duplicate keys aren't allowed. + +## URLs + +3D Tiles use URLs to reference tile content. + +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. + +## Tiles + +Tiles consist of content, metadata used to render the tile, and any children tiles. + +For example: ```json { "boundingVolume": { @@ -197,7 +223,8 @@ The metadata for each tile - not the actual contents - are defined in JSON. For "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) the [WGS84 ellipsoid](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf). Besides `region`, other bounding volumes, such as `box` and `sphere`, may be used. + +The `boundingVolume` defines a volume enclosing the tile content, and is used to determine which tiles to render at runtime. 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) the [WGS84 ellipsoid](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf). Besides `region`, other bounding volumes, such as `box` and `sphere`, may be used. 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 compute _Screen-Space Error_ (SSE), i.e., the error measured in pixels. The SSE determines _Hierarchical Level of Detail_ (HLOD) refinement, i.e., if a tile is sufficiently detailed for the current view or if its children should be considered. @@ -207,7 +234,7 @@ The `refine` property is a string that is either `"REPLACE"` for replacement ref 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). -The url can be another tileset.json file to create a tileset of tilesets. See [External tilesets](#external-tilesets). +The url can be another tileset JSON to create a tileset of tilesets. See [External tilesets](#external-tilesets). 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. @@ -225,9 +252,25 @@ An optional `transform` property (not shown above) defines a 4x4 affine transfor ### Coordinate System and Units -3D Tiles use a right-handed Cartesian coordinate system, that is, the cross product of x and y yields z. 3D Tiles define the z axis as up for local Cartesian coordinate systems (see the [Tile transform](#tile-transform) section). A tileset's global coordinate system will often be [WGS84 coordinates](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for using with a modeling tool without a geospatial context. +3D Tiles support uses in both geodetic as well as Cartesian coordinate systems. + +3D Tiles use a right-handed 3-axis (x, y, z) Cartesian coordinate system, that is, the cross product of x and y yields z. 3D Tiles define the z axis as up for local Cartesian coordinate systems (see the [Tile transform](#tile-transform) section). A tileset's global coordinate system will often be [WGS84 ellipsoidal coordinate system](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for using with a modeling tool without a geospatial context. -`b3dm` and `i3dm` tiles embed glTF. According to the [glTF spec](https://github.com/KhronosGroup/glTF/tree/master/specification/1.0#coordinate-system-and-units) glTF uses a right-handed coordinate system and defines the y axis as up. By default embedded models are considered to be y-up, but in order to support a variety of source data, including models defined directly in WGS84 coordinates, embedded glTF models may be defined as x-up, y-up, or z-up with the `asset.gltfUpAxis` property of `tileset.json`. In general an implementation should transform glTF assets to z-up at runtime to be consistent with the z-up coordinate system of the bounding volume hierarchy. +#### Tile content + +`b3dm` and `i3dm` tiles embed glTF. According to the [glTF spec](https://github.com/KhronosGroup/glTF/tree/master/specification/1.0#coordinate-system-and-units) glTF uses a right-handed coordinate system and defines the y axis as up. By default embedded models are considered to be y-up, but in order to support a variety of source data, including models defined directly in WGS84 coordinates, embedded glTF models may be defined as x-up, y-up, or z-up with the `asset.gltfUpAxis` property of the tileset JSON. + +To transform from a glTF y-up to a 3D Tiles z-up coordinate system, the following matrix transform is applied: +``` +[(1, 0, 0, 0), + (0, 0, -1, 0), + (0, 1, 0, 0), + (0, 0, 0, 1)] +``` + +Tile transforms are applied after the conversion between coordinate systems is resolved. + +> Implementation Note: In general an implementation should transform glTF assets to z-up at runtime to be consistent with the z-up coordinate system of the bounding volume hierarchy. The units for all linear distances are meters. @@ -365,9 +408,13 @@ _TODO: screenshot showing the request vs. bounding volume_ For more on request volumes, see the [sample tileset](https://github.com/AnalyticalGraphicsInc/3d-tiles-samples/tree/master/tilesets/TilesetWithRequestVolume) and [demo video](https://www.youtube.com/watch?v=PgX756Yzjf4). -## tileset.json +## Tileset JSON Files -_tileset.json_ defines a tileset. Here is a subset of the tileset.json used for [Canary Wharf](http://cesiumjs.org/CanaryWharf/) (also see the complete [tileset.json](examples/tileset.json)): +3D Tiles use one main tileset `.json` file as the entry point to define a tileset. + +See [schema](schema) for the detailed tileset JSON schema. + +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)): ```json { "asset" : { @@ -411,37 +458,31 @@ _tileset.json_ defines a tileset. Here is a subset of the tileset.json used for } } ``` -The top-level object in tileset.json has four properties: `asset`, `properties`, `geometricError`, and `root`. -`asset` is an object containing properties with metadata about the entire tileset. Its `version` property is a string that defines the 3D Tiles version. The version defines the JSON schema for tileset.json and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. The `gltfUpAxis` property is an optional string that specifies the up-axis of glTF models contained in the tileset. +The top-level object in the tileset JSON has four properties: `asset`, `properties`, `geometricError`, and `root`. + +`asset` is an object containing properties with metadata about the entire tileset. Its `version` property is a string that defines the 3D Tiles version. The version defines the JSON schema for the tileset file and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. The `gltfUpAxis` property is an optional string that specifies the up-axis of glTF models contained in the tileset. -`properties` is an object containing objects for each per-feature property in the tileset. This tileset.json snippet is for 3D buildings, so each tile has building models, and each building model has a `Height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. +`properties` is an object containing objects for each per-feature property in the tileset. This tileset file snippet is for 3D buildings, so each tile has building models, and each building model has a `Height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. `geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered. -`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 tileset.json's top-level `geometricError`. tileset.json's `geometricError` is the error when the entire tileset is not rendered; `root.geometricError` is the error when only the root tile is rendered. +`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. `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. -See [schema](schema) for the detailed JSON schema for tileset.json. - -See the [Q&A below](#Will-tileset.json-be-part-of-the-final-3D-Tiles-spec) for how tileset.json will scale to a massive number of tiles. +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. ### External tilesets -To create a tree of trees, a tile's `content.url` can point to an external tileset (another tileset.json). This enables, for example, storing each city in a tileset and then having a global tileset of tilesets. +To create a tree of trees, a tile's `content.url` can point to an external tileset (the url of another tileset `.json` file). This enables, for example, storing each city in a tileset and then having a global tileset of tilesets. ![](figures/tilesets.jpg) -When a tile points to an external tileset, the tile +When a tile points to an external tileset, the tile: * Cannot have any children, `tile.children` must be `undefined` or an empty array. -* Has several properties that match the external tileset's root tile: - * `root.geometricError === tile.geometricError`, - * `root.refine === tile.refine`, and - * `root.boundingVolume === tile.content.boundingVolume` (or `root.boundingVolume === tile.boundingVolume` when `tile.content.boundingVolume` is `undefined`). - * `root.viewerRequestVolume === tile.viewerRequestVolume` or `root.viewerRequestVolume` is `undefined`. -* Cannot be used to create cycles, for example, by pointing to the same tileset.json containing the tile or by pointing to another tileset.json that then points back to the tileset.json containing the tile. +* Cannot be used to create cycles, for example, by pointing to the same tileset file containing the tile or by pointing to another tileset file that then points back to the first file containing the tile. * Both the tile's `transform` and root tile's `transform` are applied. For example, in the following tileset referencing an external tileset, the computed transform for `T3` is `[T0][T1][T2][T3]`. ![](figures/tileTransformExternalTileset.png) @@ -462,9 +503,9 @@ As described above, the tree has spatial coherence; each tile has a bounding vol ### Creating spatial data structures -The tree defined in tileset.json by `root` and, recursively, its `children`, can define different types of spatial data structures. In addition, any combination of tile formats and refinement approach (replacement or additive) can be used, enabling a lot of flexibility to support heterogeneous datasets. +The tree defined in a tileset by `root` and, recursively, its `children`, can define different types of spatial data structures. In addition, any combination of tile formats and refinement approach (replacement or additive) can be used, enabling a lot of flexibility to support heterogeneous datasets. -It is up to the conversion tool that generates tileset.json to define an optimal tree for the dataset. A runtime engine, such as Cesium, is generic and will render any tree defined by tileset.json. Here's a brief descriptions of how 3D Tiles can represent various spatial data structures. +It is up to the conversion tool that generates the tileset file to define an optimal tree for the dataset. A runtime implementation will be generic and render any tree defined in the tileset file. Here's a brief descriptions of how 3D Tiles can represent various spatial data structures. #### K-d trees @@ -558,6 +599,10 @@ This colors features with a temperature above 90 as red and the others as white. For complete details, see the [Declarative Styling](Styling/README.md) spec. +## Specifying Extensions and Application-Specific Extras + +3D Tiles defines extensions to allow the base specification to have extensibility for new features, as well as extras to allow for application specific metadata. + ## Roadmap Q&A * [General Q&A](#general-qa) @@ -570,7 +615,7 @@ For complete details, see the [Declarative Styling](Styling/README.md) spec. * [Will 3D Tiles replace KML?](#will-3d-tiles-replace-kml) * [Technical Q&A](#technical-qa) * [How do 3D Tiles support heterogeneous datasets?](#how-do-3d-tiles-support-heterogeneous-datasets) - * [Will tileset.json be part of the final 3D Tiles spec?](#will-tilesetjson-be-part-of-the-final-3d-tiles-spec) + * [Will a tileset file be part of the final 3D Tiles spec?](#will-a-tileset-file-be-part-of-the-final-3d-tiles-spec) * [How do I request the tiles for Level `n`?](#how-do-i-request-the-tiles-for-level-n) * [Will 3D Tiles support horizon culling?](#will-3d-tiles-support-horizon-culling) * [Is screen-space error the only metric used to drive refinement?](#is-screen-space-error-the-only-metric-used-to-drive-refinement) @@ -593,7 +638,7 @@ No, 3D Tiles are a general spec for streaming massive heterogeneous 3D geospatia [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. -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). We created a binary glTF extension ([KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF)) in order to embed glTF into binary tiles and avoid base64-encoding or multiple file overhead. +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. Taking this approach allows us to improve Cesium, glTF, and 3D Tiles at the same time, e.g., when we add mesh compression to glTF, it benefits 3D models in Cesium, the glTF ecosystem, and 3D Tiles. @@ -605,7 +650,7 @@ The general case runtime editing of geometry on a building, vector data, etc., a #### Will 3D Tiles include terrain? -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 tileset.json). +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). However, since Cesium already streams terrain well, we are not focused on this in the short-term. @@ -631,14 +676,14 @@ Geospatial datasets are heterogeneous: 3D buildings are different from terrain, Supporting heterogeneous datasets with both inter-tile (different tile formats in the same tileset) and intra-tile (different tile formats in the same Composite tile) options allows conversion tools to make trade-offs between number of requests, optimal type-specific subdivision, and how visible/hidden layers are streamed. -#### Will tileset.json be part of the final 3D Tiles spec? +#### Will a tileset file be part of the final 3D Tiles spec? -Yes. There will always be a need to know metadata about the tileset and about tiles that are not yet loaded, e.g., so only visible tiles can be requested. However, when scaling to millions of tiles, a single tileset.json with metadata for the entire tree would be prohibitively large. +Yes. There will always be a need to know metadata about the tileset and about tiles that are not yet loaded, e.g., so only visible tiles can be requested. However, when scaling to millions of tiles, a single tileset file with metadata for the entire tree would be prohibitively large. -3D Tiles already support trees of trees. `content.url` can point to another tileset.json, which enables conversion tools to chunk up a tileset into any number of tileset.json files that reference each other. +3D Tiles already support trees of trees. `content.url` can point to another tileset JSON, which enables conversion tools to chunk up a tileset into any number of tileset files that reference each other. There's a few other ways we may solve this: -* Moving subtree metadata to the tile payload instead of tileset.json. Each tile would have a header with, for example, the bounding volumes of each child, and perhaps grandchildren, and so on. +* Moving subtree metadata to the tile payload instead of the tileset file. Each tile would have a header with, for example, the bounding volumes of each child, and perhaps grandchildren, and so on. * Explicit tile layout like those of traditional tiling schemes (e.g., TMS's `z/y/x`). The challenge is that this implicitly assumes a spatial subdivision, whereas 3D Tiles are general enough to support quadtrees, octrees, k-d trees, and so on. There is likely to be a balance where two or three explicit tiling schemes can cover common cases to complement the generic spatial data structures. #### How do I request the tiles for Level `n`? @@ -667,7 +712,7 @@ Unlike 2D, in 3D, we expect adjacent tiles to be from different LODs so, for exa Often when using replacement refinement, a tile's children are not rendered until all children are downloaded (an exception, for example, is unstructured data such as point clouds, where clipping planes can be used to mask out parts of the parent tile where the children are loaded; naively using the same approach for terrain or an arbitrary 3D model results in cracking or other artifacts between the parent and child). -We may design 3D Tiles to support downloading all children in a single request by allowing tileset.json to point to a subset of a file for a tile's content similiar to glTF [buffer](https://github.com/KhronosGroup/glTF/blob/master/specification/buffer.schema.json) and [bufferView](https://github.com/KhronosGroup/glTF/blob/master/specification/bufferView.schema.json). [HTTP/2](http://chimera.labs.oreilly.com/books/1230000000545/ch12.html#_brief_history_of_spdy_and_http_2) will also make the overhead of multiple requests less important. +We may design 3D Tiles to support downloading all children in a single request by allowing the tileset to point to a subset of a payload for a tile's content similiar to glTF [buffers and buffer views](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#buffers-and-buffer-views). [HTTP/2](http://chimera.labs.oreilly.com/books/1230000000545/ch12.html#_brief_history_of_spdy_and_http_2) will also make the overhead of multiple requests less important. See [#9](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/9). diff --git a/Styling/README.md b/Styling/README.md index a3a9941aa..d54c1fb34 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -57,9 +57,11 @@ Contents: ## Overview -3D Tiles styles provide concise declarative styling of tileset features. A style defines expressions to evaluate a feature's `color` (RGB and translucency) and `show` properties, often based on the feature's properties stored in the tile's batch table. +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). -Styles are defined with JSON and expressions written in a small subset of JavaScript augmented for styling. Additionally the styling language provides a set of built-in functions to support common math operations. +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. + +Styles are defined with JSON and expressions written in the styling expression syntax specified below, a small subset of JavaScript augmented for styling. Additionally the styling language provides a set of built-in functions to support common math operations. ## Examples @@ -1340,19 +1342,11 @@ For example: } ``` -#### Point Cloud Shader Styling - -**TODO : add note about GLSL implementations requires strict type comparisons among other things: https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/140** - -## File Extension - -TBA - -## MIME Type - -_TBA, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ +> Implementation Note: Point cloud styling engines may often use a shader (GLSL) implementation, however some features of the expression language are not possible in pure a GLSL implementation. Features that must account for these inconsistencies include evaluation of `isNan` and `isFinite` (GLSL 2.0+ supports `isnan` and `isinf` for these functions respectively); the types `null` and `undefined`; strings, including accessing object properties (`color()['r']`) and batch table values; regular expressions; arrays of lengths other than 2, 3, or 4; mismatched type comparisons (`float` to `bool`); and handling of "index out of bounds" errors. -`application/json` +## File Extensions and MIME Types + +* Tileset styles use the `.json` extension and the `application/json` mime type. ## Acknowledgments diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 9c0939653..554a25f08 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -40,7 +40,7 @@ If `featureTableJSONByteLength` equals zero, the tile does not need to be render The body section immediately follows the header section, and is composed of three fields: `Feature Table`, `Batch Table` and `Binary glTF`. -Code for reading the header can be found in +> Implementation Note: Code for reading the header can be found in [Batched3DModelTileContent](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Batched3DModel3DTileContent.js) in the Cesium implementation of 3D Tiles. @@ -64,18 +64,19 @@ These semantics define global properties for all features. | Semantic | Data Type | Description | Required | | --- | --- | --- | --- | | `BATCH_LENGTH` | `uint32` | The number of distinguishable models, also called features, in the batch. If the Binary glTF does not have a `batchId` attribute, this field _must_ be `0`. | :white_check_mark: Yes. | +| `RTC_CENTER` | `float32[3]` | A 3-component array of numbers defining the center position when instance positions are defined relative-to-center. | :red_circle: No. | ## Batch Table -The _Batch Table_ contains per-model application-specific metadata, indexable by `batchId`, that can be used for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. In the Binary glTF section, each vertex has an numeric `batchId` attribute in the integer range `[0, number of models in the batch - 1]`. The `batchId` indicates the model to which the vertex belongs. This allows models to be batched together and still be identifiable. +The _Batch Table_ contains per-model application-specific metadata, indexable by `batchId`, that can be used for [declarative styling](../../Styling/README.md) and application-specific use cases such as populating a UI or issuing a REST API request. In the Binary glTF section, each vertex has an numeric `batchId` attribute in the integer range `[0, number of models in the batch - 1]`. The `batchId` indicates the model to which the vertex belongs. This allows models to be batched together and still be identifiable. See the [Batch Table](../BatchTable/README.md) reference for more information. ## Binary glTF -[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Batched 3D Model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. +Batched 3D Model uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) to embed model data. -The binary glTF immediately follows the feature table and batch table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. +The [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#binary-gltf-layout) immediately follows the feature table and batch table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. The glTF asset must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. @@ -119,16 +120,20 @@ The vertex shader can be modified at runtime to use `a_batchId` to access indivi When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0`, the `batchId` attribute (with the parameter semantic `_BATCHID`) is required; otherwise, it is not. -Although not strictly required, clients may find the glTF [CESIUM_RTC](https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Vendor/CESIUM_RTC) extension useful for high-precision rendering. +### Coordinate Reference System (CRS) -## File Extension +Vertex positions are defined according to a right-handed coordinate system where Y-axis is up. [glTF Coordinate System and Units](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units) -`.b3dm` +Vertex positions may be defined relative-to-center for high-precision rendering [1]. If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. -The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. +> Implementation Note: Clients may also use the glTF [CESIUM_RTC](https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Vendor/CESIUM_RTC) extension and define points relative to center. + +## File Extension and MIME Type -## MIME Type +Batched 3D Model tiles use the `.b3dm` extension and `application/octet-stream` MIME type. + +The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. -_TODO, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ +## Resources -`application/octet-stream` +1. [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/) \ No newline at end of file diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index 8a98d9e18..9a71805bb 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -50,18 +50,12 @@ Inner tile fields are stored tightly packed immediately following the header sec Refer to the spec for each tile format for more details. -## File Extension +## File Extension and MIME Type -`.cmpt` +Composite tiles use the `.cmpt` extension and `application/octet-stream` MIME type. The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. -## MIME Type - -_TODO, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ - -`application/octet-stream` - ## Acknowledgments * [Christopher Mitchell, Ph.D.](https://github.com/KermMartian) diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 1ec7c305f..0075ccaf1 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -111,8 +111,9 @@ The `z` vector would map onto a `forward` vector, but it is omitted because it w If `NORMAL_UP` and `NORMAL_RIGHT` are not defined for an instance, its orientation may be stored as oct-encoded normals in `NORMAL_UP_OCT32P` and `NORMAL_RIGHT_OCT32P`. These define `up` and `right` using the oct-encoding described in -[*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/). -An implementation for encoding and decoding these unit vectors can be found in Cesium's +[*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/). Oct-encoded values are stored in unsigned, unnormalized range ([0, 65535] or [0, 255]) and then converted to a signed normalized range ([-1.0, 1.0]) at runtime. + +> An implementation for encoding and decoding these unit vectors can be found in Cesium's [AttributeCompression](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/AttributeCompression.js) module. @@ -228,7 +229,9 @@ See the [Batch Table](../BatchTable/README.md) reference for more information. The glTF asset to be instanced is stored after the feature table and batch table. -[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Instanced 3D Model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. +[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. Instanced 3D Models uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) to embed model data. + +The [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#binary-gltf-layout) immediately follows the feature table and batch table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. `header.gltfFormat` determines the format of the glTF field. When it is `0`, the glTF field is @@ -242,18 +245,12 @@ In either case, `header.gltfByteLength` contains the length of the glTF field in If the glTF asset is embedded, it must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. -## File Extension +## File Extension and MIME Type -`.i3dm` +Instanced 3D modela tiles use the `.i3dm` extension and `application/octet-stream` MIME type. The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. -## MIME Type - -_TODO, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ - -`application/octet-stream` - ## Resources 1. [*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/) diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 9c4c36468..4031293c8 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -121,7 +121,9 @@ Per-point normals are an optional property that can help improve the visual qual The normals will be transformed using the inverse transpose of the tileset transform. #### Oct-encoded Normal Vectors -Oct-encoding is described in [*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/). An implementation for encoding and decoding these unit vectors can be found in Cesium's +Oct-encoding is described in [*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/). Oct-encoded values are stored in unsigned, unnormalized range ([0, 65535] or [0, 255]) and then converted to a signed normalized range ([-1.0, 1.0]) at runtime. + +> An implementation for encoding and decoding these unit vectors can be found in Cesium's [AttributeCompression](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/AttributeCompression.js) module. @@ -294,18 +296,12 @@ If the `BATCH_ID` semantic is not defined, then the batch table stores per-point See the [Batch Table](../BatchTable/README.md) reference for more information. -## File Extension +## File Extension and MIME Type -`.pnts` +Point cloud tiles use the `.pnts` extension and `application/octet-stream` MIME type. The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. -## MIME Type - -_TODO, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ - -`application/octet-stream` - ## Resources 1. [*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/) diff --git a/schema/asset.schema.json b/schema/asset.schema.json index c8fda2519..92a6eec52 100644 --- a/schema/asset.schema.json +++ b/schema/asset.schema.json @@ -18,6 +18,12 @@ "description" : "Specifies the up-axis of glTF models.", "enum" : ["X", "Y", "Z"], "default" : "Y" + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "required" : ["version"], diff --git a/schema/b3dm.featureTable.schema.json b/schema/b3dm.featureTable.schema.json index 76943e3ae..e60e763e3 100644 --- a/schema/b3dm.featureTable.schema.json +++ b/schema/b3dm.featureTable.schema.json @@ -10,6 +10,12 @@ "properties" : { "BATCH_LENGTH" : { "$ref" : "featureTable.schema.json#/definitions/globalPropertyScalar" + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "required" : ["BATCH_LENGTH"], diff --git a/schema/batchTable.schema.json b/schema/batchTable.schema.json index e42b893c8..11d294383 100644 --- a/schema/batchTable.schema.json +++ b/schema/batchTable.schema.json @@ -7,6 +7,12 @@ "properties" : { "HIERARCHY" : { "$ref" : "#/definitions/hierarchy" + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "additionalProperties" : { @@ -101,6 +107,12 @@ }, "parentIds" : { "$ref" : "#/definitions/integerProperty" + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "required" : ["classes", "instancesLength", "classIds"] diff --git a/schema/extension.schema.json b/schema/extension.schema.json new file mode 100644 index 000000000..434f0a805 --- /dev/null +++ b/schema/extension.schema.json @@ -0,0 +1,11 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema", + "title": "Extension", + "type": "object", + "description": "Dictionary object with extension-specific objects.", + "properties": { + }, + "additionalProperties": { + "type": "object" + } +} \ No newline at end of file diff --git a/schema/extras.schema.json b/schema/extras.schema.json new file mode 100644 index 000000000..69b30de45 --- /dev/null +++ b/schema/extras.schema.json @@ -0,0 +1,5 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema", + "title": "Extras", + "description": "Application-specific data." +} \ No newline at end of file diff --git a/schema/i3dm.featureTable.schema.json b/schema/i3dm.featureTable.schema.json index ff8c5ba3c..172f88a71 100644 --- a/schema/i3dm.featureTable.schema.json +++ b/schema/i3dm.featureTable.schema.json @@ -43,6 +43,12 @@ }, "QUANTIZED_VOLUME_SCALE": { "$ref" : "featureTable.schema.json#/definitions/globalPropertyCartesian3" + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "anyOf" : [{ diff --git a/schema/pnts.featureTable.schema.json b/schema/pnts.featureTable.schema.json index e466394b6..1838da6a0 100644 --- a/schema/pnts.featureTable.schema.json +++ b/schema/pnts.featureTable.schema.json @@ -49,6 +49,12 @@ }, "BATCH_LENGTH" : { "$ref" : "featureTable.schema.json#/definitions/globalPropertyScalar" + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "anyOf" : [{ diff --git a/schema/properties.schema.json b/schema/properties.schema.json index 13ebf051c..2a7bb1b55 100644 --- a/schema/properties.schema.json +++ b/schema/properties.schema.json @@ -12,6 +12,12 @@ "minimum" : { "type" : "number", "description" : "The minimum value of this property of all the features in the tileset." + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "required" : ["maximum", "minimum"], diff --git a/schema/tile.content.schema.json b/schema/tile.content.schema.json index ad00aba84..48266d968 100644 --- a/schema/tile.content.schema.json +++ b/schema/tile.content.schema.json @@ -12,6 +12,12 @@ "url" : { "type" : "string", "description" : "A string that points to the tile's contents with an absolute or relative url. When the url is relative, it is relative to the referring tileset.json. The file extension of content.url defines the tile format. The core 3D Tiles spec supports the following tile formats: Batched 3D Model (*.b3dm), Instanced 3D Model (*.i3dm), Composite (*.cmpt), and 3D Tiles TileSet (*.json)" + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "required" : ["url"], diff --git a/schema/tile.schema.json b/schema/tile.schema.json index 77999da23..69fe894a8 100644 --- a/schema/tile.schema.json +++ b/schema/tile.schema.json @@ -44,6 +44,12 @@ "$ref" : "tile.schema.json" }, "uniqueItems" : true + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "required" : ["boundingVolume", "geometricError"], diff --git a/schema/tileset.schema.json b/schema/tileset.schema.json index 2737a6bc8..2e163fa44 100644 --- a/schema/tileset.schema.json +++ b/schema/tileset.schema.json @@ -24,6 +24,12 @@ "root" : { "description" : "The root node.", "$ref" : "tile.schema.json" + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "required" : ["asset", "geometricError", "root"], From 101e8a5a3876334e92d488fe5438ecb410f02347 Mon Sep 17 00:00:00 2001 From: Sarah Chow Date: Sat, 21 Apr 2018 09:00:26 -0700 Subject: [PATCH 04/37] copyedit 1 --- CONTRIBUTING.md | 2 +- README.md | 104 ++++++++++++++++++++++++------------------------ 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 570d266fb..ee85edb31 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ As we add more tile formats, 3D Tiles needs to stay consistent. ## Terminology * Tiles are composed of `sections` such as `header` and `body`. Sections are composed of `fields` such as `magic` and `version`. -* "Feature" - indicates one model in a batch of models (b3dm), one instance in a collection of instances (i3dm), one point in a point cloud (pnts), one polygon in a vector tile (vctr), etc. +* "Feature" - indicates one model in a batch of models (`b3dm`), one instance in a collection of instances (`i3dm`), one point in a point cloud (`pnts`), one polygon in a vector tile (`vctr`), etc. ## Fields diff --git a/README.md b/README.md index 409394ff2..a060d3127 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

-Specification for streaming massive heterogeneous **3D** geospatial datasets. +Specification for streaming massive heterogeneous 3D geospatial datasets. 3D Tiles has entered the Open Geospatial Consortium (OGC) [Community Standard](https://cesium.com/blog/2016/09/06/3d-tiles-and-the-ogc/) process. @@ -27,10 +27,10 @@ Editor: Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi), [pcozzi@agi.com] [Peaxy](https://peaxy.net/) | ![](figures/users/pointcloudconverter.jpg) [Prototype Point Cloud Converter](https://github.com/mattshax/cesium_pnt_generator) | ![](figures/users/virtualgis.jpg) [VirtualGIS](https://www.virtualgis.io/) | ![](figures/users/grandlyon.jpg) [LOPoCS ](https://github.com/Oslandia/lopocs) and [py3dtiles](https://github.com/Oslandia/py3dtiles) ![](figures/users/itowns.jpg) [iTowns 2](https://github.com/iTowns/itowns) | ![](figures/users/osm-cesium-3d-tiles.jpg) [osm-cesium-3d-tiles](https://github.com/kiselev-dv/osm-cesium-3d-tiles) | -![](figures/users/geopipe.jpg) [geopipe](https://geopi.pe/) | | -![](figures/users/poulain.jpg) [3D Digital Territory Lab](https://cesiumjs.org/demos/grandlyon/) | | +![](figures/users/geopipe.jpg) [geopipe](https://geopi.pe/) | +![](figures/users/poulain.jpg) [3D Digital Territory Lab](https://cesiumjs.org/demos/grandlyon/) | -## Live Apps +## Live apps * [NYC](https://cesiumjs.org/NewYork/index.html) by AGI * [3D Swiss Federal Geoportal with 3 million buildings](https://map.geo.admin.ch/?topic=ech&lang=en&bgLayer=ch.swisstopo.pixelkarte-farbe&layers_visibility=false,false,false,false&layers_timestamp=18641231,,,&lon=8.82169&lat=47.21822&elevation=1213&heading=20.819&pitch=-37.770&layers=ch.swisstopo.zeitreihen,ch.bfs.gebaeude_wohnungs_register,ch.bav.haltestellen-oev,ch.swisstopo.swisstlm3d-wanderwege) by Swisstopo and AGI @@ -68,7 +68,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [Spec status](#spec-status) * [Introduction](#introduction) * [Tile metadata](#tile-metadata) - * [Coordinate System and Units](#coordinate-system-and-units) + * [Coordinate system and units](#coordinate-system-and-units) * [Tile transform](#tile-transform) * [Viewer request volume](#viewer-request-volume) * [tileset.json](#tilesetjson) @@ -102,8 +102,8 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * _Point Clouds with 3D Tiles_ ([pdf](https://cesium.com/presentations/files/PointCloudsWith3DTiles.pdf)) at the OGC Technical Committee Meeting (June 2017). * _The Open Cesium 3D Tiles Specification: Bringing Massive Geospatial 3D Scenes to the Web_ ([pptx](https://cesium.com/presentations/files/Web3D-2016-3DTilesTutorial.pptx), [example tilesets](https://github.com/AnalyticalGraphicsInc/3d-tiles-samples)) at Web3D 2016. 90-minute technical tutorial. * _3D Tiles: Beyond 2D Tiling_ ([pdf](https://cesium.com/presentations/files/FOSS4GNA2016/3DTiles.pdf), [video](https://www.youtube.com/watch?v=I1vYCrMKKEE)) at FOSS4G NA 2016. - * 3D Tiles motivation and ecosystem update ([pdf](https://cesium.com/presentations/files/3D-Tiles-OGC-DC.pdf)) at the OGC Technical Committee Meeting (March 2016). - * 3D Tiles intro ([pdf](https://cesium.com/presentations/files/SIGGRAPH2015/Cesium3DTiles.pdf)) at the Cesium BOF at SIGGRAPH 2015. + * _3D Tiles motivation and ecosystem update_ ([pdf](https://cesium.com/presentations/files/3D-Tiles-OGC-DC.pdf)) at the OGC Technical Committee Meeting (March 2016). + * _3D Tiles intro_ ([pdf](https://cesium.com/presentations/files/SIGGRAPH2015/Cesium3DTiles.pdf)) at the Cesium BOF at SIGGRAPH 2015. * **Selected Articles** * [Cesium's Participation in OGC Testbed 13](https://cesium.com/blog/2018/02/06/citygml-testbed-13/). February 2018 * [Adaptive Subdivision of 3D Tiles](https://cesium.com/blog/2017/08/11/Adaptive-Subdivision-of-3D-Tiles/). August 2017. @@ -115,7 +115,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [SiteSee Photogrammetry and 3D Tiles](https://cesium.com/blog/2017/04/12/site-see-3d-tiles/). April 2017. * [Optimizing Spatial Subdivisions in Practice](https://cesium.com/blog/2017/04/04/spatial-subdivision-in-practice/). April 2017. * [Optimizing Subdivisions in Spatial Data Structures](https://cesium.com/blog/2017/03/30/spatial-subdivision/). March 2017. - * [What's new in 3D Tiles?](https://cesium.com/blog/2017/03/29/whats-new-in-3d-tiles/). March 2017. + * [What's new in 3D Tiles?](https://cesium.com/blog/2017/03/29/whats-new-in-3d-tiles/) March 2017. * [Streaming 3D Capture Data using 3D Tiles](https://cesium.com/blog/2017/03/06/3d-scans/). March 2017. * [Visualizing Massive Models using 3D Tiles](https://cesium.com/blog/2017/02/21/massive-models/). February 2017. * [Bringing City Models to Life with 3D Tiles](https://medium.com/@CyberCity3D/bringing-city-models-to-life-with-3d-tiles-620d5884edf3#.mqxuj7kqd). September 2016. @@ -134,7 +134,7 @@ Topic | Status [tileset.json](#tilesetjson)

The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed [Batched 3D Model](TileFormats/Batched3DModel/README.md) (*.b3dm)

Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)

Massive amount of points | :white_check_mark: **Solid base**, only minor, if any, changes expected +[Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)

Massive number of points | :white_check_mark: **Solid base**, only minor, if any, changes expected [Vector Data](TileFormats/VectorData/README.md) (*.vctr)

Polygons, polylines, and placemarks | :white_circle: **In progress**, [#124](https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/124/files) [Composite](TileFormats/Composite/README.md) (*.cmpt)

Combine heterogeneous tile formats | :white_check_mark: **Solid base**, only minor, if any, changes expected [Declarative Styling](Styling/README.md)

Style features using per-feature metadata | :white_check_mark: **Solid base**, will add features/functions as needed, [#2](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/2) @@ -144,7 +144,7 @@ Topic | Status Topic | Status ---|--- 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) -[OpenStreetMap](TileFormats/OpenStreetMap/README.md) | :white_circle: **Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md) +[OpenStreetMap](TileFormats/OpenStreetMap/README.md), | :white_circle: **Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md) Stars | :white_circle: **Not started** For spec work in progress, [watch this repo](https://github.com/AnalyticalGraphicsInc/3d-tiles/subscription) and browse the [issues](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues). @@ -155,7 +155,7 @@ In 3D Tiles, a _tileset_ is a set of _tiles_ organized in a spatial data structu ![](figures/tree.png) -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. +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. _TODO: include a screenshot of each bounding volume type._ @@ -163,7 +163,7 @@ A tile references a _feature_ or set of _features_, such as 3D models representi ## Tile metadata -The metadata for each tile - not the actual contents - are defined in JSON. For example: +The metadata for each tile—not the actual contents—are defined in JSON. For example: ```json { "boundingVolume": { @@ -202,11 +202,11 @@ An optional `viewerRequestVolume` property (not shown above) defines a volume, u 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. -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). +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). The url can be another tileset.json file to create a tileset of tilesets. See [External tilesets](#external-tilesets). -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. +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 else as an external tileset if the content is JSON. `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. @@ -216,29 +216,29 @@ A file extension is not required for `content.url`. A content's [tile format](# 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. -`children` is an array of objects that define child tiles. See the [section below](#tilesetjson). +`children` is an array of objects that define child tiles. See the [tileset.json section below](#tilesetjson). ![](figures/tile.png) -### Coordinate System and Units +### Coordinate system and units -3D Tiles use a right-handed Cartesian coordinate system, that is, the cross product of x and y yields z. 3D Tiles define the z axis as up for local Cartesian coordinate systems (see the [Tile transform](#tile-transform) section). A tileset's global coordinate system will often be [WGS84 coordinates](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for using with a modeling tool without a geospatial context. +3D Tiles uses a right-handed Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (see the [Tile transform](#tile-transform) section). A tileset's global coordinate system will often be [WGS84 coordinates](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for use with a modeling tool without a geospatial context. -`b3dm` and `i3dm` tiles embed glTF. According to the [glTF spec](https://github.com/KhronosGroup/glTF/tree/master/specification/1.0#coordinate-system-and-units) glTF uses a right-handed coordinate system and defines the y axis as up. By default embedded models are considered to be y-up, but in order to support a variety of source data, including models defined directly in WGS84 coordinates, embedded glTF models may be defined as x-up, y-up, or z-up with the `asset.gltfUpAxis` property of `tileset.json`. In general an implementation should transform glTF assets to z-up at runtime to be consistent with the z-up coordinate system of the bounding volume hierarchy. +`b3dm` and `i3dm` tiles embed glTF. According to the [glTF spec](https://github.com/KhronosGroup/glTF/tree/master/specification/1.0#coordinate-system-and-units), glTF uses a right-handed coordinate system and defines the _y_ axis as up. By default, embedded models are considered to be _y_-up, but in order to support a variety of source data, including models defined directly in WGS84 coordinates, embedded glTF models may be defined as _x_-up, _y_-up, or _z_-up with the `asset.gltfUpAxis` property of tileset.json. In general, an implementation should transform glTF assets to _z_-up at runtime to be consistent with the _z_-up coordinate system of the bounding volume hierarchy. -The units for all linear distances are meters. +The unit for all linear distances is meters. All angles are in radians. -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. +3D Tiles does 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. ### Tile transform -To support local coordinate systems, e.g., so a building tileset inside a city tileset can be defined in its own coordinate system, and a point cloud tileset inside the building could, again, be defined in its own coordinate system, each tile has an optional `transform` property. +To support local coordinate systems—e.g., so a building tileset inside a city tileset can be defined in its own coordinate system, and a point cloud tileset inside the building could, again, be defined in its own coordinate system—each tile has an optional `transform` property. -The `transform` property is a 4x4 affine transformation matrix, stored in column-major order, that transforms from the tile's local coordinate system to the parent tile's coordinate system, or tileset's coordinate system in the case of the root tile. +The `transform` property is a 4x4 affine transformation matrix, stored in column-major order, that transforms from the tile's local coordinate system to the parent tile's coordinate system—or the tileset's coordinate system in the case of the root tile. -The `transform` property applies to: +The `transform` property applies to * `tile.content` * Each feature's position. * 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). @@ -246,7 +246,7 @@ The `transform` property applies to: * `tile.boundingVolume`, except when `tile.boundingVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates. * `tile.viewerRequestVolume`, except when `tile.viewerRequestVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates. -The `transform` property does not apply to `geometricError`, i.e., the scale defined by `transform` does not scale the geometric error; the geometric error is always defined in meters. +The `transform` property does not apply to `geometricError`—i.e., the scale defined by `transform` does not scale the geometric error—the geometric error is always defined in meters. When `transform` is not defined, it defaults to the identity matrix: ```json @@ -258,7 +258,7 @@ When `transform` is not defined, it defaults to the identity matrix: ] ``` -The transformation from each tile's local coordinate to the tileset's global coordinate system is computed by a top-down traversal of the tileset and post-multiplying a child's `transform` with its parent's `transform` like a traditional scene graph or node hierarchy in computer graphics. +The transformation from each tile's local coordinate to the tileset's global coordinate system is computed by a top-down traversal of the tileset and by post-multiplying a child's `transform` with its parent's `transform` like a traditional scene graph or node hierarchy in computer graphics. The following JavaScript code shows how to compute this using Cesium's [Matrix4](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/Matrix4.js) and [Matrix3](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/Matrix3.js) types. @@ -412,7 +412,7 @@ The top-level object in tileset.json has four properties: `asset`, `properties`, `asset` is an object containing properties with metadata about the entire tileset. Its `version` property is a string that defines the 3D Tiles version. The version defines the JSON schema for tileset.json and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. The `gltfUpAxis` property is an optional string that specifies the up-axis of glTF models contained in the tileset. -`properties` is an object containing objects for each per-feature property in the tileset. This tileset.json snippet is for 3D buildings, so each tile has building models, and each building model has a `Height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. +`properties` is an object containing objects for each per-feature property in the tileset. This tileset.json snippet is for 3D buildings, so each tile has building models, and each building model has a `height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and the name defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. `geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered. @@ -432,14 +432,14 @@ To create a tree of trees, a tile's `content.url` can point to an external tiles When a tile points to an external tileset, the tile -* Cannot have any children, `tile.children` must be `undefined` or an empty array. +* Cannot have any children; `tile.children` must be `undefined` or an empty array. * Has several properties that match the external tileset's root tile: * `root.geometricError === tile.geometricError`, * `root.refine === tile.refine`, and * `root.boundingVolume === tile.content.boundingVolume` (or `root.boundingVolume === tile.boundingVolume` when `tile.content.boundingVolume` is `undefined`). * `root.viewerRequestVolume === tile.viewerRequestVolume` or `root.viewerRequestVolume` is `undefined`. * Cannot be used to create cycles, for example, by pointing to the same tileset.json containing the tile or by pointing to another tileset.json that then points back to the tileset.json containing the tile. -* Both the tile's `transform` and root tile's `transform` are applied. For example, in the following tileset referencing an external tileset, the computed transform for `T3` is `[T0][T1][T2][T3]`. +* Will by transformed by both the tile's `transform` and root tile's `transform`. For example, in the following tileset referencing an external tileset, the computed transform for `T3` is `[T0][T1][T2][T3]`. ![](figures/tileTransformExternalTileset.png) @@ -454,18 +454,18 @@ As described above, the tree has spatial coherence; each tile has a bounding vol


- Bounding spheres for the four child tiles. The children's content are completely inside the parent's bounding volume, but the children's bounding volumes are not since they are not tightly fit. + Bounding spheres for the four child tiles. The children's content is completely inside the parent's bounding volume, but the children's bounding volumes are not since they are not tightly fit.

### Creating spatial data structures The tree defined in tileset.json by `root` and, recursively, its `children`, can define different types of spatial data structures. In addition, any combination of tile formats and refinement approach (replacement or additive) can be used, enabling a lot of flexibility to support heterogeneous datasets. -It is up to the conversion tool that generates tileset.json to define an optimal tree for the dataset. A runtime engine, such as Cesium, is generic and will render any tree defined by tileset.json. Here's a brief descriptions of how 3D Tiles can represent various spatial data structures. +It is up to the conversion tool that generates tileset.json to define an optimal tree for the dataset. A runtime engine, such as Cesium, is generic and will render any tree defined by tileset.json. Here's a brief description of how 3D Tiles can represent various spatial data structures. #### K-d trees -A k-d tree is created when each tile has two children separated by a _splitting plane_ parallel to the x, y, or z axis (or longitude, latitude, height). The split axis is often round-robin rotated as levels increase down the tree, and the splitting plane may be selected using the median split, surface area heuristics, or other approaches. +A k-d tree is created when each tile has two children separated by a _splitting plane_ parallel to the _x_, _y_, or _z_ axis (or longitude, latitude, height). The split axis is often round-robin rotated as levels increase down the tree, and the splitting plane may be selected using the median split, surface area heuristics, or other approaches.


@@ -474,11 +474,11 @@ A k-d tree is created when each tile has two children separated by a _splitting Note that a k-d tree does not have uniform subdivision like typical 2D geospatial tiling schemes and, therefore, can create a more balanced tree for sparse and non-uniformly distributed datasets. -3D Tiles enable variations on k-d trees such as [multi-way k-d trees](http://www.crs4.it/vic/cgi-bin/bib-page.cgi?id=%27Goswami:2013:EMF%27) where, at each leaf of the tree, there are multiple splits along an axis. Instead of having two children per tile, there are `n` children. +3D Tiles enables variations on k-d trees such as [multi-way k-d trees](http://www.crs4.it/vic/cgi-bin/bib-page.cgi?id=%27Goswami:2013:EMF%27) where, at each leaf of the tree, there are multiple splits along an axis. Instead of having two children per tile, there are `n` children. #### Quadtrees -A quadtree is created when each tile has four uniformly subdivided children (e.g., using the center longitude and latitude) similar to typical 2D geospatial tiling schemes. Empty child tiles can be omitted. +A quadtree is created when each tile has four uniformly subdivided children (e.g., using the center longitude and latitude), similar to typical 2D geospatial tiling schemes. Empty child tiles can be omitted.


@@ -509,7 +509,7 @@ Below, the green buildings are in the left child and the purple buildings are in #### Octrees -An octree extends a quadtree by using three orthogonal splitting planes to subdivide a tile into eight children. Like quadtrees, 3D Tiles allow variations to octrees such as non-uniform subdivision, tight bounding volumes, and overlapping children. +An octree extends a quadtree by using three orthogonal splitting planes to subdivide a tile into eight children. Like quadtrees, 3D Tiles allows variations to octrees such as non-uniform subdivision, tight bounding volumes, and overlapping children.


@@ -518,31 +518,31 @@ An octree extends a quadtree by using three orthogonal splitting planes to subdi


- Non-uniform octree subdivision for a point cloud using additive refinement. Point Cloud of the Church of St Marie at Chappes, France by Prof. Peter Allen, Columbia University Robotics Lab. Scanning by Alejandro Troccoli and Matei Ciocarlie + Non-uniform octree subdivision for a point cloud using additive refinement. Point Cloud of the Church of St Marie at Chappes, France by Prof. Peter Allen, Columbia University Robotics Lab. Scanning by Alejandro Troccoli and Matei Ciocarlie.

#### Grids -3D Tiles enable uniform, non-uniform, and overlapping grids by supporting an arbitrary number of child tiles. For example, here is a top-down view of a non-uniform overlapping grid of Cambridge: +3D Tiles enables uniform, non-uniform, and overlapping grids by supporting an arbitrary number of child tiles. For example, here is a top-down view of a non-uniform overlapping grid of Cambridge: ![](figures/grid.png) -3D Tiles take advantage of empty tiles: those tiles that have a bounding volume, but no content. Since a tile's `content` property does not need to be defined, empty non-leaf tiles can be used to accelerate non-uniform grids with hierarchical culling. This essentially creates a quadtree or octree without hierarchical levels of detail (HLOD). +3D Tiles takes advantage of empty tiles: those tiles that have a bounding volume, but no content. Since a tile's `content` property does not need to be defined, empty non-leaf tiles can be used to accelerate non-uniform grids with hierarchical culling. This essentially creates a quadtree or octree without hierarchical levels of detail (HLOD). -## Tile formats +## Tile Formats Each tile's `content.url` property points to a tile that is one of the formats listed in the [Status section](#spec-status) above. A tileset can contain any combination of tile formats. 3D Tiles may also support different formats in the same tile using a [Composite](TileFormats/Composite/README.md) tile. -## Declarative styling +## Declarative Styling


Buildings colored by height using declarative styling.

-3D Tiles include concise declarative styling defined with JSON and expressions written in a small subset of JavaScript augmented for styling. +3D Tiles includes concise declarative styling defined with JSON and expressions written in a small subset of JavaScript augmented for styling. Styles generally define a feature's `show` and `color` (RGB and translucency) using an expression based on a feature's properties, for example: ```json @@ -582,15 +582,15 @@ For complete details, see the [Declarative Styling](Styling/README.md) spec. We expect the initial 3D Tiles spec to evolve until fall 2016. If you are OK with things changing, then yes, jump in. -#### Are 3D Tiles specific to Cesium? +#### Is 3D Tiles specific to Cesium? -No, 3D Tiles are a general spec for streaming massive heterogeneous 3D geospatial datasets. The Cesium team started this initiative because we need an open format optimized for streaming 3D content to Cesium. [AGI](http://www.agi.com/), the founder of Cesium, is also developing tools for creating 3D Tiles. We expect to see other visualization engines and conversion tools use 3D Tiles. +No, 3D Tiles is a general spec for streaming massive heterogeneous 3D geospatial datasets. The Cesium team started this initiative because we need an open format optimized for streaming 3D content to Cesium. [AGI](http://www.agi.com/), the founder of Cesium, is also developing tools for creating 3D Tiles. We expect to see other visualization engines and conversion tools use 3D Tiles. #### What is the relationship between 3D Tiles and glTF? [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. -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). We created a binary glTF extension ([KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF)) in order to embed glTF into binary tiles and avoid base64-encoding or multiple file overhead. +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 uses glTF for some tile formats such as [b3dm](TileFormats/Batched3DModel/README.md) (used for 3D buildings). We created a binary glTF extension ([KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF)) in order to embed glTF into binary tiles and avoid base64-encoding or multiple file overhead. Taking this approach allows us to improve Cesium, glTF, and 3D Tiles at the same time, e.g., when we add mesh compression to glTF, it benefits 3D models in Cesium, the glTF ecosystem, and 3D Tiles. @@ -614,17 +614,17 @@ As with terrain, since Cesium already streams imagery well, we are not focused o #### Will 3D Tiles replace KML? -In many cases, yes. KML regions and network links are a clunky approach to streaming massive 3D geospatial datasets on the web. 3D Tiles are built for the web and optimized for streaming; true HLOD is used; polygons do not need to be triangulated; and so on. +In many cases, yes. KML regions and network links are a clunky approach to streaming massive 3D geospatial datasets on the web. 3D Tiles is built for the web and optimized for streaming; uses true HLOD; does not need to triangulate polygons; and so on. ### Technical Q&A -#### How do 3D Tiles support heterogeneous datasets? +#### How does 3D Tiles support heterogeneous datasets? Geospatial datasets are heterogeneous: 3D buildings are different from terrain, which is different from point clouds, which are different from vector data, and so on. -3D Tiles support heterogeneous data by allowing different tile formats in a tileset, e.g., a tileset may contain tiles for 3D buildings, tiles for instanced 3D trees, and tiles for point clouds, all using different tile formats. +3D Tiles supports heterogeneous data by allowing different tile formats in a tileset, e.g., a tileset may contain tiles for 3D buildings, tiles for instanced 3D trees, and tiles for point clouds, all using different tile formats. -3D Tiles also support heterogeneous datasets by concatenating different tile formats into one tile using the [Composite](TileFormats/Composite/README.md) tile format. In the example above, a tile may have a short header followed by the content for the 3D buildings, instanced 3D trees, and point clouds. +3D Tiles also supports heterogeneous datasets by concatenating different tile formats into one tile using the [Composite](TileFormats/Composite/README.md) tile format. In the example above, a tile may have a short header followed by the content for the 3D buildings, instanced 3D trees, and point clouds. Supporting heterogeneous datasets with both inter-tile (different tile formats in the same tileset) and intra-tile (different tile formats in the same Composite tile) options allows conversion tools to make trade-offs between number of requests, optimal type-specific subdivision, and how visible/hidden layers are streamed. @@ -632,11 +632,11 @@ Supporting heterogeneous datasets with both inter-tile (different tile formats i Yes. There will always be a need to know metadata about the tileset and about tiles that are not yet loaded, e.g., so only visible tiles can be requested. However, when scaling to millions of tiles, a single tileset.json with metadata for the entire tree would be prohibitively large. -3D Tiles already support trees of trees. `content.url` can point to another tileset.json, which enables conversion tools to chunk up a tileset into any number of tileset.json files that reference each other. +3D Tiles already supports trees of trees. `content.url` can point to another tileset.json, which enables conversion tools to chunk up a tileset into any number of tileset.json files that reference each other. There's a few other ways we may solve this: * Moving subtree metadata to the tile payload instead of tileset.json. Each tile would have a header with, for example, the bounding volumes of each child, and perhaps grandchildren, and so on. -* Explicit tile layout like those of traditional tiling schemes (e.g., TMS's `z/y/x`). The challenge is that this implicitly assumes a spatial subdivision, whereas 3D Tiles are general enough to support quadtrees, octrees, k-d trees, and so on. There is likely to be a balance where two or three explicit tiling schemes can cover common cases to complement the generic spatial data structures. +* Explicit tile layout like those of traditional tiling schemes (e.g., TMS's `z/y/x`). The challenge is that this implicitly assumes a spatial subdivision, whereas 3D Tiles is general enough to support quadtrees, octrees, k-d trees, and so on. There is likely to be a balance where two or three explicit tiling schemes can cover common cases to complement the generic spatial data structures. #### How do I request the tiles for Level `n`? @@ -648,9 +648,9 @@ This 3D Tiles topic needs additional research, but the answer is basically the s Since [horizon culling](https://cesium.com/blog/2013/04/25/horizon-culling/) is useful for terrain, 3D Tiles will likely support the metadata needed for it. We haven't considered it yet since our initial work with 3D Tiles is for 3D buildings where horizon culling is not effective. -#### Is Screen-Space Error the only metric used to drive refinement? +#### Is screen space error the only metric used to drive refinement? -At runtime, a tile's `geometricError` is used to compute the Screen-Space Error (SSE) to drive refinement. We expect to expand this, for example, by using the [_Virtual Multiresolution Screen Space Error_](http://www.dis.unal.edu.co/profesores/pierre/MyHome/publications/papers/vmsse.pdf) (VMSSE), which takes occlusion into account. This can be done at runtime without streaming additional tile metadata. Similarly, fog can also be used to tolerate increases to the SSE in the distance. +At runtime, a tile's `geometricError` is used to compute the screen space Error (SSE) to drive refinement. We expect to expand this, for example, by using the [_virtual multiresolution screen space error_](http://www.dis.unal.edu.co/profesores/pierre/MyHome/publications/papers/vmsse.pdf) (VMSSE), which takes occlusion into account. This can be done at runtime without streaming additional tile metadata. Similarly, fog can also be used to tolerate increases to the SSE in the distance. However, we do anticipate other metadata for driving refinement. SSE may not be appropriate for all datasets; for example, points of interest may be better served with on/off distances and a label collision factor computed at runtime. Note that the viewer's height above the ground is rarely a good metric for 3D since 3D supports arbitrary views. @@ -676,7 +676,7 @@ Compared to replacement refinement, additive refinement has a size advantage bec See [#11](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/11). -#### What compressed texture formats do 3D Tiles use? +#### What compressed texture formats does 3D Tiles use? 3D Tiles will support the same texture compression that glTF [will support](https://github.com/KhronosGroup/glTF/issues/59). In addition, we need to consider how well GPU formats compress compared to, for example, jpeg. Some desktop game engines stream jpeg, then decompress and recompress to a GPU format in a thread. The CPU overhead for this approach may be too high for JavaScript and Web Workers. From 12d2583ecbf9d23574a52fdaefc242b09abb9769 Mon Sep 17 00:00:00 2001 From: Sarah Chow Date: Sat, 21 Apr 2018 13:11:24 -0700 Subject: [PATCH 05/37] copyedit 2 --- README.md | 14 +- Styling/README.md | 129 +++++++--------- .../schema/style.colorExpression.schema.json | 2 +- Styling/schema/style.condition.schema.json | 4 +- TileFormats/BatchTable/README.md | 117 +++++++------- TileFormats/Batched3DModel/README.md | 58 ++++--- TileFormats/Composite/README.md | 43 ++++-- TileFormats/FeatureTable/README.md | 64 ++++---- TileFormats/Instanced3DModel/README.md | 146 +++++++++--------- TileFormats/OpenStreetMap/README.md | 2 +- TileFormats/PointCloud/README.md | 112 ++++++++------ schema/pnts.featureTable.schema.json | 2 +- schema/tile.schema.json | 6 +- schema/tileset.schema.json | 2 +- 14 files changed, 362 insertions(+), 339 deletions(-) diff --git a/README.md b/README.md index a060d3127..41d275dd4 100644 --- a/README.md +++ b/README.md @@ -132,19 +132,19 @@ The 3D Tiles spec is pre-1.0 (indicated by `"version": "0.0"` in tileset.json). Topic | Status ---|--- [tileset.json](#tilesetjson)

The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed -[Batched 3D Model](TileFormats/Batched3DModel/README.md) (*.b3dm)

Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Instanced 3D Model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)

Massive number of points | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Vector Data](TileFormats/VectorData/README.md) (*.vctr)

Polygons, polylines, and placemarks | :white_circle: **In progress**, [#124](https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/124/files) +[Batched 3D model](TileFormats/Batched3DModel/README.md) (*.b3dm)

Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected +[Instanced 3D model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected +[Point cloud](TileFormats/PointCloud/README.md) (*.pnts)

Massive number of points | :white_check_mark: **Solid base**, only minor, if any, changes expected +[Vector data](TileFormats/VectorData/README.md) (*.vctr)

Polygons, polylines, and placemarks | :white_circle: **In progress**, [#124](https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/124/files) [Composite](TileFormats/Composite/README.md) (*.cmpt)

Combine heterogeneous tile formats | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Declarative Styling](Styling/README.md)

Style features using per-feature metadata | :white_check_mark: **Solid base**, will add features/functions as needed, [#2](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/2) +[Declarative styling](Styling/README.md)

Style features using per-feature metadata | :white_check_mark: **Solid base**, will add features/functions as needed, [#2](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/2) **Post Draft 1.0 Plans** Topic | Status ---|--- -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) -[OpenStreetMap](TileFormats/OpenStreetMap/README.md), | :white_circle: **Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md) +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) +[OpenStreetMap](TileFormats/OpenStreetMap/README.md), | :white_circle: **Not started** Currently folks are using [batched 3D model](TileFormats/Batched3DModel/README.md) Stars | :white_circle: **Not started** For spec work in progress, [watch this repo](https://github.com/AnalyticalGraphicsInc/3d-tiles/subscription) and browse the [issues](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues). diff --git a/Styling/README.md b/Styling/README.md index a3a9941aa..0bba29c2e 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -30,7 +30,7 @@ Contents: * [Overview](#overview) * [Examples](#examples) -* [Schema Reference](#schema-reference) +* [Schema reference](#schema-reference) * [Expressions](#expressions) * [Semantics](#semantics) * [Operators](#operators) @@ -41,25 +41,25 @@ Contents: * [vec4](#vector) * [Color](#color) * [RegExp](#regexp) - * [Operator Rules](#operator-rules) - * [Type Conversions](#type-conversions) - * [String Conversion](#string-conversions) + * [Operator rules](#operator-rules) + * [Type conversions](#type-conversions) + * [String conversion](#string-conversions) * [Constants](#constants) * [Variables](#variables) - * [Built-in Variables](#built-in-variables) - * [Built-in Functions](#built-in-functions) + * [Built-in variables](#built-in-variables) + * [Built-in functions](#built-in-functions) * [Notes](#notes) -* [Batch Table Hierarchy](#batch-table-hierarchy) -* [Point Cloud](#point-cloud) -* [File Extension](#file-extension) -* [MIME Type](#mime-type) +* [Batch table hierarchy](#batch-table-hierarchy) +* [Point cloud](#point-cloud) +* [File extension](#file-extension) +* [MIME type](#mime-type) * [Acknowledgments](#acknowledgments) ## Overview 3D Tiles styles provide concise declarative styling of tileset features. A style defines expressions to evaluate a feature's `color` (RGB and translucency) and `show` properties, often based on the feature's properties stored in the tile's batch table. -Styles are defined with JSON and expressions written in a small subset of JavaScript augmented for styling. Additionally the styling language provides a set of built-in functions to support common math operations. +Styles are defined with JSON and expressions written in a small subset of JavaScript augmented for styling. Additionally, the styling language provides a set of built-in functions to support common math operations. ## Examples @@ -71,42 +71,37 @@ The following style assigns the default show and color properties to each featur } ``` -Instead of showing all features, `show` can be an expression dependent on a feature's properties, for example: +Instead of showing all features, `show` can be an expression dependent on a feature's properties, for example, the following expression will show only features in the 19341 zip code: ```json { "show" : "${ZipCode} === '19341'" } ``` -Here, only features in the 19341 zip code are shown. +`show` can also be used for more complex queries; for example, here a compound condition and regular expression are used to show only features whose county starts with `'Chest'` and whose year built is greater than or equal to 1970: ```json { "show" : "(regExp('^Chest').test(${County})) && (${YearBuilt} >= 1970)" } ``` -Above, a compound condition and regular expression are used to show only features whose county starts with `'Chest'` and whose year built is greater than or equal to 1970. - -Colors can also be defined by expressions dependent on a feature's properties, for example: +Colors can also be defined by expressions dependent on a feature's properties. For example, the following expression colors features with a temperature above 90 as red and the others as white: ```json { "color" : "(${Temperature} > 90) ? color('red') : color('white')" } ``` -This colors features with a temperature above 90 as red and the others as white. - -The color's alpha component defines the feature's opacity, for example: +The color's alpha component defines the feature's opacity. For example, the following sets the feature's RGB color components from the feature's properties and makes features with volume greater than 100 transparent: ```json { "color" : "rgba(${red}, ${green}, ${blue}, (${volume} > 100 ? 0.5 : 1.0))" } ``` -This sets the feature's RGB color components from the feature's properties and makes features with volume greater than 100 transparent. -In addition to a string containing an expression, `color` and `show` can be an array defining a series of conditions (think of them as `if...else` statements). Conditions can, for example, be used to make color maps and color ramps with any type of inclusive/exclusive intervals. +In addition to a string containing an expression, `color` and `show` can be an array defining a series of conditions (think of them as `if...else` statements). Conditions can, for example, be used to make color maps and color ramps with any type of inclusive/exclusive intervals. -For example, here's a color map that maps an ID property to colors: +For example, the following expression maps an ID property to colors. Conditions are evaluated in order, so if `${id}` is not `'1'` or `'2'`, the `"true"` condition returns white. If no conditions are met, the color of the feature will be `undefined`: ```json { "color" : { @@ -119,9 +114,7 @@ For example, here's a color map that maps an ID property to colors: } ``` -Conditions are evaluated in order so, above, if `${id}` is not `'1'` or `'2'`, the `"true"` condition returns white. If no conditions are met, the color of the feature will be `undefined`. - -The next example shows how to use conditions to create a color ramp using intervals with an inclusive lower bound and exclusive upper bound. +The next example shows how to use conditions to create a color ramp using intervals with an inclusive lower bound and exclusive upper bound: ```json "color" : { "conditions" : [ @@ -135,7 +128,7 @@ The next example shows how to use conditions to create a color ramp using interv } ``` -Since conditions are evaluated in order, the above can more concisely be written as: +Since conditions are evaluated in order, the above can be written more concisely as the following: ```json "color" : { "conditions" : [ @@ -149,7 +142,7 @@ Since conditions are evaluated in order, the above can more concisely be written } ``` -Commonly used expressions may be stored in a `defines` object. If a variable references a define, it gets the result of the define's evaluated expression. +Commonly used expressions may be stored in a `defines` object. If a variable references a define, it gets the result of the define's evaluated expression: ```json { "defines" : { @@ -167,7 +160,7 @@ Commonly used expressions may be stored in a `defines` object. If a variable ref } ``` -A define expression may not reference other defines, however it may reference feature properties with the same name. In the style below a feature of height 150 gets the color red. +A define expression may not reference other defines; however, it may reference feature properties with the same name. In the style below a feature of height 150 gets the color red: ```json { "defines" : { @@ -183,9 +176,7 @@ A define expression may not reference other defines, however it may reference fe ``` -Non-visual properties of a feature can be defined using the `meta` property. - -For example, to set a `description` meta property to a string containing the feature name: +Non-visual properties of a feature can be defined using the `meta` property. For example, the following sets a `description` meta property to a string containing the feature name: ```json { "meta" : { @@ -204,7 +195,7 @@ A meta property expression can evaluate to any type. For example: } ``` -## Schema Reference +## Schema reference TODO: generate reference doc from schema @@ -324,11 +315,11 @@ The styling language includes 2, 3, and 4 component floating-point vector types: * `.r`, `.g`, `.b`, `.a` * `[0]`, `[1]`, `[2]`, `[3]` -Unlike GLSL, the styling language does not support swizzling. For example `vec3(1.0).xy` is not supported. +Unlike GLSL, the styling language does not support swizzling. For example, `vec3(1.0).xy` is not supported. Vectors support the following unary operators: `-`, `+`. -Vectors support the following binary operators by performing component-wise operations: `===`, `!==`, `+`, `-`, `*`, `/`, and `%`. For example `vec4(1.0) === vec4(1.0)` is true since the x, y, z, and w components are equal. Operators are essentially overloaded for `vec2`, `vec3`, and `vec4`. +Vectors support the following binary operators by performing component-wise operations: `===`, `!==`, `+`, `-`, `*`, `/`, and `%`. For example `vec4(1.0) === vec4(1.0)` is true since the _x_, _y_, _z_, and _w_ components are equal. Operators are essentially overloaded for `vec2`, `vec3`, and `vec4`. `vec2`, `vec3`, and `vec4` have a `toString` function for explicit (and implicit) conversion to strings in the format `'(x, y)'`, `'(x, y, z)'`, and `'(x, y, z, w)'`. * `toString() : String` @@ -357,11 +348,11 @@ Colors defined by a case-insensitive keyword (e.g., `'cyan'`) or hex rgb are pas These `color` functions have an optional second argument that is an alpha component to define opacity, where `0.0` is fully transparent and `1.0` is fully opaque. For example: * `color('cyan', 0.5)` -Colors defined with decimal rgb or hsl are created with `rgb` and `hsl` functions, respectively, just as in CSS (but with percentage ranges from `0.0` to `1.0` for `0%` to `100%`, respectively). For example: +Colors defined with decimal RGB or HSL are created with `rgb` and `hsl` functions, respectively, just as in CSS (but with percentage ranges from `0.0` to `1.0` for `0%` to `100%`, respectively). For example: * `rgb(100, 255, 190)` * `hsl(1.0, 0.6, 0.7)` -The range for rgb components is `0` to `255`, inclusive. For `hsl`, the range for hue, saturation, and lightness is `0.0` to `1.0`, inclusive. +The range for `rgb` components is `0` to `255`, inclusive. For `hsl`, the range for hue, saturation, and lightness is `0.0` to `1.0`, inclusive. Colors defined with `rgba` or `hsla` have a fourth argument that is an alpha component to define opacity, where `0.0` is fully transparent and `1.0` is fully opaque. For example: * `rgba(100, 255, 190, 0.25)` @@ -392,7 +383,7 @@ If specified, `flags` can have any combination of the following values: Regular expressions support these functions: * `test(string : String) : Boolean` - Tests the specified string for a match. -* `exec(string : String) : String` - Executes a search for a match in the specified string. If the search succeeds, it returns the first instance of a captured `String`. If the search fails, it returns `null` +* `exec(string : String) : String` - Executes a search for a match in the specified string. If the search succeeds, it returns the first instance of a captured `String`. If the search fails, it returns `null`. For example: ```json @@ -407,7 +398,7 @@ regExp('a(.)', 'i').exec('Abc') === 'b' regExp('Building\s(\d)').exec(${Name}) === '1' ``` -Regular expressions have a `toString` function for explicit (and implicit) conversion to strings in the format `'pattern'`. +Regular expressions have a `toString` function for explicit (and implicit) conversion to strings in the format `'pattern'`: * `toString() : String` Regular expressions do not expose any other functions or a `prototype` object. @@ -423,7 +414,7 @@ regExp('a') !~ 'bcd' 'bcd' !~ regExp('a') ``` -### Operator Rules +### Operator rules * Unary operators `+` and `-` operate only on number and vector expressions. * Unary operator `!` operates only on boolean expressions. @@ -432,26 +423,26 @@ regExp('a') !~ 'bcd' * Binary operator `+` operates on the following expressions: * Number expressions * Vector expressions of the same type - * If at least one expressions is a string, the other expressions is converted to a string following [String Conversions](#string-conversions) and the operation returns a concatenated string. E.g. `"name" + 10` evaluates to `"name10"`. -* Binary operator `-` operates on the following expressions + * If at least one expressions is a string, the other expression is converted to a string following [String Conversions](#string-conversions), and the operation returns a concatenated string, e.g. `"name" + 10` evaluates to `"name10"` +* Binary operator `-` operates on the following expressions: * Number expressions * Vector expressions of the same type -* Binary operator `*` operates on the following expressions +* Binary operator `*` operates on the following expressions: * Number expressions * Vector expressions of the same type - * Mix of number expression and vector expression. E.g. `3 * vec3(1.0)` and `vec2(1.0) * 3`. -* Binary operator `/` operates on the following expressions + * Mix of number expression and vector expression, e.g. `3 * vec3(1.0)` and `vec2(1.0) * 3` +* Binary operator `/` operates on the following expressions: * Number expressions * Vector expressions of the same type - * Vector expression followed by number expression. E.g.`vec3(1.0) / 3`. -* Binary operator `%` operates on the following expressions + * Vector expression followed by number expression, e.g.`vec3(1.0) / 3` +* Binary operator `%` operates on the following expressions: * Number expressions * Vector expressions of the same type * Binary equality operators `===` and `!==` operate on any expressions. The operation returns `false` if the expression types do not match. -* Binary regexp operators `=~` and `!~` requires one argument to be a string expression and the other to be a RegExp expression. +* Binary `regexp` operators `=~` and `!~` require one argument to be a string expression and the other to be a `RegExp` expression. * Ternary operator `? :` conditional argument must be a boolean expression. -### Type Conversions +### Type conversions Explicit conversions between primitive types are handled with `Boolean`, `Number`, and `String` functions. * `Boolean(value : Any) : Boolean` @@ -472,9 +463,9 @@ These are essentially casts, not constructor functions. The styling language does not allow for implicit type conversions, unless stated above. Expressions like `vec3(1.0) === vec4(1.0)` and `"5" < 6` are not valid. -### String Conversions +### String conversions -`vec2`, `vec3`, `vec4` and `RegExp` expressions are converted to strings using their `toString` methods. All other types follow JavaScript conventions. +`vec2`, `vec3`, `vec4`, and `RegExp` expressions are converted to strings using their `toString` methods. All other types follow JavaScript conventions. * `true` - `"true"` * `false` - `"false"` @@ -519,7 +510,7 @@ Euler's constant and the base of the natural logarithm, approximately `2.71828`. ### Variables -Variables are used to retrieve the property values of individual features in a tileset. Variables are identified using the ES 6 ([ECMAScript 2015](http://www.ecma-international.org/ecma-262/6.0/)) Template Literal syntax, i.e., `${feature.identifier}` or `${feature['identifier']}`, where the identifier is the case-sensitive property name. `feature` is implicit and can be omitted in most cases. +Variables are used to retrieve the property values of individual features in a tileset. Variables are identified using the ES 6 ([ECMAScript 2015](http://www.ecma-international.org/ecma-262/6.0/)) template literal syntax, i.e., `${feature.identifier}` or `${feature['identifier']}`, where the identifier is the case-sensitive property name. `feature` is implicit and can be omitted in most cases. Variables can be used anywhere a valid expression is accepted, except inside other variable identifiers. For example, the following is not allowed: ``` @@ -553,7 +544,7 @@ ${order} === 1 ${name} === 'Feature name' ``` -Additionally, variables originating from vector properties stored in the [Batch Table Binary](../TileFormats/BatchTable/README.md#binary-body) are treated as vector types: +Additionally, variables originating from vector properties stored in the [batch table binary](../TileFormats/BatchTable/README.md#binary-body) are treated as vector types: | `componentType` | variable type | | --- | --- | @@ -561,13 +552,13 @@ Additionally, variables originating from vector properties stored in the [Batch | `"VEC3"` | `vec3` | | `"VEC4"` | `vec4` | -Variables can be used to construct colors or vectors, for example: +Variables can be used to construct colors or vectors. For example: ``` rgba(${red}, ${green}, ${blue}, ${alpha}) vec4(${temperature}) ``` -Dot or bracket notation is used to access feature subproperties. For example: +Dot or bracket notation is used to access feature subproperties. For example: ```json { "address" : { @@ -645,7 +636,7 @@ ${temperatures.values[0]} === 70 ${temperatures['values'][0]} === 70 // Same as (temperatures[values])[0] and temperatures.values[0] ``` -### Built-in Variables +### Built-in variables The prefix `tiles3d_` is reserved for built-in variables. The following built-in variables are supported by the styling language: @@ -661,7 +652,7 @@ Gets the time, in milliseconds, since the tileset was first loaded. This is usef } ``` -### Built-in Functions +### Built-in functions The following built-in functions are supported by the styling language: @@ -1165,7 +1156,7 @@ length(x : vec3) : vec3 length(x : vec4) : vec4 ``` -Computes the length of vector `x`, i.e. the square root of the sum of the squared components. If `x` is a number, `length` returns `x`. +Computes the length of vector `x`, i.e., the square root of the sum of the squared components. If `x` is a number, `length` returns `x`. ```json { @@ -1182,7 +1173,7 @@ distance(x : vec3, y : vec3) : vec3 distance(x : vec4, y : vec4) : vec4 ``` -Computes the distance between two points `x` and `y`, i.e. `length(x - y)`. +Computes the distance between two points `x` and `y`, i.e., `length(x - y)`. ```json { @@ -1240,9 +1231,9 @@ Computes the cross product of `x` and `y`. This function only accepts `vec3` arg Comments are not supported. -## Batch Table Hierarchy +## Batch table hierarchy -The styling language provides the following built-in functions intended for use with the [Batch Table Hierarchy](../TileFormats/BatchTable/README.md#batch-table-hierarchy): +The styling language provides the following built-in functions intended for use with the [batch table hierarchy](../TileFormats/BatchTable/README.md#batch-table-hierarchy): * [`getExactClassName`](#getexactclassname) * [`isExactClass`](#isexactclass) @@ -1280,9 +1271,9 @@ For example, the following style will color all doorknobs yellow, all doors gree isExactClass(name : String) : Boolean ``` -Returns `true` is the feature's class is equal to `name`, otherwise `false`. +Returns `true` if the feature's class is equal to `name`, otherwise `false`. -For example, the following style will color all doors, but not features that are children of doors (like doorknobs). +For example, the following style will color all doors, but not features that are children of doors (like doorknobs): ```json "color" : { @@ -1299,7 +1290,7 @@ For example, the following style will color all doors, but not features that are isClass(name : String) : Boolean ``` -Returns `true` is the feature's class, or any of its ancestors' classes, are equal to `name`. +Returns `true` if the feature's class, or any of its ancestors' classes, are equal to `name`. For example, the style below will color all doors and doorknobs. @@ -1312,9 +1303,9 @@ For example, the style below will color all doors and doorknobs. } ``` -## Point Cloud +## Point cloud -A [Point Cloud](../TileFormats/PointCloud/README.md) is a collection of points that may be styled like other features. In addition to evaluating a point's `color` and `show` properties, a point cloud style may evaluate `pointSize`, or the size of each point in pixels. The default `pointSize` is `1.0`. +A [point cloud](../TileFormats/PointCloud/README.md) is a collection of points that may be styled like other features. In addition to evaluating a point's `color` and `show` properties, a point cloud style may evaluate `pointSize`, or the size of each point in pixels. The default `pointSize` is `1.0`. ```json { "color" : "color('red')", @@ -1328,7 +1319,7 @@ Point cloud styles may also reference semantics from the [Feature Table](../Tile * `${POSITION}` is a `vec3` storing the xyz Cartesian coordinates of the point before the `RTC_CENTER` and tile transform are applied. When the positions are quantized, `${POSITION}` refers to the position after the `QUANTIZED_VOLUME_SCALE` is applied, but before `QUANTIZED_VOLUME_OFFSET` is applied. * `${POSITION_ABSOLUTE}` is a `vec3` storing the xyz Cartesian coordinates of the point after the `RTC_CENTER` and tile transform are applied. When the positions are quantized, `${POSITION_ABSOLUTE}` refers to the position after the `QUANTIZED_VOLUME_SCALE`, `QUANTIZED_VOLUME_OFFSET`, and tile transform are applied. * `${COLOR}` evaluates to a `Color` storing the rgba color of the point. When the feature table's color semantic is `RGB` or `RGB565`, `${COLOR}.alpha` is `1.0`. If no color semantic is defined, `${COLOR}` evaluates to the application-specific default color. -* `${NORMAL}` is a `vec3` storing the normal, in Cartesian coordinates, of the point before the tile transform is applied. When normals are oct-encoded `${NORMAL}` refers to the decoded normal. If no normal semantic is defined in the feature table, `${NORMAL}` evaluates to `undefined`. +* `${NORMAL}` is a `vec3` storing the normal, in Cartesian coordinates, of the point before the tile transform is applied. When normals are oct-encoded, `${NORMAL}` refers to the decoded normal. If no normal semantic is defined in the feature table, `${NORMAL}` evaluates to `undefined`. For example: @@ -1340,15 +1331,15 @@ For example: } ``` -#### Point Cloud Shader Styling +#### Point cloud shader styling **TODO : add note about GLSL implementations requires strict type comparisons among other things: https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/140** -## File Extension +## File extension TBA -## MIME Type +## MIME type _TBA, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ diff --git a/Styling/schema/style.colorExpression.schema.json b/Styling/schema/style.colorExpression.schema.json index 4c3ad2084..63c225e6e 100644 --- a/Styling/schema/style.colorExpression.schema.json +++ b/Styling/schema/style.colorExpression.schema.json @@ -3,5 +3,5 @@ "id" : "style.colorExpression.schema.json", "title" : "color expression", "type" : "string", - "description" : "3D Tiles style expression that evaluates to a Color." + "description" : "3D Tiles style expression that evaluates to a color." } diff --git a/Styling/schema/style.condition.schema.json b/Styling/schema/style.condition.schema.json index d65d93df7..cbe67fd5b 100644 --- a/Styling/schema/style.condition.schema.json +++ b/Styling/schema/style.condition.schema.json @@ -3,7 +3,7 @@ "id" : "style.condition.schema.json", "title" : "condition", "type" : "object", - "description" : "A series of conditions evaluated in order like a series of if...else statements that result in an expression being evaluated.", + "description" : "A series of conditions evaluated in order, like a series of if...else statements that result in an expression being evaluated.", "properties" : { "conditions" : { "type" : "array", @@ -17,7 +17,7 @@ "minItems" : 2, "maxItems" : 2 }, - "description" : "A series of boolean conditions evaluated in order. For the first one that evaluates to true, its value, the 'result', (which is also an expression) is evaluated and returned. Result expressions must all be the same type. If no condition evaluates to true, the result is `undefined`. When conditions is `undefined`, `null`, or an empty object, the result is `undefined`." + "description" : "A series of boolean conditions evaluated in order. For the first one that evaluates to true, its value, the 'result' (which is also an expression), is evaluated and returned. Result expressions must all be the same type. If no condition evaluates to true, the result is `undefined`. When conditions are `undefined`, `null`, or an empty object, the result is `undefined`." } }, "additionalProperties" : false diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 207063078..40d8a651d 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -7,61 +7,59 @@ * Tom Fili, [@CesiumFili](https://twitter.com/CesiumFili) * Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi) -Contents: +## Contents * [Overview](#overview) * [Layout](#layout) - * [JSON Header](#json-header) - * [Binary Body](#binary-body) -* [Batch Table Hierarchy](#batch-table-hierarchy) + * [JSON header](#json-header) + * [Binary body](#binary-body) +* [Batch table hierarchy](#batch-table-hierarchy) * [Motivation](#motivation) * [Hierarchy](#hierarchy) * [Examples](#examples) - * [Feature Classes](#feature-classes) - * [Feature Hierarchy](#feature-hierarchy) + * [Feature classes](#feature-classes) + * [Feature hierarchy](#feature-hierarchy) * [Styling](#styling) * [Notes](#notes) -* [Implementation Notes](#implementation-notes) +* [Implementation notes](#implementation-notes) * [Acknowledgments](#acknowledgments) ## Overview -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. +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. -A Batch Table is used by the following tile formats: -* [Batched 3D Model](../Batched3DModel/README.md) (b3dm) -* [Instanced 3D Model](../Instanced3DModel/README.md) (i3dm) -* [Point Cloud](../PointCloud/README.md) (pnts) +A batch table is used by the following tile formats: +* [Batched 3D model](../Batched3DModel/README.md) (b3dm) +* [Instanced 3D model](../Instanced3DModel/README.md) (i3dm) +* [Point cloud](../PointCloud/README.md) (pnts) * [Vector](../VectorData/README.md) (vctr) ## Layout -A Batch Table is composed of two parts: a JSON header and an optional binary body. The JSON describes the properties, whose values can either be defined directly in the JSON as an array, or refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. +A batch table is composed of two parts: a JSON header and an optional binary body. The JSON describes the properties, whose values either can be defined directly in the JSON as an array, or can refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. -**Figure 1**: Batch Table layout +![batch table layout](figures/batch-table-layout.png)_Batch table layout._ -![batch table layout](figures/batch-table-layout.png) +When a tile format includes a batch table, the batch table immediately follows the tile's feature table if it exists. Otherwise, the batch table immediately follows the tile's header. +The header will also contain `batchTableJSONByteLength` and `batchTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the batch table. -When a tile format includes a Batch Table, the Batch Table immediately follows the tile's Feature Table if it exists. Otherwise, the Batch Table immediately follows the tile's header. -The header will also contain `batchTableJSONByteLength` and `batchTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the Batch Table. +Code for reading the batch table can be found in [Cesium3DTileBatchTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileBatchTable.js) in the Cesium implementation of 3D Tiles. -Code for reading the Batch Table can be found in [Cesium3DTileBatchTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileBatchTable.js) in the Cesium implementation of 3D Tiles. +### JSON header -### JSON Header +Batch table values can be represented in the JSON header in two different ways: -Batch Table values can be represented in the JSON header in two different ways. - -1. An array of values. (e.g. `"name" : ['name1', 'name2', 'name3']` or `"height" : [10.0, 20.0, 15.0]`) +1. An array of values, e.g., `"name" : ['name1', 'name2', 'name3']` or `"height" : [10.0, 20.0, 15.0]`. * Array elements can be any valid JSON data type, including objects and arrays. Elements may be `null`. - * The length of each array is equal to `batchLength` which is specified in each tile format. This is the number of features in the tile. For example, `batchLength` may be the number of models in a b3dm tile, the number of instances in a i3dm tile, or the number of points (or number of objects) in a pnts tile. -2. A reference to data in the binary body, denoted by an object with `byteOffset`, `componentType`, and `type` properties property. (e.g. `"height" : { "byteOffset" : 24, "componentType" : "FLOAT", "type" : "SCALAR"}`). + * The length of each array is equal to `batchLength`, which is specified in each tile format. This is the number of features in the tile. For example, `batchLength` may be the number of models in a b3dm tile, the number of instances in a i3dm tile, or the number of points (or number of objects) in a pnts tile. +2. A reference to data in the binary body, denoted by an object with `byteOffset`, `componentType`, and `type` properties, e.g., `"height" : { "byteOffset" : 24, "componentType" : "FLOAT", "type" : "SCALAR"}`. * `byteOffset` is a zero-based offset relative to the start of the binary body. * `componentType` is the datatype of components in the attribute. Allowed values are `"BYTE"`, `"UNSIGNED_BYTE"`, `"SHORT"`, `"UNSIGNED_SHORT"`, `"INT"`, `"UNSIGNED_INT"`, `"FLOAT"`, and `"DOUBLE"`. * `type` specifies if the property is a scalar or vector. Allowed values are `"SCALAR"`, `"VEC2"`, `"VEC3"`, and `"VEC4"`. -The Batch Table JSON is a `UTF-8` string containing JSON. It can be extracted from the arraybuffer using the `TextDecoder` JavaScript API and transformed to a JavaScript object with `JSON.parse`. +The batch table JSON is a `UTF-8` string containing JSON. It can be extracted from the arraybuffer using the `TextDecoder` JavaScript API and transformed to a JavaScript object with `JSON.parse`. -A `batchId` is used to access elements in each array and extract the corresponding properties. For example, the following Batch Table has properties for a batch of two features: +A `batchId` is used to access elements in each array and extract the corresponding properties. For example, the following batch table has properties for a batch of two features: ```json { "id" : ["unique id", "another unique id"], @@ -87,17 +85,15 @@ yearBuilt[1] = 2015; address[1] = {street : 'Main Street', houseNumber : '2'}; ``` -JSON Schema Batch Table definitions can be found in [batchTable.schema.json](../../schema/batchTable.schema.json). +JSON schema batch table definitions can be found in [batchTable.schema.json](../../schema/batchTable.schema.json). -### Binary Body +### Binary body When the JSON header includes a reference to the binary section, the provided `byteOffset` is used to index into the data. -**Figure 2**: Indexing into the Batch Table binary body - -![batch table binary index](figures/batch-table-binary-index.png) +![batch table binary index](figures/batch-table-binary-index.png)_Indexing into the batch table binary body._ -Values can be retrieved using the number of features, `batchLength`, the desired batch id, `batchId`, and the `componentType` and `type` defined in the JSON header. +Values can be retrieved using the number of features, `batchLength`; the desired batch id, `batchId`; and the `componentType` and `type` defined in the JSON header. The following tables can be used to compute the byte size of a property. @@ -119,7 +115,7 @@ The following tables can be used to compute the byte size of a property. | `"VEC3"` | 3 | | `"VEC4"` | 4 | -For example, given the following Batch Table JSON with `batchLength` of 10 +For example, given the following batch table JSON with `batchLength` of 10: ```json { @@ -164,15 +160,13 @@ var cartographicArray = new Float64Array(batchTableBinary.buffer, byteOffset, ca var cartographicOfFeature = positionArray.subarray(batchId * numberOfComponents, batchId * numberOfComponents + numberOfComponents); // Using subarray creates a view into the array, and not a new array. ``` -## Batch Table Hierarchy +## Batch table hierarchy -The standard batch table is suitable for datasets composed of features with the same sets of properties. However some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The batch table hierarchy provides more flexibility for these cases. +The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The batch table hierarchy provides more flexibility for these cases. ### Motivation -Consider a tile whose features fit into multiple categories that do not share the same properties. A parking lot tile may have three types of features: cars, lamp posts, and trees. - -With the standard batch table, this might look like: +Consider a tile whose features fit into multiple categories that do not share the same properties. A parking lot tile may have three types of features: cars, lamp posts, and trees. With the standard batch table, this might look like the following: ```json { @@ -226,11 +220,8 @@ In this example, several `""` and `0` array values are stored so each array has } ``` -Another limitation of the standard batch table is the difficulty in expressing metadata hierarchies. - -For example consider a tile that represents a city block. The block itself contains metadata, the individual buildings contain metadata, and the building walls contain metadata. - -A tree diagram of the hierarchy might look like: +Another limitation of the standard batch table is the difficulty in expressing metadata hierarchies. +For example, consider a tile that represents a city block. The block itself contains metadata, the individual buildings contain metadata, and the building walls contain metadata. A tree diagram of the hierarchy might look like this: - block - building @@ -246,7 +237,7 @@ A tree diagram of the hierarchy might look like: In order to select a wall and retrieve properties from its building, the wall metadata must also include building metadata. Essentially the three-level hierarchy must be flattened into each feature, resulting in a lot of duplicate entries. -A standard batch table with two walls per building and three buildings per block might look like: +A standard batch table with two walls per building and three buildings per block might look like this: ```json { @@ -260,7 +251,7 @@ A standard batch table with two walls per building and three buildings per block } ``` -Both cases above illustrate the benefit of supporting feature types and a feature hierarchy within the batch table. +Both these cases illustrate the benefit of supporting feature types and a feature hierarchy within the batch table. ### Hierarchy @@ -317,17 +308,17 @@ Note that this is different than a tile's `batchLength`, which is the total numb **Implementation Note**: The batch table hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. -`parentCounts` is an array of integers of length `instancesLength`. Each value specifies the number of parents that instance has. If omitted, `parentCounts` is implicitly an array of length `instancesLength` where all values are 1. +`parentCounts` is an array of integers of length `instancesLength`. Each value specifies the number of parents that instance has. If omitted, `parentCounts` is implicitly an array of length `instancesLength`, where all values are 1. `parentIds` is an array of integers whose length equals the sum of the values in `parentCounts`. Parent ids are placed sequentially by instance - instance 0's parent ids are followed by instance 1's parent ids. Each value specifies the instance's parent as an index into the `classIds` array. -Cyclical hierarchies are not allowed. When an instance's `parentId` points to itself, then it has no parent. When `parentIds` is omitted the instances do not have parents. +Cyclical hierarchies are not allowed. When an instance's `parentId` points to itself, then it has no parent. When `parentIds` is omitted, the instances do not have parents. -A feature's `batchId` is used to access its `classId` and `parentCount`. Therefore the values in the `classIds` and `parentCounts` arrays are initially ordered by `batchId` and followed by non-feature instances. +A feature's `batchId` is used to access its `classId` and `parentCount`. Therefore, the values in the `classIds` and `parentCounts` arrays are initially ordered by `batchId` and followed by non-feature instances. -The `parentCounts` and `parentIds` arrays form an instance hierarchy. A feature's properties includes those defined by its own class and any properties from ancestor instances. +The `parentCounts` and `parentIds` arrays form an instance hierarchy. A feature's properties include those defined by its own class and any properties from ancestor instances. -In some cases multiple ancestors may share the same property name. This can occur if two ancestors are the same class or are different classes with the same property names. For example if every class defined the property "id" then it would be an overloaded property. In such cases it is up to the implementation to decide which value to return. +In some cases multiple ancestors may share the same property name. This can occur if two ancestors are the same class or are different classes with the same property names. For example, if every class defined the property "id", then it would be an overloaded property. In such cases it is up to the implementation to decide which value to return. Finally, `classIds`, `parentCounts`, and `parentIds` may instead be references to data in the binary body. If omitted, `componentType` defaults to `UNSIGNED_SHORT`. `type` is implicitly `SCALAR`. @@ -340,9 +331,9 @@ Finally, `classIds`, `parentCounts`, and `parentIds` may instead be references t ### Examples -#### Feature Classes +#### Feature classes -Going back to the example of a parking lot with car, lamp post, and tree features, a batch table might look like: +Going back to the example of a parking lot with car, lamp post, and tree features, a batch table might look like this: ```json { @@ -379,7 +370,7 @@ Going back to the example of a parking lot with car, lamp post, and tree feature } ``` -Since this example does not contain any sort of hierarchy the `parentCounts` and `parentIds` are not included and `instancesLength` just equals the tile's `batchLength`. +Since this example does not contain any sort of hierarchy, the `parentCounts` and `parentIds` are not included, and `instancesLength` just equals the tile's `batchLength`. A `classId` of 0 indicates a "Lamp" instance, 1 indicates a "Car" instance, and 2 indicates a "Tree" instance. @@ -392,13 +383,11 @@ carType : "sedan" carColor : "red" ``` -**Figure 3**: Batch Table Hierarchy - Parking Lot - -![batch table hierarchy parking lot](figures/batch-table-hierarchy-parking-lot.png) +![batch table hierarchy parking lot](figures/batch-table-hierarchy-parking-lot.png)_Batch table hierarchy: parking lot._ -#### Feature Hierarchy +#### Feature hierarchy -The city block example would now look like: +The city block example would now look like this: ```json { @@ -437,7 +426,7 @@ The city block example would now look like: } ``` -The tile's `batchLength` is 6 and `instancesLength` is 10. The building and block instances are not features of the tile, but contain properties that are inherited by the six wall features. +The tile's `batchLength` is 6 and `instancesLength` is 10. The building and block instances are not features of the tile but contain properties that are inherited by the six wall features. `parentCounts` is not included since every instance has at most one parent. @@ -455,7 +444,7 @@ block_district : "central" Breaking it down into smaller steps: -The feature with `batchId = 3` is the fourth "Wall" instance, and its properties are: +The feature with `batchId = 3` is the fourth "Wall" instance, and its properties are the following: ``` wall_color : "lime" wall_windows : 2 @@ -476,9 +465,7 @@ block_district : ["central"] Since the block's `parentId` is also 9, it does not have a parent and the traversal is complete. -**Figure 4**: Batch Table Hierarchy - Block - -![batch table hierarchy block](figures/batch-table-hierarchy-block.png) +![batch table hierarchy block](figures/batch-table-hierarchy-block.png)_Batch table hierarchy: block._ ### Styling @@ -505,13 +492,13 @@ More detailed descriptions are provided in the [Styling Spec](../../Styling/READ * The batch table hierarchy is self-contained within the tile. It is not possible to form metadata hierarchy across different tiles in the tileset. -## Implementation Notes +## Implementation notes In JavaScript, a `TypedArray` cannot be created on data unless it is byte-aligned to the data type. For example, a `Float32Array` must be stored in memory such that its data begins on a byte multiple of four since each `float` contains four bytes. The string generated from the JSON header should be padded with space characters in order to ensure that the binary body is byte-aligned. -The binary body should also be padded if necessary when there is data following the Batch Table. +The binary body should also be padded if necessary when there is data following the batch table. ## Acknowledgments diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 237fc1d56..717512c0c 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -6,21 +6,33 @@ * Tom Fili, [@CesiumFili](https://twitter.com/CesiumFili) * Sean Lilley, [@lilleyse](https://github.com/lilleyse) +## Contents + +* [Overview](#overview) +* [Layout](#layout) +* [Header](#header) +* [Feature table](#feature-table) + * [Semantics](#semantics) + * [Feature semantics](#feature-semantics) + * [Global semantics](#global-semantics) +* [Batch table](#batch-table) +* [Binary glTF](#binary-gltf) +* [File extension](#file-extension) +* [MIME type](#mime-type) + ## Overview -_Batched 3D Model_ allows offline batching of heterogeneous 3D models, such as different buildings in a city, for efficient streaming to a web client for rendering and interaction. Efficiency comes from transferring multiple models in a single request and rendering them in the least number of WebGL draw calls necessary. Using the core 3D Tiles spec language, each model is a _feature_. +_Batched 3D model_ allows offline batching of heterogeneous 3D models, such as different buildings in a city, for efficient streaming to a web client for rendering and interaction. Efficiency comes from transferring multiple models in a single request and rendering them in the least number of WebGL draw calls necessary. Using the core 3D Tiles spec language, each model is a _feature_. -Per-model properties, such as IDs, enable individual models to be identified and updated at runtime, e.g., show/hide, highlight color, etc. Properties may be used, for example, to query a web service to access metadata, such as passing a building's ID to get its address. Or a property might be referenced on-the-fly for changing a model's appearance, e.g., changing highlight color based on a property value. +Per-model properties, such as IDs, enable individual models to be identified and updated at runtime, e.g., show/hide, highlight color, etc. Properties may be used, for example, to query a web service to access metadata, such as passing a building's ID to get its address. Or a property might be referenced on the fly for changing a model's appearance, e.g., changing highlight color based on a property value. -Batched 3D Model, or just the _batch_, is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. +Batched 3D model, or just the _batch_, is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. ## Layout A tile is composed of two sections: a header immediately followed by a body. -**Figure 1**: Batched 3D Model layout (dashes indicate optional fields). - -![](figures/layout.png) +![](figures/layout.png)_Batched 3D model layout (dashes indicate optional fields)._ ## Header @@ -28,8 +40,8 @@ The 28-byte header contains the following fields: |Field name|Data type|Description| |----------|---------|-----------| -| `magic` | 4-byte ANSI string | `"b3dm"`. This can be used to identify the arraybuffer as a Batched 3D Model tile. | -| `version` | `uint32` | The version of the Batched 3D Model format. It is currently `1`. | +| `magic` | 4-byte ANSI string | `"b3dm"`. This can be used to identify the arraybuffer as a batched 3D model tile. | +| `version` | `uint32` | The version of the batched 3D model format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | | `featureTableJSONByteLength` | `uint32` | The length of the feature table JSON section in bytes. Zero indicates there is no feature table. | | `featureTableBinaryByteLength` | `uint32` | The length of the feature table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | @@ -38,26 +50,26 @@ The 28-byte header contains the following fields: If `featureTableJSONByteLength` equals zero, the tile does not need to be rendered. -The body section immediately follows the header section, and is composed of three fields: `Feature Table`, `Batch Table` and `Binary glTF`. +The body section immediately follows the header section, and is composed of three fields: `Feature Table`, `Batch Table`, and `Binary glTF`. Code for reading the header can be found in [Batched3DModelTileContent](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Batched3DModel3DTileContent.js) in the Cesium implementation of 3D Tiles. -## Feature Table +## Feature table Contains values for `b3dm` semantics. -More information is available in the [Feature Table specification](../FeatureTable/README.md). +More information is available in the [feature table specification](../FeatureTable/README.md). -The `b3dm` Feature Table JSON Schema is defined in [b3dm.featureTable.schema.json](../../schema/b3dm.featureTable.schema.json). +The `b3dm` feature table JSON schema is defined in [b3dm.featureTable.schema.json](../../schema/b3dm.featureTable.schema.json). ### Semantics -#### Feature Semantics +#### Feature semantics There are currently no per-feature semantics. -#### Global Semantics +#### Global semantics These semantics define global properties for all features. @@ -65,19 +77,19 @@ These semantics define global properties for all features. | --- | --- | --- | --- | | `BATCH_LENGTH` | `uint32` | The number of distinguishable models, also called features, in the batch. If the Binary glTF does not have a `batchId` attribute, this field _must_ be `0`. | :white_check_mark: Yes. | -## Batch Table +## Batch table -The _Batch Table_ contains per-model application-specific metadata, indexable by `batchId`, that can be used for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. In the Binary glTF section, each vertex has an numeric `batchId` attribute in the integer range `[0, number of models in the batch - 1]`. The `batchId` indicates the model to which the vertex belongs. This allows models to be batched together and still be identifiable. +The _batch table_ contains per-model application-specific metadata, indexable by `batchId`, that can be used for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. In the binary glTF section, each vertex has an numeric `batchId` attribute in the integer range `[0, number of models in the batch - 1]`. The `batchId` indicates the model to which the vertex belongs. This allows models to be batched together and still be identifiable. -See the [Batch Table](../BatchTable/README.md) reference for more information. +See the [batch table](../BatchTable/README.md) reference for more information. ## Binary glTF -[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Batched 3D Model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. +[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Batched 3D model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. The binary glTF immediately follows the feature table and batch table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. -The glTF asset must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. +The glTF asset must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the feature table or batch table if they are present. As described above, each vertex has a `batchId` attribute indicating the model to which it belongs. For example, vertices for a batch with three models may look like this: ``` @@ -85,7 +97,7 @@ batchId: [0, 0, 0, ..., 1, 1, 1, ..., 2, 2, 2, ...] position: [xyz, xyz, xyz, ..., xyz, xyz, xyz, ..., xyz, xyz, xyz, ...] normal: [xyz, xyz, xyz, ..., xyz, xyz, xyz, ..., xyz, xyz, xyz, ...] ``` -Vertices do not need to be ordered by `batchId` so the following is also OK: +Vertices do not need to be ordered by `batchId`, so the following is also OK: ``` batchId: [0, 1, 2, ..., 2, 1, 0, ..., 1, 2, 0, ...] position: [xyz, xyz, xyz, ..., xyz, xyz, xyz, ..., xyz, xyz, xyz, ...] @@ -117,17 +129,17 @@ attribute float a_batchId; The vertex shader can be modified at runtime to use `a_batchId` to access individual models in the batch, e.g., to change their color. -When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0`, the `batchId` attribute (with the parameter semantic `_BATCHID`) is required; otherwise, it is not. +When a batch table is present or the `BATCH_LENGTH` property is greater than `0`, the `batchId` attribute (with the parameter semantic `_BATCHID`) is required; otherwise, it is not. Although not strictly required, clients may find the glTF [CESIUM_RTC](https://github.com/KhronosGroup/glTF/blob/new-extensions/extensions/CESIUM_RTC/README.md) extension useful for high-precision rendering. -## File Extension +## File extension `.b3dm` The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. -## MIME Type +## MIME type _TODO, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index 8a98d9e18..08d7a5ba5 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -5,21 +5,30 @@ * Sean Lilley, [@lilleyse](https://github.com/lilleyse) * Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi) +## Contents + +* [Overview](#overview) +* [Layout](#layout) +* [Header](#header) +* [Inner tiles](#inner-tiles) +* [File extension](#file-extension) +* [MIME type](#mime-type) +* [Acknowledgments](#acknowledgments) +* [Resources](#resources) + ## Overview -The _Composite_ tile format enables concatenating tiles of different formats into one tile. +The _composite_ tile format enables concatenating tiles of different formats into one tile. -3D Tiles and the Composite tile allow flexibility for streaming heterogeneous datasets. For example, buildings and trees could be stored either in two separate _Batched 3D Model_ and _Instanced 3D Model_ tiles or, using a Composite tile, the tiles can be combined. +3D Tiles and the composite tile allow flexibility for streaming heterogeneous datasets. For example, buildings and trees could be stored either in two separate _batched 3D model_ and _instanced 3D model_ tiles or, using a composite tile, the tiles can be combined. -Supporting heterogeneous datasets with both inter-tile (separate tiles of different formats that are in the same tileset) and intra-tile (different tile formats that are in the same Composite tile) options allows conversion tools to make trade-offs between number of requests, optimal type-specific subdivision, and how visible/hidden layers are streamed. +Supporting heterogeneous datasets with both inter-tile (separate tiles of different formats that are in the same tileset) and intra-tile (different tile formats that are in the same composite tile) options allows conversion tools to make trade-offs between number of requests, optimal type-specific subdivision, and how visible/hidden layers are streamed. -A Composite is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. +A composite is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. ## Layout -**Figure 1**: Composite layout (dashes indicate optional fields). - -![](figures/layout.png) +![](figures/layout.png)_Composite layout (dashes indicate optional fields)._ ## Header @@ -27,20 +36,20 @@ The 16-byte header section contains the following fields: |Field name|Data type|Description| |----------|---------|-----------| -| `magic` | 4-byte ANSI string | `"cmpt"`. This can be used to identify the arraybuffer as a Composite tile. | -| `version` | `uint32` | The version of the Composite format. It is currently `1`. | -| `byteLength` | `uint32` | The length of the entire Composite tile, including this header and each inner tile, in bytes. | -| `tilesLength` | `uint32` | The number of tiles in the Composite. | +| `magic` | 4-byte ANSI string | `"cmpt"`. This can be used to identify the arraybuffer as a composite tile. | +| `version` | `uint32` | The version of the composite format. It is currently `1`. | +| `byteLength` | `uint32` | The length of the entire composite tile, including this header and each inner tile, in bytes. | +| `tilesLength` | `uint32` | The number of tiles in the composite. | _TODO: code example reading header_ -## Inner Tiles +## Inner tiles -Inner tile fields are stored tightly packed immediately following the header section. No additional header is added on top of the tiles' preexisting headers (eg, b3dm or i3dm headers). However, the following information describes general characteristics of the existing contents of relevant files' headers to explain common information which a composite tile reader might exploit to find the boundaries of the inner tiles. +Inner tile fields are stored tightly packed immediately following the header section. No additional header is added on top of the tiles' preexisting headers, e.g., b3dm or i3dm headers. However, the following information describes general characteristics of the existing contents of relevant files' headers to explain common information that a composite tile reader might exploit to find the boundaries of the inner tiles: -* Each tile starts with a 4-byte ANSI string, `magic`, that can be used to determine the tile format for further parsing. See the [main 3D Tiles spec](../../README.md) for a list of tile formats. Composite tiles can contain Composite tiles. +* Each tile starts with a 4-byte ANSI string, `magic`, that can be used to determine the tile format for further parsing. See the [main 3D Tiles spec](../../README.md) for a list of tile formats. Composite tiles can contain composite tiles. * Each tile's header contains a `uint32` `byteLength`, which defines the length of the inner tile, including its header, in bytes. This can be used to traverse the inner tiles. -* For any tile format's version 1, the first 12-bytes of all tiles is the following fields: +* For any tile format's version 1, the first 12 bytes of all tiles is the following fields: |Field name|Data type|Description| |----------|---------|-----------| @@ -50,13 +59,13 @@ Inner tile fields are stored tightly packed immediately following the header sec Refer to the spec for each tile format for more details. -## File Extension +## File extension `.cmpt` The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. -## MIME Type +## MIME type _TODO, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ diff --git a/TileFormats/FeatureTable/README.md b/TileFormats/FeatureTable/README.md index 2b33bd2ed..d219d9b8d 100644 --- a/TileFormats/FeatureTable/README.md +++ b/TileFormats/FeatureTable/README.md @@ -7,55 +7,59 @@ * Dan Bagnell, [@bagnell](https://github.com/bagnell) * Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi) +## Contents + +* [Overview](#overview) +* [Layout](#layout) + * [JSON header](#json-header) + * [Binary body](#binary-body) +* [Implementation notes](#implementation-notes) + ## Overview -A _Feature Table_ describes position and appearance properties for each feature in a tile. The [Batch Table](../BatchTable/README.md), on the other hand, contains per-feature application-specific metadata not necessarily used for rendering. +A _feature table_ describes position and appearance properties for each feature in a tile. The [batch table](../BatchTable/README.md), on the other hand, contains per-feature application-specific metadata not necessarily used for rendering. -A Feature Table is used by the following tile formats: -* [Batched 3D Model](../Batched3DModel/README.md) (b3dm) - each model is a feature. -* [Instanced 3D Model](../Instanced3DModel/README.md) (i3dm) - each model instance is a feature. -* [Point Cloud](../PointCloud/README.md) (pnts) - each point is a feature. +A feature table is used by the following tile formats: +* [Batched 3D model](../Batched3DModel/README.md) (b3dm) - each model is a feature. +* [Instanced 3D model](../Instanced3DModel/README.md) (i3dm) - each model instance is a feature. +* [Point cloud](../PointCloud/README.md) (pnts) - each point is a feature. * [Vector](../VectorData/README.md) (vctr) - each point/polyline/polygon is a feature. -Per-feature properties are defined using tile-format-specific semantics defined in each tile format's specification. For example, in _Instanced 3D Model_, `SCALE_NON_UNIFORM` defines the non-uniform scale applied to each 3D model instance. +Per-feature properties are defined using tile format-specific semantics defined in each tile format's specification. For example, for _instanced 3D model_, `SCALE_NON_UNIFORM` defines the non-uniform scale applied to each 3D model instance. ## Layout -A Feature Table is composed of two parts: a JSON header and an optional binary body. The JSON property names are tile-format-specific semantics, and their values can either be defined directly in the JSON, or refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. +A feature table is composed of two parts: a JSON header and an optional binary body. The JSON property names are tile format-specific semantics, and their values can either be defined directly in the JSON, or refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. -**Figure 1**: Feature Table layout +![feature table layout](figures/feature-table-layout.png)_Feature table layout._ -![feature table layout](figures/feature-table-layout.png) +When a tile format includes a feature table, the feature table immediately follows the tile's header. The header will also contain `featureTableJSONByteLength` and `featureTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the feature table. -When a tile format includes a Feature Table, the Feature Table immediately follows the tile's header. The header will also contain `featureTableJSONByteLength` and `featureTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the Feature Table. +Code for reading the feature table can be found in [Cesium3DTileFeatureTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileFeatureTable.js) in the Cesium implementation of 3D Tiles. -Code for reading the Feature Table can be found in [Cesium3DTileFeatureTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileFeatureTable.js) in the Cesium implementation of 3D Tiles. +### JSON header -## JSON Header +Feature table values can be represented in the JSON header in three different ways: -Feature Table values can be represented in the JSON header in three different ways. - -1. A single value or object. (e.g. `"INSTANCES_LENGTH" : 4`) - * This is used for global semantics like `"INSTANCES_LENGTH"`, which defines the number of model instances in an Instanced 3D Model tile. -2. An array of values. (e.g. `"POSITION" : [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]`) - * This is used for per-feature semantics like `"POSITION"` in Instanced 3D Model. Above, each `POSITION` refers to a `float32[3]` data type so there are three features: `Feature 0's position`=`(1.0, 0.0, 0.0)`, `Feature 1's position`=`(0.0, 1.0, 0.0)`, `Feature 2's position`=`(0.0, 0.0, 1.0)`. -3. A reference to data in the binary body, denoted by an object with a `byteOffset` property. (e.g. `"SCALE" : { "byteOffset" : 24}`). +1. A single value or object, e.g., `"INSTANCES_LENGTH" : 4`. + * This is used for global semantics like `"INSTANCES_LENGTH"`, which defines the number of model instances in an instanced 3D model tile. +2. An array of values, e.g., `"POSITION" : [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]`. + * This is used for per-feature semantics like `"POSITION"` in instanced 3D model. Above, each `POSITION` refers to a `float32[3]` data type so there are three features: `Feature 0's position`=`(1.0, 0.0, 0.0)`, `Feature 1's position`=`(0.0, 1.0, 0.0)`, `Feature 2's position`=`(0.0, 0.0, 1.0)`. +3. A reference to data in the binary body, denoted by an object with a `byteOffset` property, e.g., `"SCALE" : { "byteOffset" : 24}`. * `byteOffset` is a zero-based offset relative to the start of the binary body. - * The semantic defines the allowed data type, e.g., when `"POSITION"` in Instanced Model refers to the binary body, the component type is `FLOAT` and the number of components is `3`. - * Some semantics allow for overriding the implicit `componentType`. These cases are specified in each tile format. (e.g. `"BATCH_ID" : { "byteOffset" : 24, "componentType" : "UNSIGNED_BYTE"}`). -The only valid properties in the JSON header are the defined semantics by the tile format. Application-specific data should be stored in the Batch Table. + * The semantic defines the allowed data type, e.g., when `"POSITION"` in instanced model refers to the binary body, the component type is `FLOAT` and the number of components is `3`. + * Some semantics allow for overriding the implicit `componentType`. These cases are specified in each tile format, e.g., `"BATCH_ID" : { "byteOffset" : 24, "componentType" : "UNSIGNED_BYTE"}`. +The only valid properties in the JSON header are the defined semantics by the tile format. Application-specific data should be stored in the batch table. -JSON Schema Feature Table definitions can be found in [featureTable.schema.json](../../schema/featureTable.schema.json). +JSON schema feature table definitions can be found in [featureTable.schema.json](../../schema/featureTable.schema.json). -## Binary Body +### Binary body When the JSON header includes a reference to the binary, the provided `byteOffset` is used to index into the data. -**Figure 2**: Indexing into the Feature Table binary body - -![feature table binary index](figures/feature-table-binary-index.png) +![feature table binary index](figures/feature-table-binary-index.png)_Indexing into the feature table binary body._ -Values can be retrieved using the number of features, `featuresLength`, the desired feature id, `featureId`, and the data type (component type and number of components) for the feature semantic. +Values can be retrieved using the number of features, `featuresLength`; the desired feature id, `featureId`; and the data type (component type and number of components) for the feature semantic. For example, using the `POSITION` semantic, which has a `float32[3]` data type: @@ -66,10 +70,10 @@ var positionArray = new Float32Array(featureTableBinary.buffer, byteOffset, feat var position = positionArray.subarray(featureId * 3, featureId * 3 + 3); // Using subarray creates a view into the array, and not a new array. ``` -## Implementation Notes +## Implementation notes In JavaScript, a `TypedArray` cannot be created on data unless it is byte-aligned to the data type. For example, a `Float32Array` must be stored in memory such that its data begins on a byte multiple of four since each `float` contains four bytes. The string generated from the JSON header should be padded with space characters in order to ensure that the binary body is byte-aligned. -The binary body should also be padded if necessary when there is data following the Feature Table. +The binary body should also be padded if necessary when there is data following the feature table. diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index c5c90716f..0a39d738d 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -6,23 +6,46 @@ * Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi) * Rob Taglang, [@lasalvavida](https://github.com/lasalvavida) +## Contents + +* [Overview](#overview) +* [Layout](#layout) +* [Header](#header) +* [Feature table](#feature-table) + * [Semantics](#semantics) + * [Instance semantics](#instance-semantics) + * [Global semantics](#global-semantics) + * [Instance orientation](#instance-orientation) + * [Oct-encoded normal vectors](#oct-encoded-normal-vectors) + * [Default orientation](#default-orientation) + * [Instance position](#instance-position) + * [Quantized positions](#quantized-positions) + * [Instance scaling](#instance-position) + * [Examples](#examples) + * [Positions only](#position-only) + * [Quantized positions and oct-encoded normals](#quantized-positions-and-oct-encoded-normals) +* [Batch table](#batch-table) +* [glTF](#gltf) +* [File extension](#file-extension) +* [MIME type](#mime-type) +* [Implementation examples](#implementation-examples) + * [Cesium](#cesium) + ## Overview -_Instanced 3D Model_ is a tile format for efficient streaming and rendering of a large number of models, called _instances_, with slight variations. In the simplest case, the same tree model, for example, may be located - or _instanced_ - in several places. Each instance references the same model, and has per-instance properties, such as position. Using the core 3D Tiles spec language, each instance is a _feature_. +_Instanced 3D model_ is a tile format for efficient streaming and rendering of a large number of models, called _instances_, with slight variations. In the simplest case, the same tree model, for example, may be located—or _instanced_—in several places. Each instance references the same model and has per-instance properties, such as position. Using the core 3D Tiles spec language, each instance is a _feature_. -In addition to trees, Instanced 3D Model is useful for exterior features such as fire hydrants, sewer caps, lamps, and traffic lights, and interior CAD features such as bolts, valves, and electric outlets. +In addition to trees, instanced 3D model is useful for exterior features such as fire hydrants, sewer caps, lamps, and traffic lights, and for interior CAD features such as bolts, valves, and electrical outlets. -A [Composite](../Composite/README.md) tile can be used to create tiles with different types of instanced models, e.g., trees and traffic lights. +A [composite](../Composite/README.md) tile can be used to create tiles with different types of instanced models, e.g., trees and traffic lights. -Instanced 3D Model maps well to the [ANGLE_instanced_arrays](https://www.khronos.org/registry/webgl/extensions/ANGLE_instanced_arrays/) extension for efficient rendering with WebGL. +Instanced 3D model maps well to the [ANGLE_instanced_arrays](https://www.khronos.org/registry/webgl/extensions/ANGLE_instanced_arrays/) extension for efficient rendering with WebGL. ## Layout A tile is composed of a header section immediately followed by a body section. -**Figure 1**: Instanced 3D Model layout (dashes indicate optional fields). - -![header layout](figures/header-layout.png) +![header layout](figures/header-layout.png)_Instanced 3D model layout (dashes indicate optional fields)._ ## Header @@ -30,41 +53,41 @@ The 32-byte header contains the following fields: | Field name | Data type | Description | | --- | --- | --- | -| `magic` | 4-byte ANSI string | `"i3dm"`. This can be used to identify the arraybuffer as an Instanced 3D Model tile. | -| `version` | `uint32` | The version of the Instanced 3D Model format. It is currently `1`. | +| `magic` | 4-byte ANSI string | `"i3dm"`. This can be used to identify the arraybuffer as an instanced 3D model tile. | +| `version` | `uint32` | The version of the instanced 3D model format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | | `featureTableJSONByteLength` | `uint32` | The length of the feature table JSON section in bytes. | | `featureTableBinaryByteLength` | `uint32` | The length of the feature table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | | `batchTableJSONByteLength` | `uint32` | The length of the batch table JSON section in bytes. Zero indicates that there is no batch table. | | `batchTableBinaryByteLength` | `uint32` | The length of the batch table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | -| `gltfFormat` | `uint32` | Indicates the format of the glTF field of the body. `0` indicates it is a url, `1` indicates it is embedded binary glTF. See the glTF section below. | +| `gltfFormat` | `uint32` | Indicates the format of the glTF field of the body. `0` indicates it is a url, `1` indicates it is embedded binary glTF. See the [glTF](#gltf) section below. | If `featureTableJSONByteLength` equals zero, or there is no `glTF`, the tile does not need to be rendered. -The body section immediately follows the header section, and is composed of three fields: `Feature Table`, `Batch Table`, and `glTF`. +The body section immediately follows the header section and is composed of three fields: `Feature Table`, `Batch Table`, and `glTF`. Code for reading the header can be found in [Instanced3DModelTileContent](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Instanced3DModel3DTileContent.js) in the Cesium implementation of 3D Tiles. -## Feature Table +## Feature table -Contains values for `i3dm` semantics used to create instanced models. -More information is available in the [Feature Table specification](../FeatureTable/README.md). +The feature table contains values for `i3dm` semantics used to create instanced models. +More information is available in the [feature table specification](../FeatureTable/README.md). -The `i3dm` Feature Table JSON Schema is defined in [i3dm.featureTable.schema.json](../../schema/i3dm.featureTable.schema.json). +The `i3dm` feature table JSON schema is defined in [i3dm.featureTable.schema.json](../../schema/i3dm.featureTable.schema.json). ### Semantics -#### Instance Semantics +#### Instance semantics These semantics map to an array of feature values that are used to create instances. The length of these arrays must be the same for all semantics and is equal to the number of instances. -The value for each instance semantic must be a reference to the Feature Table Binary Body; they cannot be embedded in the Feature Table JSON Header. +The value for each instance semantic must be a reference to the feature table binary body; they cannot be embedded in the feature table JSON header. If a semantic has a dependency on another semantic, that semantic must be defined. If both `SCALE` and `SCALE_NON_UNIFORM` are defined for an instance, both scaling operations will be applied. If both `POSITION` and `POSITION_QUANTIZED` are defined for an instance, the higher precision `POSITION` will be used. -If `NORMAL_UP`, `NORMAL_RIGHT`, `NORMAL_UP_OCT32P`, and `NORMAL_RIGHT_OCT32P` are defined for an instance, the higher precision `NORMAL_UP`, and `NORMAL_RIGHT` will be used. +If `NORMAL_UP`, `NORMAL_RIGHT`, `NORMAL_UP_OCT32P`, and `NORMAL_RIGHT_OCT32P` are defined for an instance, the higher precision `NORMAL_UP` and `NORMAL_RIGHT` will be used. | Semantic | Data Type | Description | Required | | --- | --- | --- | --- | @@ -78,7 +101,7 @@ If `NORMAL_UP`, `NORMAL_RIGHT`, `NORMAL_UP_OCT32P`, and `NORMAL_RIGHT_OCT32P` ar | `SCALE_NON_UNIFORM` | `float32[3]` | A 3-component array of numbers defining the scale to apply to the `x`, `y`, and `z` axes of the instance. | :red_circle: No. | | `BATCH_ID` | `uint8`, `unit16` (default), or `uint32` | The `batchId` of the instance that can be used to retrieve metadata from the `Batch Table`. | :red_circle: No. | -#### Global Semantics +#### Global semantics These semantics define global properties for all instances. @@ -92,59 +115,53 @@ These semantics define global properties for all instances. Examples using these semantics can be found in the [examples section](#examples). -### Instance Orientation +### Instance orientation -An instance's orientation is defined by an orthonormal basis created by an `up` and `right` vector. The orientation will be transformed by the [tile transform] (../../README.md#tile-transform). +An instance's orientation is defined by an orthonormal basis created by an `up` and `right` vector. The orientation will be transformed by the [tile transform](../../README.md#tile-transform). The `x` vector in the standard basis maps onto the `right` vector in the transformed basis, and the `y` vector maps on to the `up` vector. The `z` vector would map onto a `forward` vector, but it is omitted because it will always be the cross product of `right` and `up`. -**Figure 2**: A box in the standard basis. - -![box standard basis](figures/box-standard-basis.png) +![box standard basis](figures/box-standard-basis.png)_A box in the standard basis._ -**Figure 3**: A box transformed into a rotated basis. +![box rotated basis](figures/box-rotated-basis.png)_A box transformed into a rotated basis._ -![box rotated basis](figures/box-rotated-basis.png) - -#### Oct-encoded Normal Vectors +#### Oct-encoded normal vectors If `NORMAL_UP` and `NORMAL_RIGHT` are not defined for an instance, its orientation may be stored as oct-encoded normals in `NORMAL_UP_OCT32P` and `NORMAL_RIGHT_OCT32P`. These define `up` and `right` using the oct-encoding described in -[*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/). +[*A Survey of Efficient Representations of Independent Unit Vectors*](http://jcgt.org/published/0003/02/01/). An implementation for encoding and decoding these unit vectors can be found in Cesium's [AttributeCompression](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/AttributeCompression.js) module. -#### Default Orientation +#### Default orientation If `NORMAL_UP` and `NORMAL_RIGHT` or `NORMAL_UP_OCT32P` and `NORMAL_RIGHT_OCT32P` are not present, -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. -This is suitable for instanced models like trees whose orientation is always facing up from their position on the ellipsoid's surface. +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. +This is suitable for instanced models such as trees whose orientation is always facing up from their position on the ellipsoid's surface. -### Instance Position +### Instance position -`POSITION` defines the location for an instance before any tile transforms are applied. Positions may be defined relative-to-center for high-precision rendering [4]. `RTC_CENTER` defines the center position. +`POSITION` defines the location for an instance before any tile transforms are applied. Positions may be defined relative to center for high-precision rendering, see [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/). `RTC_CENTER` defines the center position. -#### Quantized Positions +#### Quantized positions -If `POSITION` is not defined for an instance, its position may be stored in `POSITION_QUANTIZED` which defines the instance position relative to the quantized volume. +If `POSITION` is not defined for an instance, its position may be stored in `POSITION_QUANTIZED`, which defines the instance position relative to the quantized volume. If neither `POSITION` or `POSITION_QUANTIZED` are defined, the instance will not be created. A quantized volume is defined by `offset` and `scale` to map quantized positions into model space. -**Figure 4**: A quantized volume based on `offset` and `scale`. - -![quantized volume](figures/quantized-volume.png) +![quantized volume](figures/quantized-volume.png)_A quantized volume based on `offset` and `scale`._ `offset` is stored in the global semantic `QUANTIZED_VOLUME_OFFSET`, and `scale` is stored in the global semantic `QUANTIZED_VOLUME_SCALE`. If those global semantics are not defined, `POSITION_QUANTIZED` cannot be used. -Quantized positions can be mapped to model space using the formula: +Quantized positions can be mapped to model space using the following formula: `POSITION = POSITION_QUANTIZED * QUANTIZED_VOLUME_SCALE / 65535.0 + QUANTIZED_VOLUME_OFFSET` -### Instance Scaling +### Instance scaling Scaling can be applied to instances using the `SCALE` and `SCALE_NON_UNIFORM` semantics. `SCALE` applies a uniform scale along all axes, and `SCALE_NON_UNIFORM` applies scaling to the `x`, `y`, and `z` axes independently. @@ -153,9 +170,9 @@ Scaling can be applied to instances using the `SCALE` and `SCALE_NON_UNIFORM` se These examples show how to generate JSON and binary buffers for the feature table. -#### Positions Only +#### Positions only -In this minimal example, we place 4 instances on the corners of a unit length square with the default orientation. +In this minimal example, we place four instances on the corners of a unit length square with the default orientation: ```javascript var featureTableJSON = { @@ -173,10 +190,10 @@ var featureTableBinary = new Buffer(new Float32Array([ ]).buffer); ``` -#### Quantized Positions and Oct-Encoded Normals +#### Quantized positions and oct-encoded normals -In this example, the 4 instances will be placed with an orientation `up` of `[0.0, 1.0, 0.0]` and `right` of `[1.0, 0.0, 0.0]` in oct-encoded format -and they will be placed on the corners of a quantized volume that spans from `-250.0` to `250.0` units in the `x` and `z` directions. +In this example, the four instances will be placed with an orientation `up` of `[0.0, 1.0, 0.0]` and `right` of `[1.0, 0.0, 0.0]` in oct-encoded format +and they will be placed on the corners of a quantized volume that spans from `-250.0` to `250.0` units in the `x` and `z` directions: ```javascript var featureTableJSON = { @@ -218,54 +235,42 @@ var normalRightOct32PBinary = new Buffer(new Uint16Array([ var featureTableBinary = Buffer.concat([positionQuantizedBinary, normalUpOct32PBinary, normalRightOct32PBinary]); ``` -## Batch Table - -Contains metadata organized by `batchId` that can be used for declarative styling. +## Batch table -See the [Batch Table](../BatchTable/README.md) reference for more information. +Contains metadata organized by `batchId` that can be used for declarative styling. See the [Batch Table](../BatchTable/README.md) reference for more information. ## glTF The glTF asset to be instanced is stored after the feature table and batch table. -[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Instanced 3D Model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. +[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Instanced 3D model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. -`header.gltfFormat` determines the format of the glTF field. When it is `0`, the glTF field is +`header.gltfFormat` determines the format of the glTF field -* a UTF-8 string, which contains a url to a glTF model. - -When the value of `header.gltfFormat` is `1`, the glTF field is - -* a binary blob containing binary glTF. +* When the value of `header.gltfFormat` is `0`, the glTF field is a UTF-8 string, which contains a url to a glTF model. +* When the value of `header.gltfFormat` is `1`, the glTF field is a binary blob containing binary glTF. In either case, `header.gltfByteLength` contains the length of the glTF field in bytes. -If the glTF asset is embedded, it must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. +If the glTF asset is embedded, it must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the feature table or batch table if they are present. -## File Extension +## File extension `.i3dm` The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. -## MIME Type +## MIME type _TODO, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ `application/octet-stream` -## Resources - -1. [*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/) -2. [*Mesh Geometry Compression for Mobile Graphics* by Jongseok Lee et al.](http://cg.postech.ac.kr/research/mesh_comp_mobile/mesh_comp_mobile_conference.pdf) -3. Cesium [AttributeCompression](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/AttributeCompression.js) module for oct-encoding -4. [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/) - -## Implementation Examples +## Implementation examples ### Cesium -#### Generating up and right from longitude, latitude, and height +Generating up and right from longitude, latitude, and height: ```javascript var position = Cartesian3.fromRadians(longitude, latitude, height); @@ -294,7 +299,8 @@ Cartesian3.cross(up, forward, right); Cartesian3.normalize(right, right); ``` -#### Construct a model-matrix for an instance +Construct a model-matrix for an instance: + ```javascript // Cross right and up to get forward var forward = new Cartesian3(); diff --git a/TileFormats/OpenStreetMap/README.md b/TileFormats/OpenStreetMap/README.md index 3261f793f..073a850d3 100644 --- a/TileFormats/OpenStreetMap/README.md +++ b/TileFormats/OpenStreetMap/README.md @@ -4,4 +4,4 @@ **Use cases**: OSM buildings -The [Cesium OSM NYC demo](http://cesiumjs.org/NewYork) uses `Batched 3D Model` tiles. It _could_ be a net win to use a more concise tile representation based on OSM constructs (for example, their [roofs](http://wiki.openstreetmap.org/wiki/Simple_3D_Buildings#Roof)) and then quickly generate batched geometry at runtime, in a web worker if needed. The OSM constructs may not map well - or efficiently - to Cesium geometries, in which case, we could convert them to something Cesium-friendly and use that as the tile format. This may be the `Vector Data` format, but we want to avoid creating a Kitchen sink. \ No newline at end of file +The [Cesium OSM NYC demo](http://cesiumjs.org/NewYork) uses `Batched 3D Model` tiles. It _could_ be a net win to use a more concise tile representation based on OSM constructs (for example, their [roofs](http://wiki.openstreetmap.org/wiki/Simple_3D_Buildings#Roof)) and then quickly generate batched geometry at runtime, in a web worker if needed. The OSM constructs may not map well—or efficiently—to Cesium geometries, in which case, we could convert them to something Cesium-friendly and use that as the tile format. This may be the `Vector Data` format, but we want to avoid creating a kitchen sink. \ No newline at end of file diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 3cdd90e3c..0097317c7 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -7,9 +7,34 @@ * Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi) * Dan Bagnell, [@bagnell](https://github.com/bagnell) +## Contents + +* [Overview](#overview) +* [Layout](#layout) +* [Header](#header) +* [Feature table](#feature-table) + * [Semantics](#semantics) + * [Point semantics](#point-semantics) + * [Global semantics](#global-semantics) + * [Point positions](#point-positions) + * [Quantized positions](#quantized-positions) + * [Point colors](#point-colors) + * [Point normals](#point-normals) + * [Oct-encoded normal vectors](#oct-encoded-normal-vectors) + * [Batched points](#batched-points) + * [Examples](#examples) + * [Positions only](#position-only) + * [Positions and colors](#positions-and-colors) + * [Quantized positions and oct-encoded normals](#quantized-positions-and-oct-encoded-normals) + * [Batched points](#batched-points) + * [Per-point properties](#per-point-properties) +* [Batch table](#batch-table) +* [File extension](#file-extension) +* [MIME type](#mime-type) + ## Overview -The _Point Cloud_ tile format enables efficient streaming of massive point clouds for 3D visualization. Each point is defined by a position and optional properties used to define its appearance, such as color and normal, and optional properties that define application-specific metadata. +The _point cloud_ tile format enables efficient streaming of massive point clouds for 3D visualization. Each point is defined by a position and by optional properties used to define its appearance, such as color and normal, as well as optional properties that define application-specific metadata. Using 3D Tiles terminology, each point is a _feature_. @@ -17,9 +42,7 @@ Using 3D Tiles terminology, each point is a _feature_. A tile is composed of a header section immediately followed by a body section. -**Figure 1**: Point Cloud layout (dashes indicate optional fields). - -![](figures/layout.png) +![](figures/layout.png)_Point cloud layout (dashes indicate optional fields)._ ## Header @@ -27,8 +50,8 @@ The 28-byte header contains the following fields: | Field name | Data type | Description | | --- | --- | --- | -| `magic` | 4-byte ANSI string | `"pnts"`. This can be used to identify the arraybuffer as a Point Cloud tile. | -| `version` | `uint32` | The version of the Point Cloud format. It is currently `1`. | +| `magic` | 4-byte ANSI string | `"pnts"`. This can be used to identify the arraybuffer as a point cloud tile. | +| `version` | `uint32` | The version of the point cloud format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | | `featureTableJSONByteLength` | `uint32` | The length of the feature table JSON section in bytes. | | `featureTableBinaryByteLength` | `uint32` | The length of the feature table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | @@ -41,19 +64,19 @@ The body section immediately follows the header section, and is composed of a `F Code for reading the header can be found in [PointCloud3DModelTileContent.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/PointCloud3DTileContent.js) in the Cesium implementation of 3D Tiles. -## Feature Table +## Feature table Contains per-tile and per-point values that define where and how to render points. -More information is available in the [Feature Table specification](../FeatureTable/README.md). +More information is available in the [Feature table specification](../FeatureTable/README.md). -The `pnts` Feature Table JSON Schema is defined in [pnts.featureTable.schema.json](../../schema/pnts.featureTable.schema.json). +The `pnts` feature table JSON schema is defined in [pnts.featureTable.schema.json](../../schema/pnts.featureTable.schema.json). ### Semantics -#### Point Semantics +#### Point semantics -These semantics map to an array of feature values that are define each point. The length of these arrays must be the same for all semantics and is equal to the number of points. -The value for each point semantic must be a reference to the Feature Table Binary Body; they cannot be embedded in the Feature Table JSON Header. +These semantics map to an array of feature values that define each point. The length of these arrays must be the same for all semantics and is equal to the number of points. +The value for each point semantic must be a reference to the feature table binary body; they cannot be embedded in the feature table JSON header. If a semantic has a dependency on another semantic, that semantic must be defined. If both `POSITION` and `POSITION_QUANTIZED` are defined for a point, the higher precision `POSITION` will be used. @@ -67,10 +90,10 @@ If both `NORMAL` and `NORMAL_OCT16P` are defined for a point, the higher precisi | `RGB` | `uint8[3]` | A 3-component array of values containing the `RGB` color of the point. | :red_circle: No. | | `RGB565` | `uint16` | A lossy compressed color format that packs the `RGB` color into 16 bits, providing 5 bits for red, 6 bits for green, and 5 bits for blue. | :red_circle: No. | | `NORMAL` | `float32[3]`| A unit vector defining the normal of the point. | :red_circle: No. | -| `NORMAL_OCT16P` | `uint8[2]` | An oct-encoded unit vector with 16-bits of precision defining the normal of the point. | :red_circle: No. | +| `NORMAL_OCT16P` | `uint8[2]` | An oct-encoded unit vector with 16 bits of precision defining the normal of the point. | :red_circle: No. | | `BATCH_ID` | `uint8`, `unit16` (default), or `uint32` | The `batchId` of the point that can be used to retrieve metadata from the `Batch Table`. | :red_circle: No. | -#### Global Semantics +#### Global semantics These semantics define global properties for all points. @@ -85,29 +108,27 @@ These semantics define global properties for all points. Examples using these semantics can be found in the [examples section](#examples) below. -### Point Positions +### Point positions -`POSITION` defines the position for a point before any tileset transforms are applied. Positions may be defined relative-to-center for high-precision rendering [4]. `RTC_CENTER` defines the center position. +`POSITION` defines the position for a point before any tileset transforms are applied. Positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/). `RTC_CENTER` defines the center position. -#### Quantized Positions +#### Quantized positions -If `POSITION` is not defined, positions may be stored in `POSITION_QUANTIZED` which defines point positions relative to the quantized volume. -If neither `POSITION` or `POSITION_QUANTIZED` are defined, the tile does not need to be rendered. +If `POSITION` is not defined, positions may be stored in `POSITION_QUANTIZED`, which defines point positions relative to the quantized volume. +If neither `POSITION` nor `POSITION_QUANTIZED` is defined, the tile does not need to be rendered. A quantized volume is defined by `offset` and `scale` to map quantized positions into model space. -**Figure 2**: A quantized volume based on `offset` and `scale`. - -![quantized volume](figures/quantized-volume.png) +![quantized volume](figures/quantized-volume.png)_A quantized volume based on `offset` and `scale`._ `offset` is stored in the global semantic `QUANTIZED_VOLUME_OFFSET`, and `scale` is stored in the global semantic `QUANTIZED_VOLUME_SCALE`. If those global semantics are not defined, `POSITION_QUANTIZED` cannot be used. -Quantized positions can be mapped to model space using the formula: +Quantized positions can be mapped to model space using the following formula: `POSITION = POSITION_QUANTIZED * QUANTIZED_VOLUME_SCALE / 65535.0 + QUANTIZED_VOLUME_OFFSET` -### Point Colors +### Point colors If more than one color semantic is defined, the precedence order is `RGBA`, `RGB`, `RGB565`, then `CONSTANT_RGBA`. For example, if a tile's feature table contains both `RGBA` and `CONSTANT_RGBA` properties, the runtime would render with per-point colors using `RGBA`. @@ -115,17 +136,17 @@ If no color semantics are defined, the runtime is free to color points using an In any case, [3D Tiles Styling](../../Styling/README.md) may be used to change the final rendered color and other visual properties at runtime. -### Point Normals +### Point normals Per-point normals are an optional property that can help improve the visual quality of points by enabling lighting, hidden surface removal, and other rendering techniques. The normals will be transformed using the inverse transpose of the tileset transform. -#### Oct-encoded Normal Vectors -Oct-encoding is described in [*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/). An implementation for encoding and decoding these unit vectors can be found in Cesium's +#### Oct-encoded normal vectors +Oct-encoding is described in [*A Survey of Efficient Representations of Independent Unit Vectors*](http://jcgt.org/published/0003/02/01/). An implementation for encoding and decoding these unit vectors can be found in Cesium's [AttributeCompression](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/AttributeCompression.js) module. -### Batched Points +### Batched points Points that make up distinct features of the point cloud may be batched together using the `BATCH_ID` semantic. For example, the points that make up a door in a house would all be assigned the same `BATCH_ID`, whereas points that make up a window would be assigned a different `BATCH_ID`. This is useful for per-object picking and storing application-specific metadata for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request on a per-object instead of per-point basis. @@ -137,9 +158,9 @@ The global semantic `BATCH_LENGTH` defines the number of unique `batchId` values These examples show how to generate JSON and binary buffers for the feature table. -#### Positions Only +#### Positions only -This minimal example has four points on the corners of a unit length square. +This minimal example has four points on the corners of a unit length square: ```javascript var featureTableJSON = { @@ -157,9 +178,9 @@ var featureTableBinary = new Buffer(new Float32Array([ ]).buffer); ``` -#### Positions and Colors +#### Positions and colors -The following example has four points (red, green, blue, and yellow) above the globe. Their positions are defined relative-to-center. +The following example has four points (red, green, blue, and yellow) above the globe. Their positions are defined relative to center: ```javascript var featureTableJSON = { @@ -189,9 +210,9 @@ var colorBinary = new Buffer(new Uint8Array([ var featureTableBinary = Buffer.concat([positionBinary, colorBinary]); ``` -#### Quantized Positions and Oct-Encoded Normals +#### Quantized positions and oct-encoded normals -In this example, the 4 points will have normals pointing up `[0.0, 1.0, 0.0]` in oct-encoded format and they will be placed on the corners of a quantized volume that spans from `-250.0` to `250.0` units in the `x` and `z` directions. +In this example, the four points will have normals pointing up `[0.0, 1.0, 0.0]` in oct-encoded format, and they will be placed on the corners of a quantized volume that spans from `-250.0` to `250.0` units in the `x` and `z` directions: ```javascript var featureTableJSON = { @@ -223,9 +244,9 @@ var normalOct16PBinary = new Buffer(new Uint8Array([ var featureTableBinary = Buffer.concat([positionQuantizedBinary, normalOct16PBinary]); ``` -#### Batched Points +#### Batched points -In this example, the first two points have a `batchId` of 0, and the next two points have a `batchId` of 1. Note that the batch table only has two names. +In this example, the first two points have a `batchId` of 0, and the next two points have a `batchId` of 1. Note that the batch table only has two names: ```javascript var featureTableJSON = { @@ -285,30 +306,23 @@ var batchTableJSON = { }; ``` -## Batch Table +## Batch table -The _Batch Table_ contains application-specific metadata, indexable by `batchId`, that can be used for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. +The _batch table_ contains application-specific metadata, indexable by `batchId`, that can be used for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. -If the `BATCH_ID` semantic is defined, the Batch Table stores metadata for each `batchId`, and the length of the Batch Table arrays will equal `BATCH_LENGTH`. -If the `BATCH_ID` semantic is not defined, then the batch table stores per-point metadata, and the length of the Batch Table arrays will equal `POINTS_LENGTH`. +* If the `BATCH_ID` semantic is defined, the batch table stores metadata for each `batchId`, and the length of the batch table arrays will equal `BATCH_LENGTH`. +* If the `BATCH_ID` semantic is not defined, then the batch table stores per-point metadata, and the length of the batch table arrays will equal `POINTS_LENGTH`. See the [Batch Table](../BatchTable/README.md) reference for more information. -## File Extension +## File extension `.pnts` The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. -## MIME Type +## MIME type _TODO, [#60](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/60)_ `application/octet-stream` - -## Resources - -1. [*A Survey of Efficient Representations of Independent Unit Vectors* by Cigolle et al.](http://jcgt.org/published/0003/02/01/) -2. [*Mesh Geometry Compression for Mobile Graphics* by Jongseok Lee et al.](http://cg.postech.ac.kr/research/mesh_comp_mobile/mesh_comp_mobile_conference.pdf) -3. Cesium [AttributeCompression](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/AttributeCompression.js) module for oct-encoding -4. [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/) diff --git a/schema/pnts.featureTable.schema.json b/schema/pnts.featureTable.schema.json index e466394b6..988507a2e 100644 --- a/schema/pnts.featureTable.schema.json +++ b/schema/pnts.featureTable.schema.json @@ -3,7 +3,7 @@ "id" : "pnts.featureTable.schema.json", "title" : "Point Cloud Feature Table", "type" : "object", - "description" : "A set of Point Cloud semantics that contains values defining the position and appearance properties for points in a tile.", + "description" : "A set of point cloud semantics that contains values defining the position and appearance properties for points in a tile.", "allOf" : [{ "$ref" : "featureTable.schema.json" }, { diff --git a/schema/tile.schema.json b/schema/tile.schema.json index 77999da23..68dc676fd 100644 --- a/schema/tile.schema.json +++ b/schema/tile.schema.json @@ -10,12 +10,12 @@ "$ref" : "boundingVolume.schema.json" }, "viewerRequestVolume" : { - "description" : "Optional bounding volume that defines the volume that the viewer must be inside of before the tile's content will be requested and before the tile will be refined based on geometricError.", + "description" : "Optional bounding volume that defines the volume the viewer must be inside of before the tile's content will be requested and before the tile will be refined based on geometricError.", "$ref" : "boundingVolume.schema.json" }, "geometricError" : { "type" : "number", - "description" : "The error, in meters, introduced if this tile is rendered and its children are not. At runtime, the geometric error is used to compute Screen-Space Error (SSE), i.e., the error measured in pixels.", + "description" : "The error, in meters, introduced if this tile is rendered and its children are not. At runtime, the geometric error is used to compute screen space error (SSE), i.e., the error measured in pixels.", "minimum" : 0 }, "refine" : { @@ -25,7 +25,7 @@ }, "transform" : { "type" : "array", - "description" : "A floating-point 4x4 affine transformation matrix, stored in column-major order, that transforms the tile's content, i.e., its features and content.boundingVolume, and boundingVolume and viewerRequestVolume from the tile's local coordinate system to the parent tile's coordinate system, or tileset's coordinate system in the case of the root tile. transform does not apply to geometricError nor does it apply any volume property when the volume is a region, which is defined in WGS84 / EPSG:4326 coordinates.", + "description" : "A floating-point 4x4 affine transformation matrix, stored in column-major order, that transforms the tile's content--i.e., its features as well as content.boundingVolume, boundingVolume, and viewerRequestVolume--from the tile's local coordinate system to the parent tile's coordinate system, or, in the case of a root tile, from the tile's local coordinate system to the tileset's coordinate system. transform does not apply to geometricError, nor does it apply any volume property when the volume is a region that is defined in WGS84 / EPSG:4326 coordinates.", "items" : { "type": "number" }, diff --git a/schema/tileset.schema.json b/schema/tileset.schema.json index 2737a6bc8..fae41c764 100644 --- a/schema/tileset.schema.json +++ b/schema/tileset.schema.json @@ -18,7 +18,7 @@ }, "geometricError" : { "type" : "number", - "description" : "The error, in meters, introduced if this tileset is not rendered. At runtime, the geometric error is used to compute Screen-Space Error (SSE), i.e., the error measured in pixels.", + "description" : "The error, in meters, introduced if this tileset is not rendered. At runtime, the geometric error is used to compute screen space error (SSE), i.e., the error measured in pixels.", "minimum" : 0 }, "root" : { From 7c9d4948f7782d660d936378f4bf4216b829952f Mon Sep 17 00:00:00 2001 From: Sarah Chow Date: Sat, 21 Apr 2018 13:40:18 -0700 Subject: [PATCH 06/37] figures --- TileFormats/BatchTable/README.md | 16 ++++++++++------ TileFormats/Batched3DModel/README.md | 4 ++-- TileFormats/Composite/README.md | 4 +++- TileFormats/FeatureTable/README.md | 8 ++++---- TileFormats/Instanced3DModel/README.md | 18 ++++++++++-------- TileFormats/PointCloud/README.md | 12 ++++++------ 6 files changed, 35 insertions(+), 27 deletions(-) diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 40d8a651d..9cc3ff672 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -36,9 +36,9 @@ A batch table is used by the following tile formats: ## Layout -A batch table is composed of two parts: a JSON header and an optional binary body. The JSON describes the properties, whose values either can be defined directly in the JSON as an array, or can refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. +A batch table is composed of two parts: a JSON header and an optional binary body. The JSON describes the properties, whose values either can be defined directly in the JSON as an array, or can refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the batch table layout: -![batch table layout](figures/batch-table-layout.png)_Batch table layout._ +![batch table layout](figures/batch-table-layout.png) When a tile format includes a batch table, the batch table immediately follows the tile's feature table if it exists. Otherwise, the batch table immediately follows the tile's header. The header will also contain `batchTableJSONByteLength` and `batchTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the batch table. @@ -89,9 +89,9 @@ JSON schema batch table definitions can be found in [batchTable.schema.json](../ ### Binary body -When the JSON header includes a reference to the binary section, the provided `byteOffset` is used to index into the data. +When the JSON header includes a reference to the binary section, the provided `byteOffset` is used to index into the data, as shown in the following figure: -![batch table binary index](figures/batch-table-binary-index.png)_Indexing into the batch table binary body._ +![batch table binary index](figures/batch-table-binary-index.png) Values can be retrieved using the number of features, `batchLength`; the desired batch id, `batchId`; and the `componentType` and `type` defined in the JSON header. @@ -383,7 +383,9 @@ carType : "sedan" carColor : "red" ``` -![batch table hierarchy parking lot](figures/batch-table-hierarchy-parking-lot.png)_Batch table hierarchy: parking lot._ +Batch table hierarchy, parking lot: + +![batch table hierarchy parking lot](figures/batch-table-hierarchy-parking-lot.png) #### Feature hierarchy @@ -465,7 +467,9 @@ block_district : ["central"] Since the block's `parentId` is also 9, it does not have a parent and the traversal is complete. -![batch table hierarchy block](figures/batch-table-hierarchy-block.png)_Batch table hierarchy: block._ +Batch table hierarchy, block: + +![batch table hierarchy block](figures/batch-table-hierarchy-block.png) ### Styling diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 717512c0c..9fa0edca0 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -30,9 +30,9 @@ Batched 3D model, or just the _batch_, is a binary blob in little endian accesse ## Layout -A tile is composed of two sections: a header immediately followed by a body. +A tile is composed of two sections: a header immediately followed by a body. The following figures shows the batched 3D model layout (dashes indicate optional fields). -![](figures/layout.png)_Batched 3D model layout (dashes indicate optional fields)._ +![](figures/layout.png) ## Header diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index 08d7a5ba5..87ea13e55 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -28,7 +28,9 @@ A composite is a binary blob in little endian accessed in JavaScript as an `Arra ## Layout -![](figures/layout.png)_Composite layout (dashes indicate optional fields)._ +Composite layout (dashes indicate optional fields): + +![](figures/layout.png) ## Header diff --git a/TileFormats/FeatureTable/README.md b/TileFormats/FeatureTable/README.md index d219d9b8d..9119644ba 100644 --- a/TileFormats/FeatureTable/README.md +++ b/TileFormats/FeatureTable/README.md @@ -29,9 +29,9 @@ Per-feature properties are defined using tile format-specific semantics defined ## Layout -A feature table is composed of two parts: a JSON header and an optional binary body. The JSON property names are tile format-specific semantics, and their values can either be defined directly in the JSON, or refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. +A feature table is composed of two parts: a JSON header and an optional binary body. The JSON property names are tile format-specific semantics, and their values can either be defined directly in the JSON, or refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the feature table layout: -![feature table layout](figures/feature-table-layout.png)_Feature table layout._ +![feature table layout](figures/feature-table-layout.png) When a tile format includes a feature table, the feature table immediately follows the tile's header. The header will also contain `featureTableJSONByteLength` and `featureTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the feature table. @@ -55,9 +55,9 @@ JSON schema feature table definitions can be found in [featureTable.schema.json] ### Binary body -When the JSON header includes a reference to the binary, the provided `byteOffset` is used to index into the data. +When the JSON header includes a reference to the binary, the provided `byteOffset` is used to index into the data. The following figure shows indexing into the feature table binary body: -![feature table binary index](figures/feature-table-binary-index.png)_Indexing into the feature table binary body._ +![feature table binary index](figures/feature-table-binary-index.png) Values can be retrieved using the number of features, `featuresLength`; the desired feature id, `featureId`; and the data type (component type and number of components) for the feature semantic. diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 0a39d738d..02adc51ae 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -20,9 +20,9 @@ * [Default orientation](#default-orientation) * [Instance position](#instance-position) * [Quantized positions](#quantized-positions) - * [Instance scaling](#instance-position) + * [Instance scaling](#instance-scaling) * [Examples](#examples) - * [Positions only](#position-only) + * [Positions only](#positions-only) * [Quantized positions and oct-encoded normals](#quantized-positions-and-oct-encoded-normals) * [Batch table](#batch-table) * [glTF](#gltf) @@ -43,9 +43,9 @@ Instanced 3D model maps well to the [ANGLE_instanced_arrays](https://www.khronos ## Layout -A tile is composed of a header section immediately followed by a body section. +A tile is composed of a header section immediately followed by a body section. The following figure shows the instanced 3D model layout (dashes indicate optional fields): -![header layout](figures/header-layout.png)_Instanced 3D model layout (dashes indicate optional fields)._ +![header layout](figures/header-layout.png) ## Header @@ -122,9 +122,11 @@ An instance's orientation is defined by an orthonormal basis created by an `up` The `x` vector in the standard basis maps onto the `right` vector in the transformed basis, and the `y` vector maps on to the `up` vector. The `z` vector would map onto a `forward` vector, but it is omitted because it will always be the cross product of `right` and `up`. -![box standard basis](figures/box-standard-basis.png)_A box in the standard basis._ +A box in the standard basis: +![box standard basis](figures/box-standard-basis.png) -![box rotated basis](figures/box-rotated-basis.png)_A box transformed into a rotated basis._ +A box transformed into a rotated basis +![box rotated basis](figures/box-rotated-basis.png) #### Oct-encoded normal vectors @@ -150,9 +152,9 @@ This is suitable for instanced models such as trees whose orientation is always If `POSITION` is not defined for an instance, its position may be stored in `POSITION_QUANTIZED`, which defines the instance position relative to the quantized volume. If neither `POSITION` or `POSITION_QUANTIZED` are defined, the instance will not be created. -A quantized volume is defined by `offset` and `scale` to map quantized positions into model space. +A quantized volume is defined by `offset` and `scale` to map quantized positions into model space, as shown in the following figure: -![quantized volume](figures/quantized-volume.png)_A quantized volume based on `offset` and `scale`._ +![quantized volume](figures/quantized-volume.png) `offset` is stored in the global semantic `QUANTIZED_VOLUME_OFFSET`, and `scale` is stored in the global semantic `QUANTIZED_VOLUME_SCALE`. If those global semantics are not defined, `POSITION_QUANTIZED` cannot be used. diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 0097317c7..9523e4d5e 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -23,7 +23,7 @@ * [Oct-encoded normal vectors](#oct-encoded-normal-vectors) * [Batched points](#batched-points) * [Examples](#examples) - * [Positions only](#position-only) + * [Positions only](#positions-only) * [Positions and colors](#positions-and-colors) * [Quantized positions and oct-encoded normals](#quantized-positions-and-oct-encoded-normals) * [Batched points](#batched-points) @@ -40,9 +40,9 @@ Using 3D Tiles terminology, each point is a _feature_. ## Layout -A tile is composed of a header section immediately followed by a body section. +A tile is composed of a header section immediately followed by a body section. The following figure shows the point cloud layout (dashes indicate optional fields). -![](figures/layout.png)_Point cloud layout (dashes indicate optional fields)._ +![](figures/layout.png) ## Header @@ -67,7 +67,7 @@ Code for reading the header can be found in [PointCloud3DModelTileContent.js](ht ## Feature table Contains per-tile and per-point values that define where and how to render points. -More information is available in the [Feature table specification](../FeatureTable/README.md). +More information is available in the [feature table specification](../FeatureTable/README.md). The `pnts` feature table JSON schema is defined in [pnts.featureTable.schema.json](../../schema/pnts.featureTable.schema.json). @@ -117,9 +117,9 @@ Examples using these semantics can be found in the [examples section](#examples) If `POSITION` is not defined, positions may be stored in `POSITION_QUANTIZED`, which defines point positions relative to the quantized volume. If neither `POSITION` nor `POSITION_QUANTIZED` is defined, the tile does not need to be rendered. -A quantized volume is defined by `offset` and `scale` to map quantized positions into model space. +A quantized volume is defined by `offset` and `scale` to map quantized positions into model space. The following figure shows a quantized volume based on `offset` and `scale`: -![quantized volume](figures/quantized-volume.png)_A quantized volume based on `offset` and `scale`._ +![quantized volume](figures/quantized-volume.png) `offset` is stored in the global semantic `QUANTIZED_VOLUME_OFFSET`, and `scale` is stored in the global semantic `QUANTIZED_VOLUME_SCALE`. If those global semantics are not defined, `POSITION_QUANTIZED` cannot be used. From 90b53dd985e98bf1f05b4f8be329eed6d4d8264f Mon Sep 17 00:00:00 2001 From: Sarah Chow Date: Sat, 21 Apr 2018 13:46:36 -0700 Subject: [PATCH 07/37] copyedit --- README.md | 3 +-- TileFormats/Batched3DModel/README.md | 2 +- TileFormats/PointCloud/README.md | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 41d275dd4..220851e1f 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,7 @@ Editor: Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi), [pcozzi@agi.com] [Peaxy](https://peaxy.net/) | ![](figures/users/pointcloudconverter.jpg) [Prototype Point Cloud Converter](https://github.com/mattshax/cesium_pnt_generator) | ![](figures/users/virtualgis.jpg) [VirtualGIS](https://www.virtualgis.io/) | ![](figures/users/grandlyon.jpg) [LOPoCS ](https://github.com/Oslandia/lopocs) and [py3dtiles](https://github.com/Oslandia/py3dtiles) ![](figures/users/itowns.jpg) [iTowns 2](https://github.com/iTowns/itowns) | ![](figures/users/osm-cesium-3d-tiles.jpg) [osm-cesium-3d-tiles](https://github.com/kiselev-dv/osm-cesium-3d-tiles) | -![](figures/users/geopipe.jpg) [geopipe](https://geopi.pe/) | -![](figures/users/poulain.jpg) [3D Digital Territory Lab](https://cesiumjs.org/demos/grandlyon/) | +![](figures/users/geopipe.jpg) [geopipe](https://geopi.pe/) | ![](figures/users/poulain.jpg) [3D Digital Territory Lab](https://cesiumjs.org/demos/grandlyon/) | ## Live apps diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 9fa0edca0..fb8dcea67 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -30,7 +30,7 @@ Batched 3D model, or just the _batch_, is a binary blob in little endian accesse ## Layout -A tile is composed of two sections: a header immediately followed by a body. The following figures shows the batched 3D model layout (dashes indicate optional fields). +A tile is composed of two sections: a header immediately followed by a body. The following figure shows the batched 3D model layout (dashes indicate optional fields): ![](figures/layout.png) diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 9523e4d5e..3852afbf7 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -40,7 +40,7 @@ Using 3D Tiles terminology, each point is a _feature_. ## Layout -A tile is composed of a header section immediately followed by a body section. The following figure shows the point cloud layout (dashes indicate optional fields). +A tile is composed of a header section immediately followed by a body section. The following figure shows the point cloud layout (dashes indicate optional fields): ![](figures/layout.png) From 86d05aee384de9d24bde3508d2db9dfb30fe3434 Mon Sep 17 00:00:00 2001 From: Sarah Chow Date: Mon, 23 Apr 2018 14:11:39 -0700 Subject: [PATCH 08/37] RegExp --- Styling/README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Styling/README.md b/Styling/README.md index 0bba29c2e..a35030b10 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -81,7 +81,7 @@ Instead of showing all features, `show` can be an expression dependent on a feat `show` can also be used for more complex queries; for example, here a compound condition and regular expression are used to show only features whose county starts with `'Chest'` and whose year built is greater than or equal to 1970: ```json { - "show" : "(regExp('^Chest').test(${County})) && (${YearBuilt} >= 1970)" + "show" : "(RegExp('^Chest').test(${County})) && (${YearBuilt} >= 1970)" } ``` @@ -258,7 +258,7 @@ Example expressions for different types include the following: * `vec3(1.0, 2.0, 3.0)` * `vec4(1.0, 2.0, 3.0, 4.0)` * `color('#00FFFF')` -* `regExp('^Chest'))` +* `RegExp('^Chest'))` #### Number @@ -368,10 +368,10 @@ For example: #### RegExp Regular expressions are created with the following functions, which behave like the JavaScript [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) constructor: -* `regExp() : RegExp` -* `regExp(pattern : String, [flags : String]) : RegExp` +* `RegExp() : RegExp` +* `RegExp(pattern : String, [flags : String]) : RegExp` -Calling `regExp()` with no arguments is the same as calling `regExp('(?:)')`. +Calling `RegExp()` with no arguments is the same as calling `RegExp('(?:)')`. If specified, `flags` can have any combination of the following values: @@ -393,9 +393,9 @@ For example: ``` ``` -regExp('a').test('abc') === true -regExp('a(.)', 'i').exec('Abc') === 'b' -regExp('Building\s(\d)').exec(${Name}) === '1' +RegExp('a').test('abc') === true +RegExp('a(.)', 'i').exec('Abc') === 'b' +RegExp('Building\s(\d)').exec(${Name}) === '1' ``` Regular expressions have a `toString` function for explicit (and implicit) conversion to strings in the format `'pattern'`: @@ -407,11 +407,11 @@ The operators `=~` and `!~` are overloaded for regular expressions. The `=~` ope For example, the following expressions all evaluate to true: ``` -regExp('a') =~ 'abc' -'abc' =~ regExp('a') +RegExp('a') =~ 'abc' +'abc' =~ RegExp('a') -regExp('a') !~ 'bcd' -'bcd' !~ regExp('a') +RegExp('a') !~ 'bcd' +'bcd' !~ RegExp('a') ``` ### Operator rules @@ -439,7 +439,7 @@ regExp('a') !~ 'bcd' * Number expressions * Vector expressions of the same type * Binary equality operators `===` and `!==` operate on any expressions. The operation returns `false` if the expression types do not match. -* Binary `regexp` operators `=~` and `!~` require one argument to be a string expression and the other to be a `RegExp` expression. +* Binary `RegExp` operators `=~` and `!~` require one argument to be a string expression and the other to be a `RegExp` expression. * Ternary operator `? :` conditional argument must be a boolean expression. ### Type conversions @@ -1252,7 +1252,7 @@ For example, the following style will color all doorknobs yellow, all doors gree ```json { "defines" : { - "suffix" : "regExp('door(.*)').exec(getExactClassName())" + "suffix" : "RegExp('door(.*)').exec(getExactClassName())" }, "color" : { "conditions" : [ From d68fb034ddea48af5b5cc025a2312a1603ada631 Mon Sep 17 00:00:00 2001 From: Sarah Chow Date: Mon, 23 Apr 2018 14:18:39 -0700 Subject: [PATCH 09/37] Response to Gabby's comments --- README.md | 2 +- Styling/schema/style.colorExpression.schema.json | 2 +- schema/tile.schema.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 220851e1f..68c7c0f27 100644 --- a/README.md +++ b/README.md @@ -438,7 +438,7 @@ When a tile points to an external tileset, the tile * `root.boundingVolume === tile.content.boundingVolume` (or `root.boundingVolume === tile.boundingVolume` when `tile.content.boundingVolume` is `undefined`). * `root.viewerRequestVolume === tile.viewerRequestVolume` or `root.viewerRequestVolume` is `undefined`. * Cannot be used to create cycles, for example, by pointing to the same tileset.json containing the tile or by pointing to another tileset.json that then points back to the tileset.json containing the tile. -* Will by transformed by both the tile's `transform` and root tile's `transform`. For example, in the following tileset referencing an external tileset, the computed transform for `T3` is `[T0][T1][T2][T3]`. +* Will be transformed by both the tile's `transform` and root tile's `transform`. For example, in the following tileset referencing an external tileset, the computed transform for `T3` is `[T0][T1][T2][T3]`. ![](figures/tileTransformExternalTileset.png) diff --git a/Styling/schema/style.colorExpression.schema.json b/Styling/schema/style.colorExpression.schema.json index 63c225e6e..4c3ad2084 100644 --- a/Styling/schema/style.colorExpression.schema.json +++ b/Styling/schema/style.colorExpression.schema.json @@ -3,5 +3,5 @@ "id" : "style.colorExpression.schema.json", "title" : "color expression", "type" : "string", - "description" : "3D Tiles style expression that evaluates to a color." + "description" : "3D Tiles style expression that evaluates to a Color." } diff --git a/schema/tile.schema.json b/schema/tile.schema.json index 68dc676fd..384fa8abe 100644 --- a/schema/tile.schema.json +++ b/schema/tile.schema.json @@ -25,7 +25,7 @@ }, "transform" : { "type" : "array", - "description" : "A floating-point 4x4 affine transformation matrix, stored in column-major order, that transforms the tile's content--i.e., its features as well as content.boundingVolume, boundingVolume, and viewerRequestVolume--from the tile's local coordinate system to the parent tile's coordinate system, or, in the case of a root tile, from the tile's local coordinate system to the tileset's coordinate system. transform does not apply to geometricError, nor does it apply any volume property when the volume is a region that is defined in WGS84 / EPSG:4326 coordinates.", + "description" : "A floating-point 4x4 affine transformation matrix, stored in column-major order, that transforms the tile's content--i.e., its features as well as content.boundingVolume, boundingVolume, and viewerRequestVolume--from the tile's local coordinate system to the parent tile's coordinate system, or, in the case of a root tile, from the tile's local coordinate system to the tileset's coordinate system. transform does not apply to geometricError, nor does it apply any volume property when the volume is a region, defined in WGS84 / EPSG:4326 coordinates.", "items" : { "type": "number" }, From 77c87f81163bda5c4ec06111387b92261e08f907 Mon Sep 17 00:00:00 2001 From: Gabby Getz Date: Mon, 23 Apr 2018 17:47:29 -0400 Subject: [PATCH 10/37] regExp() --- Styling/README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Styling/README.md b/Styling/README.md index a35030b10..3defc8d96 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -81,7 +81,7 @@ Instead of showing all features, `show` can be an expression dependent on a feat `show` can also be used for more complex queries; for example, here a compound condition and regular expression are used to show only features whose county starts with `'Chest'` and whose year built is greater than or equal to 1970: ```json { - "show" : "(RegExp('^Chest').test(${County})) && (${YearBuilt} >= 1970)" + "show" : "(regExp('^Chest').test(${County})) && (${YearBuilt} >= 1970)" } ``` @@ -258,7 +258,7 @@ Example expressions for different types include the following: * `vec3(1.0, 2.0, 3.0)` * `vec4(1.0, 2.0, 3.0, 4.0)` * `color('#00FFFF')` -* `RegExp('^Chest'))` +* `regExp('^Chest'))` #### Number @@ -368,10 +368,10 @@ For example: #### RegExp Regular expressions are created with the following functions, which behave like the JavaScript [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) constructor: -* `RegExp() : RegExp` -* `RegExp(pattern : String, [flags : String]) : RegExp` +* `regExp() : RegExp` +* `regExp(pattern : String, [flags : String]) : RegExp` -Calling `RegExp()` with no arguments is the same as calling `RegExp('(?:)')`. +Calling `regExp()` with no arguments is the same as calling `regExp('(?:)')`. If specified, `flags` can have any combination of the following values: @@ -393,9 +393,9 @@ For example: ``` ``` -RegExp('a').test('abc') === true -RegExp('a(.)', 'i').exec('Abc') === 'b' -RegExp('Building\s(\d)').exec(${Name}) === '1' +regExp('a').test('abc') === true +regExp('a(.)', 'i').exec('Abc') === 'b' +regExp('Building\s(\d)').exec(${Name}) === '1' ``` Regular expressions have a `toString` function for explicit (and implicit) conversion to strings in the format `'pattern'`: @@ -407,11 +407,11 @@ The operators `=~` and `!~` are overloaded for regular expressions. The `=~` ope For example, the following expressions all evaluate to true: ``` -RegExp('a') =~ 'abc' -'abc' =~ RegExp('a') +regExp('a') =~ 'abc' +'abc' =~ regExp('a') -RegExp('a') !~ 'bcd' -'bcd' !~ RegExp('a') +regExp('a') !~ 'bcd' +'bcd' !~ regExp('a') ``` ### Operator rules @@ -439,7 +439,7 @@ RegExp('a') !~ 'bcd' * Number expressions * Vector expressions of the same type * Binary equality operators `===` and `!==` operate on any expressions. The operation returns `false` if the expression types do not match. -* Binary `RegExp` operators `=~` and `!~` require one argument to be a string expression and the other to be a `RegExp` expression. +* Binary `regExp` operators `=~` and `!~` require one argument to be a string expression and the other to be a `RegExp` expression. * Ternary operator `? :` conditional argument must be a boolean expression. ### Type conversions @@ -1252,7 +1252,7 @@ For example, the following style will color all doorknobs yellow, all doors gree ```json { "defines" : { - "suffix" : "RegExp('door(.*)').exec(getExactClassName())" + "suffix" : "regExp('door(.*)').exec(getExactClassName())" }, "color" : { "conditions" : [ From 192a6326145d9f3d98fb5ddd91f4483a98d8d886 Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Mon, 23 Apr 2018 17:43:24 -0400 Subject: [PATCH 11/37] Tweaks --- README.md | 36 +++++++++++++------------- Styling/README.md | 6 ++--- TileFormats/BatchTable/README.md | 20 +++++++------- TileFormats/Instanced3DModel/README.md | 2 +- examples/batchTable.json | 2 +- schema/README.md | 2 +- schema/extension.schema.json | 2 +- schema/extras.schema.json | 2 +- 8 files changed, 36 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index a81848c2c..b8e310845 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [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. * [The Next Generation of 3D Tiles](https://cesium.com/blog/2017/07/12/the-next-generation-of-3d-tiles/) - future plans for 3D Tiles. * **Cesium implementation** - * 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). + * 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). * [Roadmap](https://github.com/AnalyticalGraphicsInc/cesium/issues/3241). * **Sample data** * [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) ## Spec status -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). +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). **Draft 1.0 Plans** Topic | Status ---|--- -[Tileset JSON](#tileset-json-file)

The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed +[Tileset JSON](#tileset-json-files)

The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed [Batched 3D Model](TileFormats/Batched3DModel/README.md) (*.b3dm)

Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected [Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)

Massive amount of points | :white_check_mark: **Solid base**, only minor, if any, changes expected @@ -146,7 +146,7 @@ Topic | Status Topic | Status ---|--- -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) +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) [OpenStreetMap](TileFormats/OpenStreetMap/README.md) | :white_circle: **Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md) Stars | :white_circle: **Not started** @@ -186,7 +186,7 @@ Optionally, a separate 3D Tile Style may be applied to a tileset. 3D Tiles use URLs to reference tile content. -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. +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. ## Tiles @@ -232,13 +232,13 @@ An optional `viewerRequestVolume` property (not shown above) defines a volume, u 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. -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). +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). The url can be another tileset JSON to create a tileset of tilesets. See [External tilesets](#external-tilesets). 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. -`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. +`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. ![](figures/contentsBox.png) @@ -246,7 +246,7 @@ A file extension is not required for `content.url`. A content's [tile format](# 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. -`children` is an array of objects that define child tiles. See the [section below](#tilesetjson). +`children` is an array of objects that define child tiles. See the [section below](#tileset-json-files). ![](figures/tile.png) @@ -276,7 +276,7 @@ The units for all linear distances are meters. All angles are in radians. -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. +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. ### Tile transform @@ -288,7 +288,7 @@ The `transform` property applies to: * `tile.content` * Each feature's position. * 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). - * `content.boundingVolume`, except when `content.boundingVolume.region` is defined, which is explicitly in [WGS84 / EPSG:4326 coordinates](http://spatialreference.org/ref/epsg/wgs-84/). + * `content.boundingVolume`, except when `content.boundingVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates. * `tile.boundingVolume`, except when `tile.boundingVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates. * `tile.viewerRequestVolume`, except when `tile.viewerRequestVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates. @@ -326,8 +326,8 @@ function computeTransform(tile, transformToRoot) { var children = tile.children; var length = children.length; - for (var k = 0; k < length; ++k) { - var child = children[k]; + for (var i = 0; i < length; ++i) { + var child = children[i]; var childToRoot = defined(child.transform) ? Matrix4.fromArray(child.transform) : Matrix4.clone(Matrix4.IDENTITY); childToRoot = Matrix4.multiplyTransformation(transformToRoot, childToRoot, childToRoot); computeTransform(child, childToRoot); @@ -412,7 +412,7 @@ For more on request volumes, see the [sample tileset](https://github.com/Analyti 3D Tiles use one main tileset `.json` file as the entry point to define a tileset. -See [schema](schema) for the detailed tileset JSON schema. +See the [schema](schema) for the detailed tileset JSON schema. 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)): ```json @@ -467,11 +467,11 @@ The top-level object in the tileset JSON has four properties: `asset`, `properti `geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered. -`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. +`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. -`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. +`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. -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. +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. ### External tilesets @@ -636,7 +636,7 @@ No, 3D Tiles are a general spec for streaming massive heterogeneous 3D geospatia #### What is the relationship between 3D Tiles and glTF? -[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. +[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. 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. @@ -650,7 +650,7 @@ The general case runtime editing of geometry on a building, vector data, etc., a #### Will 3D Tiles include terrain? -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). +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). However, since Cesium already streams terrain well, we are not focused on this in the short-term. diff --git a/Styling/README.md b/Styling/README.md index d54c1fb34..f0bae7c8b 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -51,13 +51,13 @@ Contents: * [Notes](#notes) * [Batch Table Hierarchy](#batch-table-hierarchy) * [Point Cloud](#point-cloud) -* [File Extension](#file-extension) -* [MIME Type](#mime-type) +* [File Extension](#file-extensions-and-mime-type) +* [MIME Type](#file-extensions-and-mime-type) * [Acknowledgments](#acknowledgments) ## Overview -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). +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). 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. diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 207063078..fed3f62e2 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -26,7 +26,7 @@ Contents: ## Overview -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. +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. A Batch Table is used by the following tile formats: * [Batched 3D Model](../Batched3DModel/README.md) (b3dm) @@ -128,7 +128,7 @@ For example, given the following Batch Table JSON with `batchLength` of 10 "componentType" : "FLOAT", "type" : "SCALAR" }, - "cartographic" : { + "geographic" : { "byteOffset" : 40, "componentType" : "DOUBLE", "type" : "VEC3" @@ -149,19 +149,19 @@ var heightArray = new Float32Array(batchTableBinary.buffer, byteOffset, heightAr var heightOfFeature = heightArray[batchId]; ``` -To get the `"cartographic"` values: +To get the `"geographic"` values: ```javascript -var cartographic = batchTableJSON.cartographic; -var byteOffset = cartographic.byteOffset; -var componentType = cartographic.componentType; -var type = cartographic.type; +var geographic = batchTableJSON.geographic; +var byteOffset = geographic.byteOffset; +var componentType = geographic.componentType; +var type = geographic.type; var componentSizeInBytes = sizeInBytes(componentType) var numberOfComponents = numberOfComponents(type); -var cartographicArrayByteLength = batchLength * componentSizeInBytes * numberOfComponents // 10 * 8 * 3 -var cartographicArray = new Float64Array(batchTableBinary.buffer, byteOffset, cartographicArrayByteLength); -var cartographicOfFeature = positionArray.subarray(batchId * numberOfComponents, batchId * numberOfComponents + numberOfComponents); // Using subarray creates a view into the array, and not a new array. +var geographicArrayByteLength = batchLength * componentSizeInBytes * numberOfComponents // 10 * 8 * 3 +var geographicArray = new Float64Array(batchTableBinary.buffer, byteOffset, geographicArrayByteLength); +var geographicOfFeature = positionArray.subarray(batchId * numberOfComponents, batchId * numberOfComponents + numberOfComponents); // Using subarray creates a view into the array, and not a new array. ``` ## Batch Table Hierarchy diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 0075ccaf1..7274be592 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -120,7 +120,7 @@ module. #### Default Orientation If `NORMAL_UP` and `NORMAL_RIGHT` or `NORMAL_UP_OCT32P` and `NORMAL_RIGHT_OCT32P` are not present, -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. +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. This is suitable for instanced models like trees whose orientation is always facing up from their position on the ellipsoid's surface. ### Instance Position diff --git a/examples/batchTable.json b/examples/batchTable.json index caab459fc..b30e3fb0d 100644 --- a/examples/batchTable.json +++ b/examples/batchTable.json @@ -8,7 +8,7 @@ "componentType" : "FLOAT", "type" : "SCALAR" }, - "cartographic" : { + "geographic" : { "byteOffset" : 8, "componentType" : "DOUBLE", "type" : "VEC3" diff --git a/schema/README.md b/schema/README.md index fd87c7a3e..520102819 100644 --- a/schema/README.md +++ b/schema/README.md @@ -1,6 +1,6 @@ # 3D Tiles JSON Schema -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. +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. ## Usage diff --git a/schema/extension.schema.json b/schema/extension.schema.json index 434f0a805..ca2dccdd9 100644 --- a/schema/extension.schema.json +++ b/schema/extension.schema.json @@ -8,4 +8,4 @@ "additionalProperties": { "type": "object" } -} \ No newline at end of file +} diff --git a/schema/extras.schema.json b/schema/extras.schema.json index 69b30de45..ff872b5f6 100644 --- a/schema/extras.schema.json +++ b/schema/extras.schema.json @@ -2,4 +2,4 @@ "$schema": "http://json-schema.org/draft-04/schema", "title": "Extras", "description": "Application-specific data." -} \ No newline at end of file +} From 5586e25c4b22e811d09801836af5399b53ee4c9e Mon Sep 17 00:00:00 2001 From: Sarah Chow Date: Tue, 24 Apr 2018 14:34:23 -0700 Subject: [PATCH 12/37] Sean corrections --- README.md | 10 +++++----- Styling/README.md | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1eec1a0d6..623efb571 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

-Specification for streaming massive heterogeneous 3D geospatial datasets. +Specification for streaming massive heterogeneous **3D** geospatial datasets. 3D Tiles has entered the Open Geospatial Consortium (OGC) [Community Standard](https://cesium.com/blog/2016/09/06/3d-tiles-and-the-ogc/) process. @@ -416,7 +416,7 @@ The top-level object in tileset.json has four properties: `asset`, `properties`, `asset` is an object containing properties with metadata about the entire tileset. Its `version` property is a string that defines the 3D Tiles version. The version defines the JSON schema for tileset.json and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. The `gltfUpAxis` property is an optional string that specifies the up-axis of glTF models contained in the tileset. -`properties` is an object containing objects for each per-feature property in the tileset. This tileset.json snippet is for 3D buildings, so each tile has building models, and each building model has a `height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and the name defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. +`properties` is an object containing objects for each per-feature property in the tileset. This tileset.json snippet is for 3D buildings, so each tile has building models, and each building model has a `Height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and its value defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. `geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered. @@ -533,13 +533,13 @@ An octree extends a quadtree by using three orthogonal splitting planes to subdi 3D Tiles takes advantage of empty tiles: those tiles that have a bounding volume, but no content. Since a tile's `content` property does not need to be defined, empty non-leaf tiles can be used to accelerate non-uniform grids with hierarchical culling. This essentially creates a quadtree or octree without hierarchical levels of detail (HLOD). -## Tile Formats +## Tile formats Each tile's `content.url` property points to a tile that is one of the formats listed in the [Status section](#spec-status) above. A tileset can contain any combination of tile formats. 3D Tiles may also support different formats in the same tile using a [Composite](TileFormats/Composite/README.md) tile. -## Declarative Styling +## Declarative styling


@@ -654,7 +654,7 @@ Since [horizon culling](https://cesium.com/blog/2013/04/25/horizon-culling/) is #### Is screen space error the only metric used to drive refinement? -At runtime, a tile's `geometricError` is used to compute the screen space Error (SSE) to drive refinement. We expect to expand this, for example, by using the [_virtual multiresolution screen space error_](http://www.dis.unal.edu.co/profesores/pierre/MyHome/publications/papers/vmsse.pdf) (VMSSE), which takes occlusion into account. This can be done at runtime without streaming additional tile metadata. Similarly, fog can also be used to tolerate increases to the SSE in the distance. +At runtime, a tile's `geometricError` is used to compute the screen space error (SSE) to drive refinement. We expect to expand this, for example, by using the [_virtual multiresolution screen space error_](http://www.dis.unal.edu.co/profesores/pierre/MyHome/publications/papers/vmsse.pdf) (VMSSE), which takes occlusion into account. This can be done at runtime without streaming additional tile metadata. Similarly, fog can also be used to tolerate increases to the SSE in the distance. However, we do anticipate other metadata for driving refinement. SSE may not be appropriate for all datasets; for example, points of interest may be better served with on/off distances and a label collision factor computed at runtime. Note that the viewer's height above the ground is rarely a good metric for 3D since 3D supports arbitrary views. diff --git a/Styling/README.md b/Styling/README.md index 3defc8d96..05a990030 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -99,7 +99,7 @@ The color's alpha component defines the feature's opacity. For example, the foll } ``` -In addition to a string containing an expression, `color` and `show` can be an array defining a series of conditions (think of them as `if...else` statements). Conditions can, for example, be used to make color maps and color ramps with any type of inclusive/exclusive intervals. +In addition to a string containing an expression, `color` and `show` can be an array defining a series of conditions (think of them as `if...else` statements). Conditions can, for example, be used to make color maps and color ramps with any type of inclusive/exclusive intervals. For example, the following expression maps an ID property to colors. Conditions are evaluated in order, so if `${id}` is not `'1'` or `'2'`, the `"true"` condition returns white. If no conditions are met, the color of the feature will be `undefined`: ```json From 51173939e51e695379337afbcc6983261946d39e Mon Sep 17 00:00:00 2001 From: Sarah Chow Date: Tue, 24 Apr 2018 15:59:53 -0700 Subject: [PATCH 13/37] capitalization --- README.md | 12 +++--- Styling/README.md | 24 ++++++------ TileFormats/BatchTable/README.md | 52 +++++++++++++------------- TileFormats/Batched3DModel/README.md | 42 ++++++++++----------- TileFormats/Composite/README.md | 20 +++++----- TileFormats/FeatureTable/README.md | 32 ++++++++-------- TileFormats/Instanced3DModel/README.md | 46 +++++++++++------------ TileFormats/PointCloud/README.md | 48 ++++++++++++------------ schema/pnts.featureTable.schema.json | 2 +- 9 files changed, 139 insertions(+), 139 deletions(-) diff --git a/README.md b/README.md index 623efb571..310f8831f 100644 --- a/README.md +++ b/README.md @@ -136,10 +136,10 @@ The 3D Tiles spec is pre-1.0 (indicated by `"version": "0.0"` in tileset.json). Topic | Status ---|--- [tileset.json](#tilesetjson)

The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed -[Batched 3D model](TileFormats/Batched3DModel/README.md) (*.b3dm)

Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Instanced 3D model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Point cloud](TileFormats/PointCloud/README.md) (*.pnts)

Massive number of points | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Vector data](TileFormats/VectorData/README.md) (*.vctr)

Polygons, polylines, and placemarks | :white_circle: **In progress**, [#124](https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/124/files) +[Batched 3D Model](TileFormats/Batched3DModel/README.md) (*.b3dm)

Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected +[Instanced 3D Model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected +[Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)

Massive number of points | :white_check_mark: **Solid base**, only minor, if any, changes expected +[Vector Data](TileFormats/VectorData/README.md) (*.vctr)

Polygons, polylines, and placemarks | :white_circle: **In progress**, [#124](https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/124/files) [Composite](TileFormats/Composite/README.md) (*.cmpt)

Combine heterogeneous tile formats | :white_check_mark: **Solid base**, only minor, if any, changes expected [Declarative styling](Styling/README.md)

Style features using per-feature metadata | :white_check_mark: **Solid base**, will add features/functions as needed, [#2](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/2) @@ -147,8 +147,8 @@ Topic | Status Topic | Status ---|--- -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) -[OpenStreetMap](TileFormats/OpenStreetMap/README.md), | :white_circle: **Not started** Currently folks are using [batched 3D model](TileFormats/Batched3DModel/README.md) +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) +[OpenStreetMap](TileFormats/OpenStreetMap/README.md), | :white_circle: **Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md) Stars | :white_circle: **Not started** For spec work in progress, [watch this repo](https://github.com/AnalyticalGraphicsInc/3d-tiles/subscription) and browse the [issues](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues). diff --git a/Styling/README.md b/Styling/README.md index 05a990030..1971844a6 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -49,15 +49,15 @@ Contents: * [Built-in variables](#built-in-variables) * [Built-in functions](#built-in-functions) * [Notes](#notes) -* [Batch table hierarchy](#batch-table-hierarchy) -* [Point cloud](#point-cloud) +* [Batch Table Hierarchy](#batch-table-hierarchy) +* [Point Cloud](#point-cloud) * [File extension](#file-extension) * [MIME type](#mime-type) * [Acknowledgments](#acknowledgments) ## Overview -3D Tiles styles provide concise declarative styling of tileset features. A style defines expressions to evaluate a feature's `color` (RGB and translucency) and `show` properties, often based on the feature's properties stored in the tile's batch table. +3D Tiles styles provide concise declarative styling of tileset features. A style defines expressions to evaluate a feature's `color` (RGB and translucency) and `show` properties, often based on the feature's properties stored in the tile's Batch Table. Styles are defined with JSON and expressions written in a small subset of JavaScript augmented for styling. Additionally, the styling language provides a set of built-in functions to support common math operations. @@ -544,7 +544,7 @@ ${order} === 1 ${name} === 'Feature name' ``` -Additionally, variables originating from vector properties stored in the [batch table binary](../TileFormats/BatchTable/README.md#binary-body) are treated as vector types: +Additionally, variables originating from vector properties stored in the [Batch Table binary](../TileFormats/BatchTable/README.md#binary-body) are treated as vector types: | `componentType` | variable type | | --- | --- | @@ -1231,9 +1231,9 @@ Computes the cross product of `x` and `y`. This function only accepts `vec3` arg Comments are not supported. -## Batch table hierarchy +## Batch Table Hierarchy -The styling language provides the following built-in functions intended for use with the [batch table hierarchy](../TileFormats/BatchTable/README.md#batch-table-hierarchy): +The styling language provides the following built-in functions intended for use with the [Batch Table Hierarchy](../TileFormats/BatchTable/README.md#batch-table-hierarchy): * [`getExactClassName`](#getexactclassname) * [`isExactClass`](#isexactclass) @@ -1303,9 +1303,9 @@ For example, the style below will color all doors and doorknobs. } ``` -## Point cloud +## Point Cloud -A [point cloud](../TileFormats/PointCloud/README.md) is a collection of points that may be styled like other features. In addition to evaluating a point's `color` and `show` properties, a point cloud style may evaluate `pointSize`, or the size of each point in pixels. The default `pointSize` is `1.0`. +A [Point Cloud](../TileFormats/PointCloud/README.md) is a collection of points that may be styled like other features. In addition to evaluating a point's `color` and `show` properties, a Point Cloud style may evaluate `pointSize`, or the size of each point in pixels. The default `pointSize` is `1.0`. ```json { "color" : "color('red')", @@ -1315,11 +1315,11 @@ A [point cloud](../TileFormats/PointCloud/README.md) is a collection of points t Implementations may clamp the evaluated `pointSize` to the system's supported point size range. For example, WebGL renderers may query `ALIASED_POINT_SIZE_RANGE` to get the system limits when rendering with `POINTS`. A `pointSize` of `1.0` must be supported. -Point cloud styles may also reference semantics from the [Feature Table](../TileFormats/PointCloud/README.md#feature-table) including position, color, and normal to allow for more flexible styling of the source data. +Point Cloud styles may also reference semantics from the [Feature Table](../TileFormats/PointCloud/README.md#feature-table) including position, color, and normal to allow for more flexible styling of the source data. * `${POSITION}` is a `vec3` storing the xyz Cartesian coordinates of the point before the `RTC_CENTER` and tile transform are applied. When the positions are quantized, `${POSITION}` refers to the position after the `QUANTIZED_VOLUME_SCALE` is applied, but before `QUANTIZED_VOLUME_OFFSET` is applied. * `${POSITION_ABSOLUTE}` is a `vec3` storing the xyz Cartesian coordinates of the point after the `RTC_CENTER` and tile transform are applied. When the positions are quantized, `${POSITION_ABSOLUTE}` refers to the position after the `QUANTIZED_VOLUME_SCALE`, `QUANTIZED_VOLUME_OFFSET`, and tile transform are applied. -* `${COLOR}` evaluates to a `Color` storing the rgba color of the point. When the feature table's color semantic is `RGB` or `RGB565`, `${COLOR}.alpha` is `1.0`. If no color semantic is defined, `${COLOR}` evaluates to the application-specific default color. -* `${NORMAL}` is a `vec3` storing the normal, in Cartesian coordinates, of the point before the tile transform is applied. When normals are oct-encoded, `${NORMAL}` refers to the decoded normal. If no normal semantic is defined in the feature table, `${NORMAL}` evaluates to `undefined`. +* `${COLOR}` evaluates to a `Color` storing the rgba color of the point. When the Feature Table's color semantic is `RGB` or `RGB565`, `${COLOR}.alpha` is `1.0`. If no color semantic is defined, `${COLOR}` evaluates to the application-specific default color. +* `${NORMAL}` is a `vec3` storing the normal, in Cartesian coordinates, of the point before the tile transform is applied. When normals are oct-encoded, `${NORMAL}` refers to the decoded normal. If no normal semantic is defined in the Feature Table, `${NORMAL}` evaluates to `undefined`. For example: @@ -1331,7 +1331,7 @@ For example: } ``` -#### Point cloud shader styling +#### Point Cloud shader styling **TODO : add note about GLSL implementations requires strict type comparisons among other things: https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/140** diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 9cc3ff672..52d157738 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -13,7 +13,7 @@ * [Layout](#layout) * [JSON header](#json-header) * [Binary body](#binary-body) -* [Batch table hierarchy](#batch-table-hierarchy) +* [Batch Table Hierarchy](#batch-table-hierarchy) * [Motivation](#motivation) * [Hierarchy](#hierarchy) * [Examples](#examples) @@ -26,28 +26,28 @@ ## Overview -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. +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. -A batch table is used by the following tile formats: -* [Batched 3D model](../Batched3DModel/README.md) (b3dm) -* [Instanced 3D model](../Instanced3DModel/README.md) (i3dm) -* [Point cloud](../PointCloud/README.md) (pnts) +A Batch Table is used by the following tile formats: +* [Batched 3D Model](../Batched3DModel/README.md) (b3dm) +* [Instanced 3D Model](../Instanced3DModel/README.md) (i3dm) +* [Point Cloud](../PointCloud/README.md) (pnts) * [Vector](../VectorData/README.md) (vctr) ## Layout -A batch table is composed of two parts: a JSON header and an optional binary body. The JSON describes the properties, whose values either can be defined directly in the JSON as an array, or can refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the batch table layout: +A Batch Table is composed of two parts: a JSON header and an optional binary body. The JSON describes the properties, whose values either can be defined directly in the JSON as an array, or can refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the Batch Table layout: ![batch table layout](figures/batch-table-layout.png) -When a tile format includes a batch table, the batch table immediately follows the tile's feature table if it exists. Otherwise, the batch table immediately follows the tile's header. -The header will also contain `batchTableJSONByteLength` and `batchTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the batch table. +When a tile format includes a Batch Table, the Batch Table immediately follows the tile's Feature Table if it exists. Otherwise, the Batch Table immediately follows the tile's header. +The header will also contain `batchTableJSONByteLength` and `batchTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the Batch Table. -Code for reading the batch table can be found in [Cesium3DTileBatchTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileBatchTable.js) in the Cesium implementation of 3D Tiles. +Code for reading the Batch Table can be found in [Cesium3DTileBatchTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileBatchTable.js) in the Cesium implementation of 3D Tiles. ### JSON header -Batch table values can be represented in the JSON header in two different ways: +Batch Table values can be represented in the JSON header in two different ways: 1. An array of values, e.g., `"name" : ['name1', 'name2', 'name3']` or `"height" : [10.0, 20.0, 15.0]`. * Array elements can be any valid JSON data type, including objects and arrays. Elements may be `null`. @@ -57,9 +57,9 @@ Batch table values can be represented in the JSON header in two different ways: * `componentType` is the datatype of components in the attribute. Allowed values are `"BYTE"`, `"UNSIGNED_BYTE"`, `"SHORT"`, `"UNSIGNED_SHORT"`, `"INT"`, `"UNSIGNED_INT"`, `"FLOAT"`, and `"DOUBLE"`. * `type` specifies if the property is a scalar or vector. Allowed values are `"SCALAR"`, `"VEC2"`, `"VEC3"`, and `"VEC4"`. -The batch table JSON is a `UTF-8` string containing JSON. It can be extracted from the arraybuffer using the `TextDecoder` JavaScript API and transformed to a JavaScript object with `JSON.parse`. +The Batch Table JSON is a `UTF-8` string containing JSON. It can be extracted from the arraybuffer using the `TextDecoder` JavaScript API and transformed to a JavaScript object with `JSON.parse`. -A `batchId` is used to access elements in each array and extract the corresponding properties. For example, the following batch table has properties for a batch of two features: +A `batchId` is used to access elements in each array and extract the corresponding properties. For example, the following Batch Table has properties for a batch of two features: ```json { "id" : ["unique id", "another unique id"], @@ -85,7 +85,7 @@ yearBuilt[1] = 2015; address[1] = {street : 'Main Street', houseNumber : '2'}; ``` -JSON schema batch table definitions can be found in [batchTable.schema.json](../../schema/batchTable.schema.json). +JSON schema Batch Table definitions can be found in [batchTable.schema.json](../../schema/batchTable.schema.json). ### Binary body @@ -115,7 +115,7 @@ The following tables can be used to compute the byte size of a property. | `"VEC3"` | 3 | | `"VEC4"` | 4 | -For example, given the following batch table JSON with `batchLength` of 10: +For example, given the following Batch Table JSON with `batchLength` of 10: ```json { @@ -160,9 +160,9 @@ var cartographicArray = new Float64Array(batchTableBinary.buffer, byteOffset, ca var cartographicOfFeature = positionArray.subarray(batchId * numberOfComponents, batchId * numberOfComponents + numberOfComponents); // Using subarray creates a view into the array, and not a new array. ``` -## Batch table hierarchy +## Batch Table Hierarchy -The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The batch table hierarchy provides more flexibility for these cases. +The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The Batch Table hierarchy provides more flexibility for these cases. ### Motivation @@ -251,13 +251,13 @@ A standard batch table with two walls per building and three buildings per block } ``` -Both these cases illustrate the benefit of supporting feature types and a feature hierarchy within the batch table. +Both these cases illustrate the benefit of supporting feature types and a feature hierarchy within the Batch Table. ### Hierarchy The standard batch table may be extended to include a `HIERARCHY` object that defines a set of classes and a tree structure for class instances. -Sample batch table: +Sample Batch Table: ```json { @@ -306,7 +306,7 @@ Note that this is different than a tile's `batchLength`, which is the total numb `classIds` is an array of integers of length `instancesLength`. Each value specifies the instances's class as an index in the `classes` array. -**Implementation Note**: The batch table hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. +**Implementation Note**: The Batch Table hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. `parentCounts` is an array of integers of length `instancesLength`. Each value specifies the number of parents that instance has. If omitted, `parentCounts` is implicitly an array of length `instancesLength`, where all values are 1. @@ -333,7 +333,7 @@ Finally, `classIds`, `parentCounts`, and `parentIds` may instead be references t #### Feature classes -Going back to the example of a parking lot with car, lamp post, and tree features, a batch table might look like this: +Going back to the example of a parking lot with car, lamp post, and tree features, a Batch Table might look like this: ```json { @@ -383,7 +383,7 @@ carType : "sedan" carColor : "red" ``` -Batch table hierarchy, parking lot: +Batch Table hierarchy, parking lot: ![batch table hierarchy parking lot](figures/batch-table-hierarchy-parking-lot.png) @@ -467,7 +467,7 @@ block_district : ["central"] Since the block's `parentId` is also 9, it does not have a parent and the traversal is complete. -Batch table hierarchy, block: +Batch Table hierarchy, block: ![batch table hierarchy block](figures/batch-table-hierarchy-block.png) @@ -483,7 +483,7 @@ More detailed descriptions are provided in the [Styling Spec](../../Styling/READ ### Notes -* Since the batch table hierarchy is an extension to the standard batch table, it is still possible to store per-feature properties alongside the `HIERARCHY` object: +* Since the Batch Table hierarchy is an extension to the standard batch table, it is still possible to store per-feature properties alongside the `HIERARCHY` object: ``` { @@ -494,7 +494,7 @@ More detailed descriptions are provided in the [Styling Spec](../../Styling/READ } ``` -* The batch table hierarchy is self-contained within the tile. It is not possible to form metadata hierarchy across different tiles in the tileset. +* The Batch Table hierarchy is self-contained within the tile. It is not possible to form metadata hierarchy across different tiles in the tileset. ## Implementation notes @@ -502,7 +502,7 @@ In JavaScript, a `TypedArray` cannot be created on data unless it is byte-aligne For example, a `Float32Array` must be stored in memory such that its data begins on a byte multiple of four since each `float` contains four bytes. The string generated from the JSON header should be padded with space characters in order to ensure that the binary body is byte-aligned. -The binary body should also be padded if necessary when there is data following the batch table. +The binary body should also be padded if necessary when there is data following the Batch Table. ## Acknowledgments diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 464ee0e8e..42918a724 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -11,26 +11,26 @@ * [Overview](#overview) * [Layout](#layout) * [Header](#header) -* [Feature table](#feature-table) +* [Feature Table](#feature-table) * [Semantics](#semantics) * [Feature semantics](#feature-semantics) * [Global semantics](#global-semantics) -* [Batch table](#batch-table) +* [Batch Table](#batch-table) * [Binary glTF](#binary-gltf) * [File extension](#file-extension) * [MIME type](#mime-type) ## Overview -_Batched 3D model_ allows offline batching of heterogeneous 3D models, such as different buildings in a city, for efficient streaming to a web client for rendering and interaction. Efficiency comes from transferring multiple models in a single request and rendering them in the least number of WebGL draw calls necessary. Using the core 3D Tiles spec language, each model is a _feature_. +_Batched 3D Model_ allows offline batching of heterogeneous 3D models, such as different buildings in a city, for efficient streaming to a web client for rendering and interaction. Efficiency comes from transferring multiple models in a single request and rendering them in the least number of WebGL draw calls necessary. Using the core 3D Tiles spec language, each model is a _feature_. Per-model properties, such as IDs, enable individual models to be identified and updated at runtime, e.g., show/hide, highlight color, etc. Properties may be used, for example, to query a web service to access metadata, such as passing a building's ID to get its address. Or a property might be referenced on the fly for changing a model's appearance, e.g., changing highlight color based on a property value. -Batched 3D model, or just the _batch_, is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. +Batched 3D Model, or just the _batch_, is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. ## Layout -A tile is composed of two sections: a header immediately followed by a body. The following figure shows the batched 3D model layout (dashes indicate optional fields): +A tile is composed of two sections: a header immediately followed by a body. The following figure shows the Batched 3D Model layout (dashes indicate optional fields): ![](figures/layout.png) @@ -40,13 +40,13 @@ The 28-byte header contains the following fields: |Field name|Data type|Description| |----------|---------|-----------| -| `magic` | 4-byte ANSI string | `"b3dm"`. This can be used to identify the arraybuffer as a batched 3D model tile. | -| `version` | `uint32` | The version of the batched 3D model format. It is currently `1`. | +| `magic` | 4-byte ANSI string | `"b3dm"`. This can be used to identify the arraybuffer as a Batched 3D Model tile. | +| `version` | `uint32` | The version of the Batched 3D Model format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | -| `featureTableJSONByteLength` | `uint32` | The length of the feature table JSON section in bytes. Zero indicates there is no feature table. | -| `featureTableBinaryByteLength` | `uint32` | The length of the feature table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | -| `batchTableJSONByteLength` | `uint32` | The length of the batch table JSON section in bytes. Zero indicates there is no batch table. | -| `batchTableBinaryByteLength` | `uint32` | The length of the batch table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | +| `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. Zero indicates there is no Feature Table. | +| `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | +| `batchTableJSONByteLength` | `uint32` | The length of the Batch Table JSON section in bytes. Zero indicates there is no Batch Table. | +| `batchTableBinaryByteLength` | `uint32` | The length of the Batch Table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | If `featureTableJSONByteLength` equals zero, the tile does not need to be rendered. @@ -56,12 +56,12 @@ Code for reading the header can be found in [Batched3DModelTileContent](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Batched3DModel3DTileContent.js) in the Cesium implementation of 3D Tiles. -## Feature table +## Feature Table Contains values for `b3dm` semantics. -More information is available in the [feature table specification](../FeatureTable/README.md). +More information is available in the [Feature Table specification](../FeatureTable/README.md). -The `b3dm` feature table JSON schema is defined in [b3dm.featureTable.schema.json](../../schema/b3dm.featureTable.schema.json). +The `b3dm` Feature Table JSON schema is defined in [b3dm.featureTable.schema.json](../../schema/b3dm.featureTable.schema.json). ### Semantics @@ -77,19 +77,19 @@ These semantics define global properties for all features. | --- | --- | --- | --- | | `BATCH_LENGTH` | `uint32` | The number of distinguishable models, also called features, in the batch. If the Binary glTF does not have a `batchId` attribute, this field _must_ be `0`. | :white_check_mark: Yes. | -## Batch table +## Batch Table -The _batch table_ contains per-model application-specific metadata, indexable by `batchId`, that can be used for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. In the binary glTF section, each vertex has an numeric `batchId` attribute in the integer range `[0, number of models in the batch - 1]`. The `batchId` indicates the model to which the vertex belongs. This allows models to be batched together and still be identifiable. +The _Batch Table_ contains per-model application-specific metadata, indexable by `batchId`, that can be used for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. In the binary glTF section, each vertex has an numeric `batchId` attribute in the integer range `[0, number of models in the batch - 1]`. The `batchId` indicates the model to which the vertex belongs. This allows models to be batched together and still be identifiable. -See the [batch table](../BatchTable/README.md) reference for more information. +See the [Batch Table](../BatchTable/README.md) reference for more information. ## Binary glTF -[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Batched 3D model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. +[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Batched 3D Model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. -The binary glTF immediately follows the feature table and batch table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. +The binary glTF immediately follows the Feature Table and Batch Table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. -The glTF asset must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the feature table or batch table if they are present. +The glTF asset must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. As described above, each vertex has a `batchId` attribute indicating the model to which it belongs. For example, vertices for a batch with three models may look like this: ``` @@ -129,7 +129,7 @@ attribute float a_batchId; The vertex shader can be modified at runtime to use `a_batchId` to access individual models in the batch, e.g., to change their color. -When a batch table is present or the `BATCH_LENGTH` property is greater than `0`, the `batchId` attribute (with the parameter semantic `_BATCHID`) is required; otherwise, it is not. +When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0`, the `batchId` attribute (with the parameter semantic `_BATCHID`) is required; otherwise, it is not. Although not strictly required, clients may find the glTF [CESIUM_RTC](https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Vendor/CESIUM_RTC) extension useful for high-precision rendering. diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index 87ea13e55..c484091fb 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -18,13 +18,13 @@ ## Overview -The _composite_ tile format enables concatenating tiles of different formats into one tile. +The _Composite_ tile format enables concatenating tiles of different formats into one tile. -3D Tiles and the composite tile allow flexibility for streaming heterogeneous datasets. For example, buildings and trees could be stored either in two separate _batched 3D model_ and _instanced 3D model_ tiles or, using a composite tile, the tiles can be combined. +3D Tiles and the Composite tile allow flexibility for streaming heterogeneous datasets. For example, buildings and trees could be stored either in two separate _Batched 3D Model_ and _Instanced 3D Model_ tiles or, using a Composite tile, the tiles can be combined. -Supporting heterogeneous datasets with both inter-tile (separate tiles of different formats that are in the same tileset) and intra-tile (different tile formats that are in the same composite tile) options allows conversion tools to make trade-offs between number of requests, optimal type-specific subdivision, and how visible/hidden layers are streamed. +Supporting heterogeneous datasets with both inter-tile (separate tiles of different formats that are in the same tileset) and intra-tile (different tile formats that are in the same Composite tile) options allows conversion tools to make trade-offs between number of requests, optimal type-specific subdivision, and how visible/hidden layers are streamed. -A composite is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. +A Composite is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. ## Layout @@ -38,18 +38,18 @@ The 16-byte header section contains the following fields: |Field name|Data type|Description| |----------|---------|-----------| -| `magic` | 4-byte ANSI string | `"cmpt"`. This can be used to identify the arraybuffer as a composite tile. | -| `version` | `uint32` | The version of the composite format. It is currently `1`. | -| `byteLength` | `uint32` | The length of the entire composite tile, including this header and each inner tile, in bytes. | -| `tilesLength` | `uint32` | The number of tiles in the composite. | +| `magic` | 4-byte ANSI string | `"cmpt"`. This can be used to identify the arraybuffer as a Composite tile. | +| `version` | `uint32` | The version of the Composite format. It is currently `1`. | +| `byteLength` | `uint32` | The length of the entire Composite tile, including this header and each inner tile, in bytes. | +| `tilesLength` | `uint32` | The number of tiles in the Composite. | _TODO: code example reading header_ ## Inner tiles -Inner tile fields are stored tightly packed immediately following the header section. No additional header is added on top of the tiles' preexisting headers, e.g., b3dm or i3dm headers. However, the following information describes general characteristics of the existing contents of relevant files' headers to explain common information that a composite tile reader might exploit to find the boundaries of the inner tiles: +Inner tile fields are stored tightly packed immediately following the header section. No additional header is added on top of the tiles' preexisting headers, e.g., b3dm or i3dm headers. However, the following information describes general characteristics of the existing contents of relevant files' headers to explain common information that a Composite tile reader might exploit to find the boundaries of the inner tiles: -* Each tile starts with a 4-byte ANSI string, `magic`, that can be used to determine the tile format for further parsing. See the [main 3D Tiles spec](../../README.md) for a list of tile formats. Composite tiles can contain composite tiles. +* Each tile starts with a 4-byte ANSI string, `magic`, that can be used to determine the tile format for further parsing. See the [main 3D Tiles spec](../../README.md) for a list of tile formats. Composite tiles can contain Composite tiles. * Each tile's header contains a `uint32` `byteLength`, which defines the length of the inner tile, including its header, in bytes. This can be used to traverse the inner tiles. * For any tile format's version 1, the first 12 bytes of all tiles is the following fields: diff --git a/TileFormats/FeatureTable/README.md b/TileFormats/FeatureTable/README.md index 9119644ba..f695d80bb 100644 --- a/TileFormats/FeatureTable/README.md +++ b/TileFormats/FeatureTable/README.md @@ -17,45 +17,45 @@ ## Overview -A _feature table_ describes position and appearance properties for each feature in a tile. The [batch table](../BatchTable/README.md), on the other hand, contains per-feature application-specific metadata not necessarily used for rendering. +A _Feature Table_ describes position and appearance properties for each feature in a tile. The [Batch Table](../BatchTable/README.md), on the other hand, contains per-feature application-specific metadata not necessarily used for rendering. -A feature table is used by the following tile formats: -* [Batched 3D model](../Batched3DModel/README.md) (b3dm) - each model is a feature. -* [Instanced 3D model](../Instanced3DModel/README.md) (i3dm) - each model instance is a feature. -* [Point cloud](../PointCloud/README.md) (pnts) - each point is a feature. +A Feature Table is used by the following tile formats: +* [Batched 3D Model](../Batched3DModel/README.md) (b3dm) - each model is a feature. +* [Instanced 3D Model](../Instanced3DModel/README.md) (i3dm) - each model instance is a feature. +* [Point Cloud](../PointCloud/README.md) (pnts) - each point is a feature. * [Vector](../VectorData/README.md) (vctr) - each point/polyline/polygon is a feature. -Per-feature properties are defined using tile format-specific semantics defined in each tile format's specification. For example, for _instanced 3D model_, `SCALE_NON_UNIFORM` defines the non-uniform scale applied to each 3D model instance. +Per-feature properties are defined using tile format-specific semantics defined in each tile format's specification. For example, for _Instanced 3D Model_, `SCALE_NON_UNIFORM` defines the non-uniform scale applied to each 3D model instance. ## Layout -A feature table is composed of two parts: a JSON header and an optional binary body. The JSON property names are tile format-specific semantics, and their values can either be defined directly in the JSON, or refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the feature table layout: +A Feature Table is composed of two parts: a JSON header and an optional binary body. The JSON property names are tile format-specific semantics, and their values can either be defined directly in the JSON, or refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the Feature Table layout: ![feature table layout](figures/feature-table-layout.png) -When a tile format includes a feature table, the feature table immediately follows the tile's header. The header will also contain `featureTableJSONByteLength` and `featureTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the feature table. +When a tile format includes a Feature Table, the Feature Table immediately follows the tile's header. The header will also contain `featureTableJSONByteLength` and `featureTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the Feature Table. -Code for reading the feature table can be found in [Cesium3DTileFeatureTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileFeatureTable.js) in the Cesium implementation of 3D Tiles. +Code for reading the Feature Table can be found in [Cesium3DTileFeatureTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileFeatureTable.js) in the Cesium implementation of 3D Tiles. ### JSON header -Feature table values can be represented in the JSON header in three different ways: +Feature Table values can be represented in the JSON header in three different ways: 1. A single value or object, e.g., `"INSTANCES_LENGTH" : 4`. - * This is used for global semantics like `"INSTANCES_LENGTH"`, which defines the number of model instances in an instanced 3D model tile. + * This is used for global semantics like `"INSTANCES_LENGTH"`, which defines the number of model instances in an Instanced 3D Model tile. 2. An array of values, e.g., `"POSITION" : [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]`. - * This is used for per-feature semantics like `"POSITION"` in instanced 3D model. Above, each `POSITION` refers to a `float32[3]` data type so there are three features: `Feature 0's position`=`(1.0, 0.0, 0.0)`, `Feature 1's position`=`(0.0, 1.0, 0.0)`, `Feature 2's position`=`(0.0, 0.0, 1.0)`. + * This is used for per-feature semantics like `"POSITION"` in Instanced 3D Model. Above, each `POSITION` refers to a `float32[3]` data type so there are three features: `Feature 0's position`=`(1.0, 0.0, 0.0)`, `Feature 1's position`=`(0.0, 1.0, 0.0)`, `Feature 2's position`=`(0.0, 0.0, 1.0)`. 3. A reference to data in the binary body, denoted by an object with a `byteOffset` property, e.g., `"SCALE" : { "byteOffset" : 24}`. * `byteOffset` is a zero-based offset relative to the start of the binary body. * The semantic defines the allowed data type, e.g., when `"POSITION"` in instanced model refers to the binary body, the component type is `FLOAT` and the number of components is `3`. * Some semantics allow for overriding the implicit `componentType`. These cases are specified in each tile format, e.g., `"BATCH_ID" : { "byteOffset" : 24, "componentType" : "UNSIGNED_BYTE"}`. -The only valid properties in the JSON header are the defined semantics by the tile format. Application-specific data should be stored in the batch table. +The only valid properties in the JSON header are the defined semantics by the tile format. Application-specific data should be stored in the Batch Table. -JSON schema feature table definitions can be found in [featureTable.schema.json](../../schema/featureTable.schema.json). +JSON schema Feature Table definitions can be found in [featureTable.schema.json](../../schema/featureTable.schema.json). ### Binary body -When the JSON header includes a reference to the binary, the provided `byteOffset` is used to index into the data. The following figure shows indexing into the feature table binary body: +When the JSON header includes a reference to the binary, the provided `byteOffset` is used to index into the data. The following figure shows indexing into the Feature Table binary body: ![feature table binary index](figures/feature-table-binary-index.png) @@ -76,4 +76,4 @@ In JavaScript, a `TypedArray` cannot be created on data unless it is byte-aligne For example, a `Float32Array` must be stored in memory such that its data begins on a byte multiple of four since each `float` contains four bytes. The string generated from the JSON header should be padded with space characters in order to ensure that the binary body is byte-aligned. -The binary body should also be padded if necessary when there is data following the feature table. +The binary body should also be padded if necessary when there is data following the Feature Table. diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index a878c38a3..357ae7881 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -11,7 +11,7 @@ * [Overview](#overview) * [Layout](#layout) * [Header](#header) -* [Feature table](#feature-table) +* [Feature Table](#feature-table) * [Semantics](#semantics) * [Instance semantics](#instance-semantics) * [Global semantics](#global-semantics) @@ -24,7 +24,7 @@ * [Examples](#examples) * [Positions only](#positions-only) * [Quantized positions and oct-encoded normals](#quantized-positions-and-oct-encoded-normals) -* [Batch table](#batch-table) +* [Batch Table](#batch-table) * [glTF](#gltf) * [File extension](#file-extension) * [MIME type](#mime-type) @@ -33,17 +33,17 @@ ## Overview -_Instanced 3D model_ is a tile format for efficient streaming and rendering of a large number of models, called _instances_, with slight variations. In the simplest case, the same tree model, for example, may be located—or _instanced_—in several places. Each instance references the same model and has per-instance properties, such as position. Using the core 3D Tiles spec language, each instance is a _feature_. +_Instanced 3D Model_ is a tile format for efficient streaming and rendering of a large number of models, called _instances_, with slight variations. In the simplest case, the same tree model, for example, may be located—or _instanced_—in several places. Each instance references the same model and has per-instance properties, such as position. Using the core 3D Tiles spec language, each instance is a _feature_. -In addition to trees, instanced 3D model is useful for exterior features such as fire hydrants, sewer caps, lamps, and traffic lights, and for interior CAD features such as bolts, valves, and electrical outlets. +In addition to trees, Instanced 3D Model is useful for exterior features such as fire hydrants, sewer caps, lamps, and traffic lights, and for interior CAD features such as bolts, valves, and electrical outlets. -A [composite](../Composite/README.md) tile can be used to create tiles with different types of instanced models, e.g., trees and traffic lights. +A [Composite](../Composite/README.md) tile can be used to create tiles with different types of instanced models, e.g., trees and traffic lights. -Instanced 3D model maps well to the [ANGLE_instanced_arrays](https://www.khronos.org/registry/webgl/extensions/ANGLE_instanced_arrays/) extension for efficient rendering with WebGL. +Instanced 3D Model maps well to the [ANGLE_instanced_arrays](https://www.khronos.org/registry/webgl/extensions/ANGLE_instanced_arrays/) extension for efficient rendering with WebGL. ## Layout -A tile is composed of a header section immediately followed by a body section. The following figure shows the instanced 3D model layout (dashes indicate optional fields): +A tile is composed of a header section immediately followed by a body section. The following figure shows the Instanced 3D Model layout (dashes indicate optional fields): ![header layout](figures/header-layout.png) @@ -53,13 +53,13 @@ The 32-byte header contains the following fields: | Field name | Data type | Description | | --- | --- | --- | -| `magic` | 4-byte ANSI string | `"i3dm"`. This can be used to identify the arraybuffer as an instanced 3D model tile. | -| `version` | `uint32` | The version of the instanced 3D model format. It is currently `1`. | +| `magic` | 4-byte ANSI string | `"i3dm"`. This can be used to identify the arraybuffer as an Instanced 3D Model tile. | +| `version` | `uint32` | The version of the Instanced 3D Model format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | -| `featureTableJSONByteLength` | `uint32` | The length of the feature table JSON section in bytes. | -| `featureTableBinaryByteLength` | `uint32` | The length of the feature table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | -| `batchTableJSONByteLength` | `uint32` | The length of the batch table JSON section in bytes. Zero indicates that there is no batch table. | -| `batchTableBinaryByteLength` | `uint32` | The length of the batch table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | +| `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. | +| `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | +| `batchTableJSONByteLength` | `uint32` | The length of the Batch Table JSON section in bytes. Zero indicates that there is no Batch Table. | +| `batchTableBinaryByteLength` | `uint32` | The length of the Batch Table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | | `gltfFormat` | `uint32` | Indicates the format of the glTF field of the body. `0` indicates it is a url, `1` indicates it is embedded binary glTF. See the [glTF](#gltf) section below. | If `featureTableJSONByteLength` equals zero, or there is no `glTF`, the tile does not need to be rendered. @@ -70,19 +70,19 @@ Code for reading the header can be found in [Instanced3DModelTileContent](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Instanced3DModel3DTileContent.js) in the Cesium implementation of 3D Tiles. -## Feature table +## Feature Table -The feature table contains values for `i3dm` semantics used to create instanced models. -More information is available in the [feature table specification](../FeatureTable/README.md). +The Feature Table contains values for `i3dm` semantics used to create instanced models. +More information is available in the [Feature Table specification](../FeatureTable/README.md). -The `i3dm` feature table JSON schema is defined in [i3dm.featureTable.schema.json](../../schema/i3dm.featureTable.schema.json). +The `i3dm` Feature Table JSON schema is defined in [i3dm.featureTable.schema.json](../../schema/i3dm.featureTable.schema.json). ### Semantics #### Instance semantics These semantics map to an array of feature values that are used to create instances. The length of these arrays must be the same for all semantics and is equal to the number of instances. -The value for each instance semantic must be a reference to the feature table binary body; they cannot be embedded in the feature table JSON header. +The value for each instance semantic must be a reference to the Feature Table binary body; they cannot be embedded in the Feature Table JSON header. If a semantic has a dependency on another semantic, that semantic must be defined. If both `SCALE` and `SCALE_NON_UNIFORM` are defined for an instance, both scaling operations will be applied. @@ -170,7 +170,7 @@ Scaling can be applied to instances using the `SCALE` and `SCALE_NON_UNIFORM` se ### Examples -These examples show how to generate JSON and binary buffers for the feature table. +These examples show how to generate JSON and binary buffers for the Feature Table. #### Positions only @@ -237,15 +237,15 @@ var normalRightOct32PBinary = new Buffer(new Uint16Array([ var featureTableBinary = Buffer.concat([positionQuantizedBinary, normalUpOct32PBinary, normalRightOct32PBinary]); ``` -## Batch table +## Batch Table Contains metadata organized by `batchId` that can be used for declarative styling. See the [Batch Table](../BatchTable/README.md) reference for more information. ## glTF -The glTF asset to be instanced is stored after the feature table and batch table. +The glTF asset to be instanced is stored after the Feature Table and Batch Table. -[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Instanced 3D model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. +[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. [Binary glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) is an extension defining a binary container for glTF. Instanced 3D Model uses glTF 1.0 with the [KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF) extension. `header.gltfFormat` determines the format of the glTF field @@ -254,7 +254,7 @@ The glTF asset to be instanced is stored after the feature table and batch table In either case, `header.gltfByteLength` contains the length of the glTF field in bytes. -If the glTF asset is embedded, it must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the feature table or batch table if they are present. +If the glTF asset is embedded, it must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. ## File extension diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 1a78a056d..c14336087 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -12,7 +12,7 @@ * [Overview](#overview) * [Layout](#layout) * [Header](#header) -* [Feature table](#feature-table) +* [Feature Table](#feature-table) * [Semantics](#semantics) * [Point semantics](#point-semantics) * [Global semantics](#global-semantics) @@ -27,20 +27,20 @@ * [Positions and colors](#positions-and-colors) * [Quantized positions and oct-encoded normals](#quantized-positions-and-oct-encoded-normals) * [Batched points](#batched-points) - * [Per-point properties](#per-point-properties) -* [Batch table](#batch-table) + * [Per-point properties](#per-point-properties) +* [Batch Table](#batch-table) * [File extension](#file-extension) * [MIME type](#mime-type) ## Overview -The _point cloud_ tile format enables efficient streaming of massive point clouds for 3D visualization. Each point is defined by a position and by optional properties used to define its appearance, such as color and normal, as well as optional properties that define application-specific metadata. +The _Point Cloud_ tile format enables efficient streaming of massive point clouds for 3D visualization. Each point is defined by a position and by optional properties used to define its appearance, such as color and normal, as well as optional properties that define application-specific metadata. Using 3D Tiles terminology, each point is a _feature_. ## Layout -A tile is composed of a header section immediately followed by a body section. The following figure shows the point cloud layout (dashes indicate optional fields): +A tile is composed of a header section immediately followed by a body section. The following figure shows the Point Cloud layout (dashes indicate optional fields): ![](figures/layout.png) @@ -50,13 +50,13 @@ The 28-byte header contains the following fields: | Field name | Data type | Description | | --- | --- | --- | -| `magic` | 4-byte ANSI string | `"pnts"`. This can be used to identify the arraybuffer as a point cloud tile. | -| `version` | `uint32` | The version of the point cloud format. It is currently `1`. | +| `magic` | 4-byte ANSI string | `"pnts"`. This can be used to identify the arraybuffer as a Point Cloud tile. | +| `version` | `uint32` | The version of the Point Cloud format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | -| `featureTableJSONByteLength` | `uint32` | The length of the feature table JSON section in bytes. | -| `featureTableBinaryByteLength` | `uint32` | The length of the feature table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | -| `batchTableJSONByteLength` | `uint32` | The length of the batch table JSON section in bytes. Zero indicates that there is no batch table. | -| `batchTableBinaryByteLength` | `uint32` | The length of the batch table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | +| `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. | +| `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | +| `batchTableJSONByteLength` | `uint32` | The length of the Batch Table JSON section in bytes. Zero indicates that there is no Batch Table. | +| `batchTableBinaryByteLength` | `uint32` | The length of the Batch Table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | If `featureTableJSONByteLength` equals zero, the tile does not need to be rendered. @@ -64,19 +64,19 @@ The body section immediately follows the header section, and is composed of a `F Code for reading the header can be found in [PointCloud3DModelTileContent.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/PointCloud3DTileContent.js) in the Cesium implementation of 3D Tiles. -## Feature table +## Feature Table Contains per-tile and per-point values that define where and how to render points. -More information is available in the [feature table specification](../FeatureTable/README.md). +More information is available in the [Feature Table specification](../FeatureTable/README.md). -The `pnts` feature table JSON schema is defined in [pnts.featureTable.schema.json](../../schema/pnts.featureTable.schema.json). +The `pnts` Feature Table JSON schema is defined in [pnts.featureTable.schema.json](../../schema/pnts.featureTable.schema.json). ### Semantics #### Point semantics These semantics map to an array of feature values that define each point. The length of these arrays must be the same for all semantics and is equal to the number of points. -The value for each point semantic must be a reference to the feature table binary body; they cannot be embedded in the feature table JSON header. +The value for each point semantic must be a reference to the Feature Table binary body; they cannot be embedded in the Feature Table JSON header. If a semantic has a dependency on another semantic, that semantic must be defined. If both `POSITION` and `POSITION_QUANTIZED` are defined for a point, the higher precision `POSITION` will be used. @@ -130,7 +130,7 @@ Quantized positions can be mapped to model space using the following formula: ### Point colors -If more than one color semantic is defined, the precedence order is `RGBA`, `RGB`, `RGB565`, then `CONSTANT_RGBA`. For example, if a tile's feature table contains both `RGBA` and `CONSTANT_RGBA` properties, the runtime would render with per-point colors using `RGBA`. +If more than one color semantic is defined, the precedence order is `RGBA`, `RGB`, `RGB565`, then `CONSTANT_RGBA`. For example, if a tile's Feature Table contains both `RGBA` and `CONSTANT_RGBA` properties, the runtime would render with per-point colors using `RGBA`. If no color semantics are defined, the runtime is free to color points using an application-specific default color. @@ -148,7 +148,7 @@ module. ### Batched points -Points that make up distinct features of the point cloud may be batched together using the `BATCH_ID` semantic. For example, the points that make up a door in a house would all be assigned the same `BATCH_ID`, whereas points that make up a window would be assigned a different `BATCH_ID`. +Points that make up distinct features of the Point Cloud may be batched together using the `BATCH_ID` semantic. For example, the points that make up a door in a house would all be assigned the same `BATCH_ID`, whereas points that make up a window would be assigned a different `BATCH_ID`. This is useful for per-object picking and storing application-specific metadata for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request on a per-object instead of per-point basis. The `BATCH_ID` semantic may have a `componentType` of `UNSIGNED_BYTE`, `UNSIGNED_SHORT`, or `UNSIGNED_INT`. When `componentType` is not present, `UNSIGNED_SHORT` is used. @@ -156,7 +156,7 @@ The global semantic `BATCH_LENGTH` defines the number of unique `batchId` values ### Examples -These examples show how to generate JSON and binary buffers for the feature table. +These examples show how to generate JSON and binary buffers for the Feature Table. #### Positions only @@ -246,7 +246,7 @@ var featureTableBinary = Buffer.concat([positionQuantizedBinary, normalOct16PBin #### Batched points -In this example, the first two points have a `batchId` of 0, and the next two points have a `batchId` of 1. Note that the batch table only has two names: +In this example, the first two points have a `batchId` of 0, and the next two points have a `batchId` of 1. Note that the Batch Table only has two names: ```javascript var featureTableJSON = { @@ -284,7 +284,7 @@ var batchTableJSON = { #### Per-point properties -In this example, each of the 4 points will have metadata stored in the batch table JSON and binary. +In this example, each of the 4 points will have metadata stored in the Batch Table JSON and binary. ```javascript var featureTableJSON = { @@ -306,12 +306,12 @@ var batchTableJSON = { }; ``` -## Batch table +## Batch Table -The _batch table_ contains application-specific metadata, indexable by `batchId`, that can be used for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. +The _Batch Table_ contains application-specific metadata, indexable by `batchId`, that can be used for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request. -* If the `BATCH_ID` semantic is defined, the batch table stores metadata for each `batchId`, and the length of the batch table arrays will equal `BATCH_LENGTH`. -* If the `BATCH_ID` semantic is not defined, then the batch table stores per-point metadata, and the length of the batch table arrays will equal `POINTS_LENGTH`. +* If the `BATCH_ID` semantic is defined, the Batch Table stores metadata for each `batchId`, and the length of the Batch Table arrays will equal `BATCH_LENGTH`. +* If the `BATCH_ID` semantic is not defined, then the Batch Table stores per-point metadata, and the length of the Batch Table arrays will equal `POINTS_LENGTH`. See the [Batch Table](../BatchTable/README.md) reference for more information. diff --git a/schema/pnts.featureTable.schema.json b/schema/pnts.featureTable.schema.json index 988507a2e..e466394b6 100644 --- a/schema/pnts.featureTable.schema.json +++ b/schema/pnts.featureTable.schema.json @@ -3,7 +3,7 @@ "id" : "pnts.featureTable.schema.json", "title" : "Point Cloud Feature Table", "type" : "object", - "description" : "A set of point cloud semantics that contains values defining the position and appearance properties for points in a tile.", + "description" : "A set of Point Cloud semantics that contains values defining the position and appearance properties for points in a tile.", "allOf" : [{ "$ref" : "featureTable.schema.json" }, { From 7169305f4a84b3cce9ca2747628ec88fa7cbdae6 Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Tue, 24 Apr 2018 19:38:24 -0400 Subject: [PATCH 14/37] Other edits --- README.md | 2 +- TileFormats/BatchTable/README.md | 12 ++++++------ TileFormats/FeatureTable/README.md | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 310f8831f..225696b4d 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ Topic | Status Topic | Status ---|--- 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) -[OpenStreetMap](TileFormats/OpenStreetMap/README.md), | :white_circle: **Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md) +[OpenStreetMap](TileFormats/OpenStreetMap/README.md) | :white_circle: **Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md) Stars | :white_circle: **Not started** For spec work in progress, [watch this repo](https://github.com/AnalyticalGraphicsInc/3d-tiles/subscription) and browse the [issues](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues). diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 52d157738..724a588d5 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -162,7 +162,7 @@ var cartographicOfFeature = positionArray.subarray(batchId * numberOfComponents, ## Batch Table Hierarchy -The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The Batch Table hierarchy provides more flexibility for these cases. +The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The Batch Table Hierarchy provides more flexibility for these cases. ### Motivation @@ -306,7 +306,7 @@ Note that this is different than a tile's `batchLength`, which is the total numb `classIds` is an array of integers of length `instancesLength`. Each value specifies the instances's class as an index in the `classes` array. -**Implementation Note**: The Batch Table hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. +**Implementation Note**: The Batch Table Hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. `parentCounts` is an array of integers of length `instancesLength`. Each value specifies the number of parents that instance has. If omitted, `parentCounts` is implicitly an array of length `instancesLength`, where all values are 1. @@ -383,7 +383,7 @@ carType : "sedan" carColor : "red" ``` -Batch Table hierarchy, parking lot: +Batch Table Hierarchy, parking lot: ![batch table hierarchy parking lot](figures/batch-table-hierarchy-parking-lot.png) @@ -467,7 +467,7 @@ block_district : ["central"] Since the block's `parentId` is also 9, it does not have a parent and the traversal is complete. -Batch Table hierarchy, block: +Batch Table Hierarchy, block: ![batch table hierarchy block](figures/batch-table-hierarchy-block.png) @@ -483,7 +483,7 @@ More detailed descriptions are provided in the [Styling Spec](../../Styling/READ ### Notes -* Since the Batch Table hierarchy is an extension to the standard batch table, it is still possible to store per-feature properties alongside the `HIERARCHY` object: +* Since the Batch Table Hierarchy is an extension to the standard batch table, it is still possible to store per-feature properties alongside the `HIERARCHY` object: ``` { @@ -494,7 +494,7 @@ More detailed descriptions are provided in the [Styling Spec](../../Styling/READ } ``` -* The Batch Table hierarchy is self-contained within the tile. It is not possible to form metadata hierarchy across different tiles in the tileset. +* The Batch Table Hierarchy is self-contained within the tile. It is not possible to form metadata hierarchy across different tiles in the tileset. ## Implementation notes diff --git a/TileFormats/FeatureTable/README.md b/TileFormats/FeatureTable/README.md index f695d80bb..44fc8f89b 100644 --- a/TileFormats/FeatureTable/README.md +++ b/TileFormats/FeatureTable/README.md @@ -47,7 +47,7 @@ Feature Table values can be represented in the JSON header in three different wa * This is used for per-feature semantics like `"POSITION"` in Instanced 3D Model. Above, each `POSITION` refers to a `float32[3]` data type so there are three features: `Feature 0's position`=`(1.0, 0.0, 0.0)`, `Feature 1's position`=`(0.0, 1.0, 0.0)`, `Feature 2's position`=`(0.0, 0.0, 1.0)`. 3. A reference to data in the binary body, denoted by an object with a `byteOffset` property, e.g., `"SCALE" : { "byteOffset" : 24}`. * `byteOffset` is a zero-based offset relative to the start of the binary body. - * The semantic defines the allowed data type, e.g., when `"POSITION"` in instanced model refers to the binary body, the component type is `FLOAT` and the number of components is `3`. + * The semantic defines the allowed data type, e.g., when `"POSITION"` in Instanced 3D Model refers to the binary body, the component type is `FLOAT` and the number of components is `3`. * Some semantics allow for overriding the implicit `componentType`. These cases are specified in each tile format, e.g., `"BATCH_ID" : { "byteOffset" : 24, "componentType" : "UNSIGNED_BYTE"}`. The only valid properties in the JSON header are the defined semantics by the tile format. Application-specific data should be stored in the Batch Table. From d3fce8835137e6a54fb81d7a9b3a411b86ab2193 Mon Sep 17 00:00:00 2001 From: ggetz Date: Thu, 26 Apr 2018 12:26:40 -0400 Subject: [PATCH 15/37] Spec clarification edits --- README.md | 130 ++++++++++++++++++++----- Styling/README.md | 13 ++- TileFormats/Batched3DModel/README.md | 10 +- TileFormats/Composite/README.md | 2 +- TileFormats/Instanced3DModel/README.md | 4 +- TileFormats/PointCloud/README.md | 4 +- schema/batchTable.schema.json | 6 ++ schema/boundingVolume.schema.json | 6 ++ schema/extension.schema.json | 3 +- schema/featureTable.schema.json | 11 ++- schema/tileset.schema.json | 18 ++++ 11 files changed, 167 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index e6670434e..d454efb15 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [Introduction](#introduction) * [File extensions and MIME types](#file-extensions-and-mime-types) * [JSON encoding](#json-encoding) -* [URLs](#urls) +* [URIs](#uris) * [Tiles](#tiles) * [Coordinate system and units](#coordinate-system-and-units) * [Tile transform](#tile-transform) @@ -83,6 +83,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [Octrees](#octrees) * [Grids](#grids) * [Tile formats](#tile-formats) +* [Specifying extensions and application specific extras](#specifying-extensions-and-application-specific-extras) * [Declarative styling](#declarative-styling) * [Roadmap Q&A](#roadmap-qa) * [Acknowledgments](#acknowledgments) @@ -168,16 +169,18 @@ _TODO: include a screenshot of each bounding volume type._ 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. -A 3D tileset consists of at least one tileset `.json` file specifying the metadata and the tree of tiles, as well as any referenced tile content files which may be any valid tile format, defined in JSON as described below. +A 3D tileset consists of at least one tileset JSON file specifying the metadata and the tree of tiles, as well as any referenced tile content files which may be any valid tile format, defined in JSON as described below. Optionally, a separate 3D Tile Style may be applied to a tileset. ## File extensions and MIME types * Tileset files use the `.json` extension and the `application/json` MIME type. -* A tile's referenced content may be an external tileset `.json` file (`application/json`), or the file type and MIME format specific to the [tile format](#tile-formats). +* A tile's referenced content may be an external tileset JSON file (`application/json`), or the file type and MIME format specific to the [tile format](#tile-formats). * Tileset style files use the `.json` extension and the `application/json` MIME type. +Explicit file extensions are optional for tileset and tile content files. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. + ## JSON encoding 3D Tiles has the following restrictions on JSON formatting and encoding. @@ -186,11 +189,13 @@ Optionally, a separate 3D Tile Style may be applied to a tileset. 2. All strings defined in this spec (properties names, enums) use only ASCII charset and must be written as plain text. 3. Names (keys) within JSON objects must be unique, i.e., duplicate keys aren't allowed. -## URLs +## URIs + +3D Tiles use URIs to reference tile content. These URIs may point to [relative external references (RFC3986)] or be data URIs that embed resources in the JSON. Embedded resources use [the "data" URI scheme (RFC2397)](https://tools.ietf.org/html/rfc2397). -3D Tiles use URLs to reference tile content. +When the URI is relative, its base is always relative to the referring tileset JSON file. -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. +Client implementations are required to support relative external references and embedded resources. Optionally, client implementations may support other schemes (such as `http://`). All URIs must be valid and resolvable. ## Tiles @@ -227,7 +232,7 @@ Tiles consist of content, metadata used to render the tile, and any children til } ``` -The `boundingVolume` defines a volume enclosing the tile content, and is used to determine which tiles to render at runtime. 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) the [WGS84 ellipsoid](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf). Besides `region`, other bounding volumes, such as `box` and `sphere`, may be used. +The `boundingVolume` defines a volume enclosing the tile content, and is used to determine which tiles to render at runtime. The `boundingVolume.region` property is an array of six numbers that define the bounding geographic region in [EPSG:4326](http://spatialreference.org/ref/epsg/wgs-84/) 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) the [WGS84 ellipsoid](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf). Besides `region`, other bounding volumes, such as `box` and `sphere`, may be used. 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 compute _Screen-Space Error_ (SSE), i.e., the error measured in pixels. The SSE determines _Hierarchical Level of Detail_ (HLOD) refinement, i.e., if a tile is sufficiently detailed for the current view or if its children should be considered. @@ -255,20 +260,20 @@ An optional `transform` property (not shown above) defines a 4x4 affine transfor ### Coordinate system and units -3D Tiles supports use cases in both geodetic as well as Cartesian coordinate systems. - 3D Tiles uses a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (see the [Tile transform](#tile-transform) section). A tileset's global coordinate system will often be [WGS84 ellipsoidal coordinate system](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for use with a modeling tool without a geospatial context. #### Tile content -`b3dm` and `i3dm` tiles embed glTF. According to the [glTF spec](https://github.com/KhronosGroup/glTF/tree/master/specification/1.0#coordinate-system-and-units), glTF uses a right-handed coordinate system and defines the _y_ axis as up. By default, embedded models are considered to be _y_-up, but in order to support a variety of source data, including models defined directly in WGS84 coordinates, embedded glTF models may be defined as _x_-up, _y_-up, or _z_-up with the `asset.gltfUpAxis` property of tileset JSON. +`b3dm` and `i3dm` tiles embed glTF. According to the [glTF spec](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units), glTF uses a right-handed coordinate system and defines the _y_ axis as up. By default, embedded models are considered to be _y_-up, but in order to support a variety of source data, including models defined directly in WGS84 coordinates, embedded glTF models may be defined as _x_-up, _y_-up, or _z_-up with the `asset.gltfUpAxis` property of tileset JSON. To transform from a glTF y-up to a 3D Tiles z-up coordinate system, the following matrix transform is applied: ``` -[(1, 0, 0, 0), - (0, 0, -1, 0), - (0, 1, 0, 0), - (0, 0, 0, 1)] +[ +1.0, 0.0, 0.0, 0.0, +0.0, 0.0, -1.0, 0.0, +0.0, 1.0, 0.0, 0.0, +0.0, 0.0, 0.0, 1.0 +] ``` Tile transforms are applied after the conversion between coordinate systems is resolved. @@ -291,9 +296,9 @@ The `transform` property applies to * `tile.content` * Each feature's position. * 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). - * `content.boundingVolume`, except when `content.boundingVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates. -* `tile.boundingVolume`, except when `tile.boundingVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates. -* `tile.viewerRequestVolume`, except when `tile.viewerRequestVolume.region` is defined, which is explicitly in WGS84 / EPSG:4326 coordinates. + * `content.boundingVolume`, except when `content.boundingVolume.region` is defined, which is explicitly in EPSG:4326 coordinates. +* `tile.boundingVolume`, except when `tile.boundingVolume.region` is defined, which is explicitly in EPSG:4326 coordinates. +* `tile.viewerRequestVolume`, except when `tile.viewerRequestVolume.region` is defined, which is explicitly in EPSG:4326 coordinates. The `transform` property does not apply to `geometricError`—i.e., the scale defined by `transform` does not scale the geometric error—the geometric error is always defined in meters. @@ -413,7 +418,7 @@ For more on request volumes, see the [sample tileset](https://github.com/Analyti ## Tileset JSON Files -3D Tiles use one main tileset `.json` file as the entry point to define a tileset. +3D Tiles use one main tileset JSON file as the entry point to define a tileset. Both entry and external tileset JSON files are not required to follow a specific naming convention. See the [schema](schema) for the detailed tileset JSON schema. @@ -478,7 +483,7 @@ See the [Q&A below](#will-a-tileset-file-be-part-of-the-final-3d-tiles-spec) for ### External tilesets -To create a tree of trees, a tile's `content.url` can point to an external tileset (the url of another tileset `.json` file). This enables, for example, storing each city in a tileset and then having a global tileset of tilesets. +To create a tree of trees, a tile's `content.url` can point to an external tileset (the url of another tileset JSON file). This enables, for example, storing each city in a tileset and then having a global tileset of tilesets. ![](figures/tilesets.jpg) @@ -583,6 +588,87 @@ Each tile's `content.url` property points to a tile that is one of the formats l A tileset can contain any combination of tile formats. 3D Tiles may also support different formats in the same tile using a [Composite](TileFormats/Composite/README.md) tile. +## Specifying extensions and application specific extras + +3D Tiles defines extensions to allow the the base specification to have extensibility for new features, as well as extras to allow for application specific metadata. + +### Extensions + +Extensions allow the base specification to be extended with new features. The optional `extensions` dictionary property may be added to a 3D Tiles JSON object, which contains the name of the extensions and the extension specific objects. The following example shows a tile object with a hypothetical vendor extension which specifies a separate collision volume. +```JSON +{ + "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": { + "url": "building.b3dm" + }, + "extensions": { + "VENDOR_collision_volume": { + "box": [ + 0, 0, 6.8, + 3.8, 0, 0, + 0, 3.8, 0, + 0, 0, 13.5 + ] + } + } +} +``` + +All extensions used in a tileset or any descendent external tilesets must be listed in the tileset file in the top-level `extensionsUsed` array property, e.g., + +```JSON +{ + "extensionsUsed": [ + "VENDOR_collision_volume" + ] +} +``` + +All extensions required to load and render a tileset or any descendent external tilesets must also be listed in the tileset file in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. + +### Extras + +The `extras` property allows application specific metadata to be added to a 3D Tiles JSON object. The following example shows a tile object with an additional application specific name property. +```JSON +{ + "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": { + "url": "building.b3dm" + }, + "extras": { + "name": "Empire State Building" + } +} +``` + ## Declarative styling

@@ -603,10 +689,6 @@ This colors features with a temperature above 90 as red and the others as white. For complete details, see the [Declarative Styling](Styling/README.md) spec. -## Specifying Extensions and Application-Specific Extras - -3D Tiles defines extensions to allow the base specification to have extensibility for new features, as well as extras to allow for application specific metadata. - ## Roadmap Q&A * [General Q&A](#general-qa) @@ -684,7 +766,7 @@ Supporting heterogeneous datasets with both inter-tile (different tile formats i Yes. There will always be a need to know metadata about the tileset and about tiles that are not yet loaded, e.g., so only visible tiles can be requested. However, when scaling to millions of tiles, a single tileset file with metadata for the entire tree would be prohibitively large. -3D Tiles already supports trees of trees. `content.url` can point to another tileset `.json` file, which enables conversion tools to chunk up a tileset into any number of `.json` files that reference each other. +3D Tiles already supports trees of trees. `content.url` can point to another tileset JSON file, which enables conversion tools to chunk up a tileset into any number of JSON files that reference each other. There's a few other ways we may solve this: * Moving subtree metadata to the tile payload instead of the tileset file. Each tile would have a header with, for example, the bounding volumes of each child, and perhaps grandchildren, and so on. diff --git a/Styling/README.md b/Styling/README.md index 97ba5af45..00bf0ade3 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -1332,11 +1332,20 @@ For example: } ``` -> Implementation Note: Point cloud styling engines may often use a shader (GLSL) implementation, however some features of the expression language are not possible in pure a GLSL implementation. Features that must account for these inconsistencies include evaluation of `isNan` and `isFinite` (GLSL 2.0+ supports `isnan` and `isinf` for these functions respectively); the types `null` and `undefined`; strings, including accessing object properties (`color()['r']`) and batch table values; regular expressions; arrays of lengths other than 2, 3, or 4; mismatched type comparisons (`float` to `bool`); and handling of "index out of bounds" errors. +> Implementation Note: Point cloud styling engines may often use a shader (GLSL) implementation, however some features of the expression language are not possible in pure a GLSL implementation. Features that must account for these inconsistencies include +> * Evaluation of `isNan` and `isFinite` (GLSL 2.0+ supports `isnan` and `isinf` for these functions respectively) +> * The types `null` and `undefined` +> * Strings, including accessing object properties (`color()['r']`) and batch table values +> * Regular expressions +> * Arrays of lengths other than 2, 3, or 4 +> * Mismatched type comparisons (`float` to `bool`) +> * Handling of "index out of bounds" errors ## File extension and MIME type -* Tileset styles use the `.json` extension and the `application/json` mime type. +Tileset styles use the `.json` extension and the `application/json` mime type. + +An explicit file extension is optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. ## Acknowledgments diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 13741d14f..7be52416d 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -76,7 +76,7 @@ These semantics define global properties for all features. | Semantic | Data Type | Description | Required | | --- | --- | --- | --- | | `BATCH_LENGTH` | `uint32` | The number of distinguishable models, also called features, in the batch. If the Binary glTF does not have a `batchId` attribute, this field _must_ be `0`. | :white_check_mark: Yes. | -| `RTC_CENTER` | `float32[3]` | A 3-component array of numbers defining the center position when instance positions are defined relative-to-center. | :red_circle: No. | +| `RTC_CENTER` | `float32[3]` | A 3-component array of numbers defining the center position when positions are defined relative-to-center. | :red_circle: No. | ## Batch Table @@ -134,17 +134,15 @@ When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0` ### Coordinate reference system (CRS) -Vertex positions are defined according to a right-handed coordinate system where the Y-axis is up [2]. +Vertex positions are defined according to a right-handed coordinate system where the _y_-axis is up [2]. -Vertex positions may be defined relative-to-center for high-precision rendering [1]. If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. - -> Implementation Note: Clients may also use the glTF [CESIUM_RTC](https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Vendor/CESIUM_RTC) extension and define points relative to center. +Vertex positions may be defined relative-to-center for high-precision rendering [1]. If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. When `RTC_CENTER` is used, vertex positions are defined according to a coordinate system where the _z_-axis is up. ## File extension and MIME type Batched 3D Model tiles use the `.b3dm` extension and `application/octet-stream` MIME type. -The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. +An explicit file extension is optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. ## Resources diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index 5e5bbd405..f84e57673 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -64,7 +64,7 @@ Refer to the spec for each tile format for more details. Composite tiles use the `.cmpt` extension and `application/octet-stream` MIME type. -The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. +An explicit file extension is optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. ## Acknowledgments diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 1ddfb0954..5fb980c8c 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -130,7 +130,7 @@ A box transformed into a rotated basis #### Oct-encoded normal vectors If `NORMAL_UP` and `NORMAL_RIGHT` are not defined for an instance, its orientation may be stored as oct-encoded normals in `NORMAL_UP_OCT32P` and `NORMAL_RIGHT_OCT32P`. -These define `up` and `right` using the oct-encoding described in [*A Survey of Efficient Representations of Independent Unit Vectors*](http://jcgt.org/published/0003/02/01/). Oct-encoded values are stored in unsigned, unnormalized range (`[0, 65535]` or `[0, 255]`) and then converted to a signed normalized range (`[-1.0, 1.0]`) at runtime. +These define `up` and `right` using the oct-encoding described in [*A Survey of Efficient Representations of Independent Unit Vectors*](http://jcgt.org/published/0003/02/01/). Oct-encoded values are stored in unsigned, unnormalized range (`[0, 65535]`) and then mapped to a signed normalized range (`[-1.0, 1.0]`) at runtime. > An implementation for encoding and decoding these unit vectors can be found in Cesium's [AttributeCompression](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/AttributeCompression.js) module. @@ -259,7 +259,7 @@ If the glTF asset is embedded, it must be 8-byte aligned so that glTF's byte-ali Instanced 3D models tiles use the `.i3dm` extension and `application/octet-stream` MIME type. -The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. +An explicit file extension is optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. ## Implementation examples diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 5b84b473e..5e721c2f4 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -142,7 +142,7 @@ The normals will be transformed using the inverse transpose of the tileset trans #### Oct-encoded normal vectors -Oct-encoding is described in [*A Survey of Efficient Representations of Independent Unit Vectors*](http://jcgt.org/published/0003/02/01/). Oct-encoded values are stored in unsigned, unnormalized range (`[0, 65535`] or `[0, 255]`) and then converted to a signed normalized range (`[-1.0, 1.0]`) at runtime. +Oct-encoding is described in [*A Survey of Efficient Representations of Independent Unit Vectors*](http://jcgt.org/published/0003/02/01/). Oct-encoded values are stored in unsigned, unnormalized range (`[0, 255]`) and then mapped to a signed normalized range (`[-1.0, 1.0]`) at runtime. > An implementation for encoding and decoding these unit vectors can be found in Cesium's [AttributeCompression](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/AttributeCompression.js) module. @@ -320,4 +320,4 @@ See the [Batch Table](../BatchTable/README.md) reference for more information. Point cloud tiles use the `.pnts` extension and `application/octet-stream` MIME type. -The file extension is optional. Valid implementations ignore it and identify a content's format by the `magic` field in its header. +An explicit file extension is optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. diff --git a/schema/batchTable.schema.json b/schema/batchTable.schema.json index 11d294383..971f903bd 100644 --- a/schema/batchTable.schema.json +++ b/schema/batchTable.schema.json @@ -90,6 +90,12 @@ "additionalProperties" : { "$ref" : "#/definitions/property" } + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "required" : ["name", "length", "instances"] diff --git a/schema/boundingVolume.schema.json b/schema/boundingVolume.schema.json index 345b78c52..ab6989767 100644 --- a/schema/boundingVolume.schema.json +++ b/schema/boundingVolume.schema.json @@ -31,6 +31,12 @@ }, "minItems" : 4, "maxItems" : 4 + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" } }, "oneOf" : [{ diff --git a/schema/extension.schema.json b/schema/extension.schema.json index ca2dccdd9..7a0af551d 100644 --- a/schema/extension.schema.json +++ b/schema/extension.schema.json @@ -3,8 +3,7 @@ "title": "Extension", "type": "object", "description": "Dictionary object with extension-specific objects.", - "properties": { - }, + "properties": {}, "additionalProperties": { "type": "object" } diff --git a/schema/featureTable.schema.json b/schema/featureTable.schema.json index 2839cdd28..751288a93 100644 --- a/schema/featureTable.schema.json +++ b/schema/featureTable.schema.json @@ -60,5 +60,14 @@ }] }] } - } + }, + "properties" : { + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" + } + }, + "additionalProperties" : false } diff --git a/schema/tileset.schema.json b/schema/tileset.schema.json index 1251645fb..cf2f12555 100644 --- a/schema/tileset.schema.json +++ b/schema/tileset.schema.json @@ -25,6 +25,24 @@ "description" : "The root node.", "$ref" : "tile.schema.json" }, + "extensionsUsed": { + "type": "array", + "description": "Names of 3D Tiles extensions used somewhere in this tileset.", + "items": { + "type": "string" + }, + "uniqueItems": true, + "minItems": 1 + }, + "extensionsRequired": { + "type": "array", + "description": "Names of 3D Tiles extensions required to properly load this tileset.", + "items": { + "type": "string" + }, + "uniqueItems": true, + "minItems": 1 + }, "extensions" : { "$ref": "extension.schema.json" }, From 026d7dd2495009e64511d65c00876f0cdd372614 Mon Sep 17 00:00:00 2001 From: ggetz Date: Thu, 3 May 2018 13:38:58 -0400 Subject: [PATCH 16/37] Address CRS, padding, boundingVolumes, geometric error --- README.md | 143 +++++++++++++++++++------ TileFormats/BatchTable/README.md | 17 ++- TileFormats/Batched3DModel/README.md | 58 +++++----- TileFormats/Composite/README.md | 5 + TileFormats/FeatureTable/README.md | 17 ++- TileFormats/Instanced3DModel/README.md | 21 +++- TileFormats/PointCloud/README.md | 9 ++ figures/BoundingBox.jpg | Bin 0 -> 54354 bytes figures/BoundingRegion.jpg | Bin 0 -> 50289 bytes figures/BoundingSphere.jpg | Bin 0 -> 59383 bytes 10 files changed, 194 insertions(+), 76 deletions(-) create mode 100644 figures/BoundingBox.jpg create mode 100644 figures/BoundingRegion.jpg create mode 100644 figures/BoundingSphere.jpg diff --git a/README.md b/README.md index d454efb15..d6636a88f 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,13 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [File extensions and MIME types](#file-extensions-and-mime-types) * [JSON encoding](#json-encoding) * [URIs](#uris) +* [Units](#units) +* [Coordinate reference system (CRS)](#coordinate-reference-system-crs) * [Tiles](#tiles) + * [Bounding volumes](#bounding-volumes) + * [Region](#region) + * [Box](#box) + * [Sphere](#sphere) * [Coordinate system and units](#coordinate-system-and-units) * [Tile transform](#tile-transform) * [Viewer request volume](#viewer-request-volume) @@ -82,6 +88,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [Quadtrees](#quadtrees) * [Octrees](#octrees) * [Grids](#grids) + * [Geometric error](#geometric-error) * [Tile formats](#tile-formats) * [Specifying extensions and application specific extras](#specifying-extensions-and-application-specific-extras) * [Declarative styling](#declarative-styling) @@ -163,11 +170,14 @@ In 3D Tiles, a _tileset_ is a set of _tiles_ organized in a spatial data structu ![](figures/tree.png) -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. +To support tight fitting volumes for a variety of datasets—from regularly divided terrain to cities not aligned with a line of latitude or longitude 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 latitudes, longitudes, and heights. -_TODO: include a screenshot of each bounding volume type._ +| Bounding box | Bounding sphere | Bounding region | +|:---:|:---:|:---:| +| ![Bounding Box](figures/BoundingBox.jpg) | ![Bounding Sphere](figures/BoundingSphere.jpg) | ![Bounding Region](figures/BoundingRegion.jpg) | -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. + +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 rendering draw call overhead. A 3D tileset consists of at least one tileset JSON file specifying the metadata and the tree of tiles, as well as any referenced tile content files which may be any valid tile format, defined in JSON as described below. @@ -197,6 +207,18 @@ When the URI is relative, its base is always relative to the referring tileset J Client implementations are required to support relative external references and embedded resources. Optionally, client implementations may support other schemes (such as `http://`). All URIs must be valid and resolvable. +## Units + +The unit for all linear distances is meters. + +All angles are in radians. + +## Coordinate reference system (CRS) + +3D Tiles uses a global and local coordinate systems. Coordinates for top-level tileset and tile properties defined by bounding volumes are specified using a **global** coordinate system, the coordinate system for which depends on the type of [bounding volume](#bounding-volumes) used. A tileset's global coordinate system will often be [WGS84 ellipsoidal coordinate system](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be. + +Tile content uses a [**local** coordinate system](#local-coordinate-systems) independent of the global tileset coordinate system. An additional [tile transform](#tile-transform) may be applied to transform a tile's local coordinate system to the parent tile's coordinate system. + ## Tiles Tiles consist of content, metadata used to render the tile, and any children tiles. The following example shows one non-leaf tile. @@ -232,42 +254,101 @@ Tiles consist of content, metadata used to render the tile, and any children til } ``` -The `boundingVolume` defines a volume enclosing the tile content, and is used to determine which tiles to render at runtime. The `boundingVolume.region` property is an array of six numbers that define the bounding geographic region in [EPSG:4326](http://spatialreference.org/ref/epsg/wgs-84/) 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) the [WGS84 ellipsoid](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf). Besides `region`, other bounding volumes, such as `box` and `sphere`, may be used. +The `boundingVolume` defines a volume enclosing the tile content, and is used to determine which tiles to render at runtime. The above example uses a `region` volume, but other [bounding volumes](#bounding-volumes), such as `box` or `sphere`, may be used. -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 compute _Screen-Space Error_ (SSE), i.e., the error measured in pixels. The SSE determines _Hierarchical Level of Detail_ (HLOD) refinement, i.e., if a tile is sufficiently detailed for the current view or if its children should be considered. +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 compute _Screen-Space Error_ (SSE), i.e., the error measured in pixels. The SSE determines _Hierarchical Level of Detail_ (HLOD) refinement, i.e., if a tile is sufficiently detailed for the current view or if its children should be considered, see [Geometric error](#geometric-error). -An optional `viewerRequestVolume` property (not shown above) defines a volume, using the same schema as `boundingVolume`, that the viewer must be inside of before the tile's content will be requested and before the tile will be refined based on `geometricError`. See the [Viewer request volume](#viewer-request-volume) section. +The optional `viewerRequestVolume` property (not shown above) defines a volume, using the same schema as `boundingVolume`, that the viewer must be inside of before the tile's content will be requested and before the tile will be refined based on `geometricError`. See the [Viewer request volume](#viewer-request-volume) section. 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. -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). +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 uri. 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). -The url can be another tileset JSON to create a tileset of tilesets. See [External tilesets](#external-tilesets). +The uri can be another tileset JSON to create a tileset of tilesets. See [External tilesets](#external-tilesets). 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 else as an external tileset if the content is JSON. -`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. +The `content.boundingVolume` property defines an optional [bounding volume](#bounding-volumes) 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. When it is not defined, the tile's bounding volume is still used for culling (see [Grids](#grids)). -![](figures/contentsBox.png) +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. -`content.boundingVolume` is optional. When it is not defined, the tile's bounding volume is still used for culling (see [Grids](#grids)). +![](figures/contentsBox.png) -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. +The 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. -`children` is an array of objects that define child tiles. See the [tileset.json section below](#tilesetjson). +The `children` property is an array of objects that define child tiles. See the [tileset.json section below](#tilesetjson). ![](figures/tile.png) -### Coordinate system and units +### Bounding volumes + +Bounding volume objects are used to defined an enclosing volume, and must specify exactly one of the following properties. + +#### Region -3D Tiles uses a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (see the [Tile transform](#tile-transform) section). A tileset's global coordinate system will often be [WGS84 ellipsoidal coordinate system](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for use with a modeling tool without a geospatial context. +The `boundingVolume.region` property is an array of six numbers that define the bounding geographic region in [EPSG:4326](http://spatialreference.org/ref/epsg/wgs-84/) coordinates with the order `[west, south, east, north, minimum height, maximum height]`. Latitudes and longitudes are in radians, and heights are in meters above (or below) the [WGS84 ellipsoid](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf). -#### Tile content +```JSON +"boundingVolume": { + "region": [ + -1.3197004795898053, + 0.6988582109, + -1.3196595204101946, + 0.6988897891, + 0, + 20 + ] +} +``` -`b3dm` and `i3dm` tiles embed glTF. According to the [glTF spec](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units), glTF uses a right-handed coordinate system and defines the _y_ axis as up. By default, embedded models are considered to be _y_-up, but in order to support a variety of source data, including models defined directly in WGS84 coordinates, embedded glTF models may be defined as _x_-up, _y_-up, or _z_-up with the `asset.gltfUpAxis` property of tileset JSON. +![Bounding Region](figures/BoundingRegion.jpg) -To transform from a glTF y-up to a 3D Tiles z-up coordinate system, the following matrix transform is applied: +#### Box + +The `boundingVolume.box` property is an array of 12 numbers that define an oriented bounding box in a right-handed 3-axis (x, y, z) Cartesian coordinate system where the _z_-axis is up. The first three elements define the x, y, and z values for the center of the box. The next three elements (with indices 3, 4, and 5) define the _x_-axis direction and half-length. The next three elements (indices 6, 7, and 8) define the _y_-axis direction and half-length. The last three elements (indices 9, 10, and 11) define the _z_-axis direction and half-length. + +```JSON +"boundingVolume": { + "box": [ + 0, 0, 10, + 100, 0, 0, + 0, 100, 0, + 0, 0, 10 + ] +} ``` + +![Bounding Box](figures/BoundingBox.jpg) + +#### Sphere + +The `boundingVolume.sphere` property is an array of four numbers that define a bounding sphere. The first three elements define the x, y, and z values for the center of the sphere in a right-handed 3-axis (x, y, z) Cartesian coordinate system where the _z_-axis is up. The last element (with index 3) defines the radius in meters. + +```JSON +"boundingVolume": { + "sphere": [ + 0, + 0, + 10, + 141.4214 + ] +} +``` + +![Bounding Sphere](figures/BoundingSphere.jpg) + +### Local coordinate systems + +3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (additionally, see the [Tile transform](#tile-transform) section). + +Some tile content types such as [Batched 3D Model](TileFormats/Batched3DModel/README.md) and [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) embed glTF. According to the [glTF spec](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units), glTF uses a right-handed coordinate system and defines the _y_ axis as up. By default, the vertex positions of embedded models are defined according toto a right-handed coordinate system where the _y_-axis is up. + +In order to support a variety of source data, including models defined with geographical coordinate systems, vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF. + +> Implementation note: Using the `CESIUM_z_up` extension is preferred to transforming the vertex positions to a _z_-up coordinate system at runtime. + +If the `CESIUM_z_up` glTF extension is not used, model vertex positions must be transformed to be consistent with 3D Tiles' coordinate system. To transform coordinates from a glTF _y_-up system to a 3D Tiles' _z_-up system, rotate the positions about the _x_-axis by ϖ/2 radians. Equivalently, apply the following matrix transform: +```json [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, @@ -278,14 +359,6 @@ To transform from a glTF y-up to a 3D Tiles z-up coordinate system, the followin Tile transforms are applied after the conversion between coordinate systems is resolved. -> Implementation Note: In general, an implementation should transform glTF assets to _z_-up at runtime to be consistent with the _z_-up coordinate system of the bounding volume hierarchy. - -The unit for all linear distances is meters. - -All angles are in radians. - -3D Tiles does 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. - ### Tile transform To support local coordinate systems—e.g., so a building tileset inside a city tileset can be defined in its own coordinate system, and a point cloud tileset inside the building could, again, be defined in its own coordinate system—each tile has an optional `transform` property. @@ -469,11 +542,11 @@ Here is a subset of the tileset file used for [Canary Wharf](http://cesiumjs.org The top-level object in the tileset JSON has four properties: `asset`, `properties`, `geometricError`, and `root`. -`asset` is an object containing properties with metadata about the entire tileset. Its `version` property is a string that defines the 3D Tiles version. The version defines the JSON schema for the tileset file and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. The `gltfUpAxis` property is an optional string that specifies the up-axis of glTF models contained in the tileset. +`asset` is an object containing properties with metadata about the entire tileset. The `asset.version` property is a string that defines the 3D Tiles version, which specifies the JSON schema for the tileset file and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. The `gltfUpAxis` property is an optional string that specifies the up-axis of glTF models contained in the tileset. `properties` is an object containing objects for each per-feature property in the tileset. This tileset file snippet is for 3D buildings, so each tile has building models, and each building model has a `Height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and its value defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. -`geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered. +`geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered, see [Geometric error](#geometric-error). `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. @@ -483,7 +556,7 @@ See the [Q&A below](#will-a-tileset-file-be-part-of-the-final-3d-tiles-spec) for ### External tilesets -To create a tree of trees, a tile's `content.url` can point to an external tileset (the url of another tileset JSON file). This enables, for example, storing each city in a tileset and then having a global tileset of tilesets. +To create a tree of trees, a tile's `content.url` can point to an external tileset (the uri of another tileset JSON file). This enables, for example, storing each city in a tileset and then having a global tileset of tilesets. ![](figures/tilesets.jpg) @@ -518,7 +591,7 @@ It is up to the conversion tool that generates tileset file to define an optimal #### K-d trees -A k-d tree is created when each tile has two children separated by a _splitting plane_ parallel to the _x_, _y_, or _z_ axis (or longitude, latitude, height). The split axis is often round-robin rotated as levels increase down the tree, and the splitting plane may be selected using the median split, surface area heuristics, or other approaches. +A k-d tree is created when each tile has two children separated by a _splitting plane_ parallel to the _x_, _y_, or _z_ axis (or latitude, longitude, height). The split axis is often round-robin rotated as levels increase down the tree, and the splitting plane may be selected using the median split, surface area heuristics, or other approaches.


@@ -531,7 +604,7 @@ Note that a k-d tree does not have uniform subdivision like typical 2D geospatia #### Quadtrees -A quadtree is created when each tile has four uniformly subdivided children (e.g., using the center longitude and latitude), similar to typical 2D geospatial tiling schemes. Empty child tiles can be omitted. +A quadtree is created when each tile has four uniformly subdivided children (e.g., using the center latitude and longitude), similar to typical 2D geospatial tiling schemes. Empty child tiles can be omitted.


@@ -582,6 +655,14 @@ An octree extends a quadtree by using three orthogonal splitting planes to subdi 3D Tiles takes advantage of empty tiles: those tiles that have a bounding volume, but no content. Since a tile's `content` property does not need to be defined, empty non-leaf tiles can be used to accelerate non-uniform grids with hierarchical culling. This essentially creates a quadtree or octree without hierarchical levels of detail (HLOD). +### Geometric error + +Geometric error 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 compute _Screen-Space Error_ (SSE), i.e., the error measured in pixels. The SSE determines _Hierarchical Level of Detail_ (HLOD) refinement, i.e., if a tile is sufficiently detailed for the current view or if its children should be considered. + +The geometric error is determined when creating the tileset and based on a metric like point density, tile sizes in meters, or another factor specific to that tileset. In general, a higher geometric error means a tile will be refined more aggressively, and children tiles will be loaded and rendered sooner. + +> Implementation note: Typically, a property of the root tile, such as size, is used to determine a geometric error. Then each successive level of children uses a lower geometric error, with leaf tiles generally having a geometric error of 0. + ## Tile formats Each tile's `content.url` property points to a tile that is one of the formats listed in the [Status section](#spec-status) above. diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index f6268cbf2..842ead934 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -11,6 +11,7 @@ * [Overview](#overview) * [Layout](#layout) + * [Padding](#padding) * [JSON header](#json-header) * [Binary body](#binary-body) * [Batch Table Hierarchy](#batch-table-hierarchy) @@ -45,6 +46,12 @@ The header will also contain `batchTableJSONByteLength` and `batchTableBinaryByt Code for reading the Batch Table can be found in [Cesium3DTileBatchTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileBatchTable.js) in the Cesium implementation of 3D Tiles. +### Padding + +The binary body must start and end on a 8-byte alignment. + +The JSON header must be padded with trailing Space characters (`0x20`) to satisfy alignment requirements of the Batch Table binary (if present). + ### JSON header Batch Table values can be represented in the JSON header in two different ways: @@ -53,7 +60,7 @@ Batch Table values can be represented in the JSON header in two different ways: * Array elements can be any valid JSON data type, including objects and arrays. Elements may be `null`. * The length of each array is equal to `batchLength`, which is specified in each tile format. This is the number of features in the tile. For example, `batchLength` may be the number of models in a b3dm tile, the number of instances in a i3dm tile, or the number of points (or number of objects) in a pnts tile. 2. A reference to data in the binary body, denoted by an object with `byteOffset`, `componentType`, and `type` properties, e.g., `"height" : { "byteOffset" : 24, "componentType" : "FLOAT", "type" : "SCALAR"}`. - * `byteOffset` is a zero-based offset relative to the start of the binary body. + * `byteOffset` specifies a zero-based offset relative to the start of the binary body. The value of `byteOffset` must be a multiple of the size of the property's `componentType`, e.g., a property with the component type of `FLOAT` must start at an offset of a multiple of `4`. * `componentType` is the datatype of components in the attribute. Allowed values are `"BYTE"`, `"UNSIGNED_BYTE"`, `"SHORT"`, `"UNSIGNED_SHORT"`, `"INT"`, `"UNSIGNED_INT"`, `"FLOAT"`, and `"DOUBLE"`. * `type` specifies if the property is a scalar or vector. Allowed values are `"SCALAR"`, `"VEC2"`, `"VEC3"`, and `"VEC4"`. @@ -496,14 +503,6 @@ More detailed descriptions are provided in the [Styling Spec](../../Styling/READ * The Batch Table Hierarchy is self-contained within the tile. It is not possible to form metadata hierarchy across different tiles in the tileset. -## Implementation notes - -In JavaScript, a `TypedArray` cannot be created on data unless it is byte-aligned to the data type. -For example, a `Float32Array` must be stored in memory such that its data begins on a byte multiple of four since each `float` contains four bytes. - -The string generated from the JSON header should be padded with space characters in order to ensure that the binary body is byte-aligned. -The binary body should also be padded if necessary when there is data following the Batch Table. - ## Acknowledgments * Jannes Bolling, [@jbo023](https://github.com/jbo023) diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 7be52416d..fc4dacfc1 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -10,6 +10,7 @@ * [Overview](#overview) * [Layout](#layout) + * [Padding](#padding) * [Header](#header) * [Feature Table](#feature-table) * [Semantics](#semantics) @@ -34,6 +35,12 @@ A tile is composed of two sections: a header immediately followed by a body. The ![](figures/layout.png) +### Padding + +A tile's `byteLength` must be aligned to an 8-byte boundary. + +The [binary glTF](#binary-gltf) (if present) must start and end on an 8-byte alignment so that glTF's byte-alignment guarantees are met. This can be done by padding the [Feature Table](../FeatureTable/README.md#padding) or [Batch Table](../BatchTable/README.md#padding) if they are present. + ## Header The 28-byte header contains the following fields: @@ -76,7 +83,7 @@ These semantics define global properties for all features. | Semantic | Data Type | Description | Required | | --- | --- | --- | --- | | `BATCH_LENGTH` | `uint32` | The number of distinguishable models, also called features, in the batch. If the Binary glTF does not have a `batchId` attribute, this field _must_ be `0`. | :white_check_mark: Yes. | -| `RTC_CENTER` | `float32[3]` | A 3-component array of numbers defining the center position when positions are defined relative-to-center. | :red_circle: No. | +| `RTC_CENTER` | `float32[3]` | A 3-component array of numbers defining the center position in _z_-up coordinates when positions are defined relative-to-center. | :red_circle: No. | ## Batch Table @@ -90,8 +97,6 @@ Batched 3D Model uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/maste The [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#binary-gltf-layout) immediately follows the Feature Table and Batch Table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. -The glTF asset must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. - As described above, each vertex has a `batchId` attribute indicating the model to which it belongs. For example, vertices for a batch with three models may look like this: ``` batchId: [0, 0, 0, ..., 1, 1, 1, ..., 2, 2, 2, ...] @@ -106,37 +111,43 @@ normal: [xyz, xyz, xyz, ..., xyz, xyz, xyz, ..., xyz, xyz, xyz, ...] ``` Note that a vertex can't belong to more than one model; in that case, the vertex needs to be duplicated so the `batchId`s can be assigned. -The `batchId` is identified by the glTF technique parameter semantic `_BATCHID`. For example: +The `batchId` parameter is specified in a glTF mesh [primitive](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-primitive) by providing the `_BATCHID` attribute semantic, along with the index of the `batchId` [accessor](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#accessors). For example, ```JSON -"technique": { - "attributes": { - "a_batchId": "batchId" - }, - "parameters": { - "batchId": { - "semantic": "_BATCHID", - "type": 5126 +"primitives": [ + { + "attributes": { + "_BATCHID": 0 } } -} +] ``` -For this example the attribute is named `a_batchId`, and is declared in the vertex shader as: - -```glsl -attribute float a_batchId; +```JSON +{ + "accessors": [ + { + "bufferView": 1, + "byteOffset": 0, + "componentType": 5125, + "count": 4860, + "max": [2], + "min": [0], + "type": "SCALAR" + } + ] +} ``` -The vertex shader can be modified at runtime to use `a_batchId` to access individual models in the batch, e.g., to change their color. - -When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0`, the `batchId` attribute (with the parameter semantic `_BATCHID`) is required; otherwise, it is not. +When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0`, the `_BATCHID` attribute is required; otherwise, it is not. ### Coordinate reference system (CRS) -Vertex positions are defined according to a right-handed coordinate system where the _y_-axis is up [2]. +3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. + +By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [local coordinate systems](../../README.md#local-coordinate-systems)). -Vertex positions may be defined relative-to-center for high-precision rendering [1]. If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. When `RTC_CENTER` is used, vertex positions are defined according to a coordinate system where the _z_-axis is up. +Vertex positions may be defined relative-to-center for high-precision rendering [1]. If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is is defined according to a coordinate system where the _z_-axis is up. ## File extension and MIME type @@ -146,5 +157,4 @@ An explicit file extension is optional. Valid implementations may ignore it and ## Resources -1. [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/) -2. [glTF Coordinate System and Units](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units) \ No newline at end of file +1. [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/) \ No newline at end of file diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index f84e57673..045887bbe 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -9,6 +9,7 @@ * [Overview](#overview) * [Layout](#layout) + * [Padding](#padding) * [Header](#header) * [Inner tiles](#inner-tiles) * [File extension and MIME type](#file-extension-and-mime-type) @@ -31,6 +32,10 @@ Composite layout (dashes indicate optional fields): ![](figures/layout.png) +### Padding + +A tile's `byteLength` must be aligned to an 8-byte boundary. All tiles contained in a composite tile must also be aligned to an 8-byte boundary. + ## Header The 16-byte header section contains the following fields: diff --git a/TileFormats/FeatureTable/README.md b/TileFormats/FeatureTable/README.md index 44fc8f89b..457e02106 100644 --- a/TileFormats/FeatureTable/README.md +++ b/TileFormats/FeatureTable/README.md @@ -11,6 +11,7 @@ * [Overview](#overview) * [Layout](#layout) + * [Padding](#padding) * [JSON header](#json-header) * [Binary body](#binary-body) * [Implementation notes](#implementation-notes) @@ -37,6 +38,12 @@ When a tile format includes a Feature Table, the Feature Table immediately follo Code for reading the Feature Table can be found in [Cesium3DTileFeatureTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileFeatureTable.js) in the Cesium implementation of 3D Tiles. +### Padding + +The binary body must start and end on a 8-byte alignment. + +The JSON header must be padded with trailing Space characters (`0x20`) to satisfy alignment requirements of the Feature Table binary (if present). + ### JSON header Feature Table values can be represented in the JSON header in three different ways: @@ -46,7 +53,7 @@ Feature Table values can be represented in the JSON header in three different wa 2. An array of values, e.g., `"POSITION" : [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]`. * This is used for per-feature semantics like `"POSITION"` in Instanced 3D Model. Above, each `POSITION` refers to a `float32[3]` data type so there are three features: `Feature 0's position`=`(1.0, 0.0, 0.0)`, `Feature 1's position`=`(0.0, 1.0, 0.0)`, `Feature 2's position`=`(0.0, 0.0, 1.0)`. 3. A reference to data in the binary body, denoted by an object with a `byteOffset` property, e.g., `"SCALE" : { "byteOffset" : 24}`. - * `byteOffset` is a zero-based offset relative to the start of the binary body. + * `byteOffset` specifies a zero-based offset relative to the start of the binary body. The value of `byteOffset` must be a multiple of the size of the property's `componentType`, e.g., the `"POSITION"` property, which has the component `FLOAT`, must start at an offset of a multiple of `4`. * The semantic defines the allowed data type, e.g., when `"POSITION"` in Instanced 3D Model refers to the binary body, the component type is `FLOAT` and the number of components is `3`. * Some semantics allow for overriding the implicit `componentType`. These cases are specified in each tile format, e.g., `"BATCH_ID" : { "byteOffset" : 24, "componentType" : "UNSIGNED_BYTE"}`. The only valid properties in the JSON header are the defined semantics by the tile format. Application-specific data should be stored in the Batch Table. @@ -69,11 +76,3 @@ var byteOffset = featureTableJSON.POSITION.byteOffset; var positionArray = new Float32Array(featureTableBinary.buffer, byteOffset, featuresLength * 3); // There are three components for each POSITION feature. var position = positionArray.subarray(featureId * 3, featureId * 3 + 3); // Using subarray creates a view into the array, and not a new array. ``` - -## Implementation notes - -In JavaScript, a `TypedArray` cannot be created on data unless it is byte-aligned to the data type. -For example, a `Float32Array` must be stored in memory such that its data begins on a byte multiple of four since each `float` contains four bytes. - -The string generated from the JSON header should be padded with space characters in order to ensure that the binary body is byte-aligned. -The binary body should also be padded if necessary when there is data following the Feature Table. diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 5fb980c8c..5b5d9d622 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -10,6 +10,7 @@ * [Overview](#overview) * [Layout](#layout) + * [Padding](#padding) * [Header](#header) * [Feature Table](#feature-table) * [Semantics](#semantics) @@ -46,6 +47,14 @@ A tile is composed of a header section immediately followed by a body section. T ![header layout](figures/header-layout.png) +### Padding + +A tile's `byteLength` must be aligned to an 8-byte boundary. + +The [binary glTF](#gltf) (if present) must start and end on an 8-byte alignment so that glTF's byte-alignment guarantees are met. This can be done by padding the [Feature Table](../FeatureTable/README.md#padding) or [Batch Table](../BatchTable/README.md#padding) if they are present. + +Otherwise, if the glTF field is a UTF-8 string, it must be padded with trailing Space characters (`0x20`) to satisfy alignment requirements of the tile. + ## Header The 32-byte header contains the following fields: @@ -59,7 +68,7 @@ The 32-byte header contains the following fields: | `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | | `batchTableJSONByteLength` | `uint32` | The length of the Batch Table JSON section in bytes. Zero indicates that there is no Batch Table. | | `batchTableBinaryByteLength` | `uint32` | The length of the Batch Table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | -| `gltfFormat` | `uint32` | Indicates the format of the glTF field of the body. `0` indicates it is a url, `1` indicates it is embedded binary glTF. See the [glTF](#gltf) section below. | +| `gltfFormat` | `uint32` | Indicates the format of the glTF field of the body. `0` indicates it is a uri, `1` indicates it is embedded binary glTF. See the [glTF](#gltf) section below. | If `featureTableJSONByteLength` equals zero, or there is no `glTF`, the tile does not need to be rendered. @@ -248,12 +257,18 @@ The [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification `header.gltfFormat` determines the format of the glTF field -* When the value of `header.gltfFormat` is `0`, the glTF field is a UTF-8 string, which contains a url to a glTF model. +* When the value of `header.gltfFormat` is `0`, the glTF field is a UTF-8 string, which contains a uri of the glTF model content. * When the value of `header.gltfFormat` is `1`, the glTF field is a binary blob containing binary glTF. +> Implementation note: Prefer a binary glTF blob to an glTF model data uri. + In either case, `header.gltfByteLength` contains the length of the glTF field in bytes. -If the glTF asset is embedded, it must be 8-byte aligned so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. +### Coordinate reference system (CRS) + +3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. + +By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [local coordinate systems](../../README.md#local-coordinate-systems)). ## File extension and MIME type diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 5e721c2f4..cda49acdd 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -11,6 +11,7 @@ * [Overview](#overview) * [Layout](#layout) + * [Padding](#padding) * [Header](#header) * [Feature Table](#feature-table) * [Semantics](#semantics) @@ -43,6 +44,10 @@ A tile is composed of a header section immediately followed by a body section. T ![](figures/layout.png) +### Padding + +A tile's `byteLength` must be aligned to an 8-byte boundary. + ## Header The 28-byte header contains the following fields: @@ -316,6 +321,10 @@ The _Batch Table_ contains application-specific metadata, indexable by `batchId` See the [Batch Table](../BatchTable/README.md) reference for more information. +### Coordinate reference system (CRS) + +3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (also see [local coordinate systems](../../README.md#local-coordinate-systems)). + ## File extension and MIME type Point cloud tiles use the `.pnts` extension and `application/octet-stream` MIME type. diff --git a/figures/BoundingBox.jpg b/figures/BoundingBox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83bf00aa4dd6bb7019bcd3fb18d66708778cc044 GIT binary patch literal 54354 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 literal 0 HcmV?d00001 diff --git a/figures/BoundingSphere.jpg b/figures/BoundingSphere.jpg new file mode 100644 index 0000000000000000000000000000000000000000..71507ac2ff07f6454e5169810c456d19f2e1d7bd GIT binary patch literal 59383 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

w^uhIC3c~`$^#Y*Hf^-mgR`2WvzCvh? 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ⅅ)}E;A`dWmht8;I1g$xeu6) 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 literal 0 HcmV?d00001 From 0f190b1009407c775917407a16e3fabc7887995a Mon Sep 17 00:00:00 2001 From: ggetz Date: Thu, 3 May 2018 14:10:03 -0400 Subject: [PATCH 17/37] Move Batch Table hierarchy to an extension --- README.md | 9 +- Styling/README.md | 73 --- TileFormats/BatchTable/README.md | 345 --------------- .../CESIUM_batch_table_hierarchy/README.md | 415 ++++++++++++++++++ .../figures/batch-table-hierarchy-block.png | Bin .../figures/batch-table-hierarchy-block.svg | 0 .../batch-table-hierarchy-parking-lot.png | Bin .../batch-table-hierarchy-parking-lot.svg | 0 extensions/README.md | 59 +++ 9 files changed, 481 insertions(+), 420 deletions(-) create mode 100644 extensions/CESIUM_batch_table_hierarchy/README.md rename {TileFormats/BatchTable => extensions/CESIUM_batch_table_hierarchy}/figures/batch-table-hierarchy-block.png (100%) rename {TileFormats/BatchTable => extensions/CESIUM_batch_table_hierarchy}/figures/batch-table-hierarchy-block.svg (100%) rename {TileFormats/BatchTable => extensions/CESIUM_batch_table_hierarchy}/figures/batch-table-hierarchy-parking-lot.png (100%) rename {TileFormats/BatchTable => extensions/CESIUM_batch_table_hierarchy}/figures/batch-table-hierarchy-parking-lot.svg (100%) create mode 100644 extensions/README.md diff --git a/README.md b/README.md index d6636a88f..a1641d624 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [Resources](#resources) * [Spec status](#spec-status) +* [3D Tiles Extensions](#3d-tiles-extensions) * [Introduction](#introduction) * [File extensions and MIME types](#file-extensions-and-mime-types) * [JSON encoding](#json-encoding) @@ -164,6 +165,10 @@ Stars | :white_circle: **Not started** For spec work in progress, [watch this repo](https://github.com/AnalyticalGraphicsInc/3d-tiles/subscription) and browse the [issues](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues). +## 3D Tiles Extensions + +[3D Tiles extension registery](./extensions/) + ## Introduction In 3D Tiles, a _tileset_ is a set of _tiles_ organized in a spatial data structure, the _tree_. 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. @@ -709,7 +714,7 @@ Extensions allow the base specification to be extended with new features. The op } ``` -All extensions used in a tileset or any descendent external tilesets must be listed in the tileset file in the top-level `extensionsUsed` array property, e.g., +All extensions used in a tileset or any descendent external tilesets must be listed in the tileset JSON file in the top-level `extensionsUsed` array property, e.g., ```JSON { @@ -719,7 +724,7 @@ All extensions used in a tileset or any descendent external tilesets must be lis } ``` -All extensions required to load and render a tileset or any descendent external tilesets must also be listed in the tileset file in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. +All extensions required to load and render a tileset or any descendent external tilesets must also be listed in the tileset JSON file in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. ### Extras diff --git a/Styling/README.md b/Styling/README.md index 00bf0ade3..91e5c986c 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -49,7 +49,6 @@ Contents: * [Built-in variables](#built-in-variables) * [Built-in functions](#built-in-functions) * [Notes](#notes) -* [Batch Table Hierarchy](#batch-table-hierarchy) * [Point Cloud](#point-cloud) * [File extension and MIME type](#file-extension-and-mime-type) * [Acknowledgments](#acknowledgments) @@ -1232,78 +1231,6 @@ Computes the cross product of `x` and `y`. This function only accepts `vec3` arg Comments are not supported. -## Batch Table Hierarchy - -The styling language provides the following built-in functions intended for use with the [Batch Table Hierarchy](../TileFormats/BatchTable/README.md#batch-table-hierarchy): - -* [`getExactClassName`](#getexactclassname) -* [`isExactClass`](#isexactclass) -* [`isClass`](#isclass) - -#### getExactClassName - -``` -getExactClassName() : String -``` - -Returns the feature's class name, or `undefined` if the feature is not a class instance. - -For example, the following style will color all doorknobs yellow, all doors green, and all other features gray. - -```json -{ - "defines" : { - "suffix" : "regExp('door(.*)').exec(getExactClassName())" - }, - "color" : { - "conditions" : [ - ["${suffix} === 'knob'", "color('yellow')"], - ["${suffix} === ''", "color('green')"], - ["${suffix} === null", "color('gray')"], - ["true", "color('blue'"] - ] - } -} -``` - -#### isExactClass - -``` -isExactClass(name : String) : Boolean -``` - -Returns `true` if the feature's class is equal to `name`, otherwise `false`. - -For example, the following style will color all doors, but not features that are children of doors (like doorknobs): - -```json -"color" : { - "conditions" : [ - ["isExactClass('door')", "color('red')"], - ["true", "color('white')"] - ] -} -``` - -#### isClass - -``` -isClass(name : String) : Boolean -``` - -Returns `true` if the feature's class, or any of its ancestors' classes, are equal to `name`. - -For example, the style below will color all doors and doorknobs. - -```json -"color" : { - "conditions" : [ - ["isClass('door')", "color('blue')"], - ["true", "color('white')"] - ] -} -``` - ## Point Cloud A [Point Cloud](../TileFormats/PointCloud/README.md) is a collection of points that may be styled like other features. In addition to evaluating a point's `color` and `show` properties, a Point Cloud style may evaluate `pointSize`, or the size of each point in pixels. The default `pointSize` is `1.0`. diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 842ead934..5159d6cd0 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -14,15 +14,6 @@ * [Padding](#padding) * [JSON header](#json-header) * [Binary body](#binary-body) -* [Batch Table Hierarchy](#batch-table-hierarchy) - * [Motivation](#motivation) - * [Hierarchy](#hierarchy) - * [Examples](#examples) - * [Feature classes](#feature-classes) - * [Feature hierarchy](#feature-hierarchy) - * [Styling](#styling) - * [Notes](#notes) -* [Implementation notes](#implementation-notes) * [Acknowledgments](#acknowledgments) ## Overview @@ -167,342 +158,6 @@ var geographicArray = new Float64Array(batchTableBinary.buffer, byteOffset, geog var geographicOfFeature = positionArray.subarray(batchId * numberOfComponents, batchId * numberOfComponents + numberOfComponents); // Using subarray creates a view into the array, and not a new array. ``` -## Batch Table Hierarchy - -The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The Batch Table Hierarchy provides more flexibility for these cases. - -### Motivation - -Consider a tile whose features fit into multiple categories that do not share the same properties. A parking lot tile may have three types of features: cars, lamp posts, and trees. With the standard batch table, this might look like the following: - -```json -{ - "lampStrength" : [10, 5, 7, 0, 0, 0, 0, 0], - "lampColor" : ["yellow", "white", "white", "", "", "", "", ""], - "carType" : ["", "", "", "truck", "bus", "sedan", "", ""], - "carColor" : ["", "", "", "green", "blue", "red", "", ""], - "treeHeight" : [0, 0, 0, 0, 0, 0, 10, 15], - "treeAge" : [0, 0, 0, 0, 0, 0, 5, 8] -} -``` - -In this example, several `""` and `0` array values are stored so each array has the same number of elements. A potential workaround is to store properties as JSON objects; however, this becomes bulky as the number of properties grows: - -```json -{ - "info" : [ - { - "lampStrength" : 10, - "lampColor" : "yellow" - }, - { - "lampStrength" : 5, - "lampColor" : "white" - }, - { - "lampStrength" : 7, - "lampColor" : "white" - }, - { - "carType" : "truck", - "carColor" : "green" - }, - { - "carType" : "bus", - "carColor" : "blue" - }, - { - "carType" : "sedan", - "carColor" : "red" - }, - { - "treeHeight" : 10, - "treeAge" : 5 - }, - { - "treeHeight" : 15, - "treeAge" : 8 - } - ] -} -``` - -Another limitation of the standard batch table is the difficulty in expressing metadata hierarchies. -For example, consider a tile that represents a city block. The block itself contains metadata, the individual buildings contain metadata, and the building walls contain metadata. A tree diagram of the hierarchy might look like this: - -- block - - building - - wall - - wall - - building - - wall - - wall - - building - - wall - - wall - - -In order to select a wall and retrieve properties from its building, the wall metadata must also include building metadata. Essentially the three-level hierarchy must be flattened into each feature, resulting in a lot of duplicate entries. - -A standard batch table with two walls per building and three buildings per block might look like this: - -```json -{ - "wall_color" : ["blue", "pink", "green", "lime", "black", "brown"], - "wall_windows" : [2, 4, 4, 2, 0, 3], - "building_name" : ["building_0", "building_0", "building_1", "building_1", "building_2", "building_2"], - "building_id" : [0, 0, 1, 1, 2, 2], - "building_address" : ["10 Main St", "10 Main St", "12 Main St", "12 Main St", "14 Main St", "14 Main St"], - "block_lat_long" : [[0.12, 0.543], [0.12, 0.543], [0.12, 0.543], [0.12, 0.543], [0.12, 0.543], [0.12, 0.543]], - "block_district" : ["central", "central", "central", "central", "central", "central"], -} -``` - -Both these cases illustrate the benefit of supporting feature types and a feature hierarchy within the Batch Table. - -### Hierarchy - -The standard batch table may be extended to include a `HIERARCHY` object that defines a set of classes and a tree structure for class instances. - -Sample Batch Table: - -```json -{ - "HIERARCHY" : { - "classes" : [ - { - "name" : "Wall", - "length" : 6, - "instances" : { - "color" : ["white", "red", "yellow", "gray", "brown", "black"], - } - }, - { - "name" : "Building", - "length" : 3, - "instances" : { - "name" : ["unit29", "unit20", "unit93"], - "address" : ["100 Main St", "102 Main St", "104 Main St"] - } - }, - { - "name" : "Owner", - "length" : 3, - "instances" : { - "type" : ["city", "resident", "commercial"], - "id" : [1120, 1250, 6445] - } - } - ], - "instancesLength" : 12, - "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2], - "parentCounts" : [1, 3, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0], - "parentIds" : [6, 6, 10, 11, 7, 11, 7, 8, 8, 10, 10, 9] - } -} -``` - -`classes` is an array of objects, where each object contains the following properties: -* `name` - A string representing the name of the class -* `length` - The number of instances of the class -* `instances` - An object containing instance properties. Properties may be stored as an array of values or a reference to data in the binary body. - -`instancesLength` is the total number of instances. It is equal to the sum of the `length` properties of the classes. - -Note that this is different than a tile's `batchLength`, which is the total number of features. While all features are instances, not all instances are features; the hierarchy may contain instances that don't have a physical basis in the tile's geometry but still contribute to the metadata hierarchy. - -`classIds` is an array of integers of length `instancesLength`. Each value specifies the instances's class as an index in the `classes` array. - -**Implementation Note**: The Batch Table Hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. - -`parentCounts` is an array of integers of length `instancesLength`. Each value specifies the number of parents that instance has. If omitted, `parentCounts` is implicitly an array of length `instancesLength`, where all values are 1. - -`parentIds` is an array of integers whose length equals the sum of the values in `parentCounts`. Parent ids are placed sequentially by instance - instance 0's parent ids are followed by instance 1's parent ids. Each value specifies the instance's parent as an index into the `classIds` array. - -Cyclical hierarchies are not allowed. When an instance's `parentId` points to itself, then it has no parent. When `parentIds` is omitted, the instances do not have parents. - -A feature's `batchId` is used to access its `classId` and `parentCount`. Therefore, the values in the `classIds` and `parentCounts` arrays are initially ordered by `batchId` and followed by non-feature instances. - -The `parentCounts` and `parentIds` arrays form an instance hierarchy. A feature's properties include those defined by its own class and any properties from ancestor instances. - -In some cases multiple ancestors may share the same property name. This can occur if two ancestors are the same class or are different classes with the same property names. For example, if every class defined the property "id", then it would be an overloaded property. In such cases it is up to the implementation to decide which value to return. - -Finally, `classIds`, `parentCounts`, and `parentIds` may instead be references to data in the binary body. If omitted, `componentType` defaults to `UNSIGNED_SHORT`. `type` is implicitly `SCALAR`. - -```json -"classIds" : { - "byteOffset" : 0, - "componentType" : "UNSIGNED_SHORT" -}; -``` - -### Examples - -#### Feature classes - -Going back to the example of a parking lot with car, lamp post, and tree features, a Batch Table might look like this: - -```json -{ - "HIERARCHY" : { - "classes" : [ - { - "name" : "Lamp", - "length" : 3, - "instances" : { - "lampStrength" : [10, 5, 7], - "lampColor" : ["yellow", "white", "white"] - } - }, - { - "name" : "Car", - "length" : 3, - "instances" : { - "carType" : ["truck", "bus", "sedan"], - "carColor" : ["green", "blue", "red"] - } - }, - { - "name" : "Tree", - "length" : 2, - "instances" : { - "treeHeight" : [10, 15], - "treeAge" : [5, 8] - } - } - ], - "instancesLength" : 8, - "classIds" : [0, 0, 0, 1, 1, 1, 2, 2] - } -} -``` - -Since this example does not contain any sort of hierarchy, the `parentCounts` and `parentIds` are not included, and `instancesLength` just equals the tile's `batchLength`. - -A `classId` of 0 indicates a "Lamp" instance, 1 indicates a "Car" instance, and 2 indicates a "Tree" instance. - -A feature's `batchId` is used to access its class in the `classIds` array. Features with a `batchId` of 0, 1, 2 are "Lamp" instances, features with a `batchId` of 3, 4, 5 are "Car" instances, and features with `batchId` of 6 and 7 are "Tree" instances. - -The feature with `batchId = 5` is the third "Car" instance, and its properties are - -``` -carType : "sedan" -carColor : "red" -``` - -Batch Table Hierarchy, parking lot: - -![batch table hierarchy parking lot](figures/batch-table-hierarchy-parking-lot.png) - -#### Feature hierarchy - -The city block example would now look like this: - -```json -{ - "HIERARCHY" : { - "classes" : [ - { - "name" : "Wall", - "length" : 6, - "instances" : { - "wall_color" : ["blue", "pink", "green", "lime", "black", "brown"], - "wall_windows" : [2, 4, 4, 2, 0, 3] - } - }, - { - "name" : "Building", - "length" : 3, - "instances" : { - "building_name" : ["building_0", "building_1", "building_2"], - "building_id" : [0, 1, 2], - "building_address" : ["10 Main St", "12 Main St", "14 Main St"] - } - }, - { - "name" : "Block", - "length" : 1, - "instances" : { - "block_lat_long" : [[0.12, 0.543]], - "block_district" : ["central"] - } - } - ], - "instancesLength" : 10, - "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2], - "parentIds" : [6, 6, 7, 7, 8, 8, 9, 9, 9, 9] - } -} -``` - -The tile's `batchLength` is 6 and `instancesLength` is 10. The building and block instances are not features of the tile but contain properties that are inherited by the six wall features. - -`parentCounts` is not included since every instance has at most one parent. - -A feature with `batchId = 3` has the following properties: - -``` -wall_color : "lime" -wall_windows : 2 -building_name : "building_1" -building_id : 1, -building_address : "12 Main St" -block_lat_long : [0.12, 0.543] -block_district : "central" -``` - -Breaking it down into smaller steps: - -The feature with `batchId = 3` is the fourth "Wall" instance, and its properties are the following: -``` -wall_color : "lime" -wall_windows : 2 -``` - -The feature's `parentId` is 7, which is the second "Building" instance. Therefore it gets the following properties from its parent: -``` -building_name : "building_1" -building_id : 1, -building_address : "12 Main St" -``` - -The building's `parentId` is 9, which is the sole "Block" instance with the following properties: -``` -block_lat_long : [[0.12, 0.543]] -block_district : ["central"] -``` - -Since the block's `parentId` is also 9, it does not have a parent and the traversal is complete. - -Batch Table Hierarchy, block: - -![batch table hierarchy block](figures/batch-table-hierarchy-block.png) - -### Styling - -The styling language supports additional functions for querying feature classes: - -* `isExactClass` -* `isClass` -* `getExactClassName` - -More detailed descriptions are provided in the [Styling Spec](../../Styling/README.md#batch-table-hierarchy). - -### Notes - -* Since the Batch Table Hierarchy is an extension to the standard batch table, it is still possible to store per-feature properties alongside the `HIERARCHY` object: - -``` -{ - "Height" : [...], - "Longitude" : [...], - "Latitude" : [...], - "HIERARCHY" : {...} -} -``` - -* The Batch Table Hierarchy is self-contained within the tile. It is not possible to form metadata hierarchy across different tiles in the tileset. - ## Acknowledgments * Jannes Bolling, [@jbo023](https://github.com/jbo023) diff --git a/extensions/CESIUM_batch_table_hierarchy/README.md b/extensions/CESIUM_batch_table_hierarchy/README.md new file mode 100644 index 000000000..7e68defa7 --- /dev/null +++ b/extensions/CESIUM_batch_table_hierarchy/README.md @@ -0,0 +1,415 @@ +# CESIUM_batch_table_hierarchy + +## Contributors + +* Sean Lilley, [@lilleyse](https://github.com/lilleyse) +* Rob Taglang, [@lasalvavida](https://github.com/lasalvavida) +* Tom Fili, [@CesiumFili](https://twitter.com/CesiumFili) +* Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi) + +## Contents + +* [Overview](#overview) +* [Motivation](#motivation) +* [Hierarchy](#hierarchy) +* [Examples](#examples) +* [Styling](#styling) +* [Notes](#notes) + +## Overview + +The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The Batch Table Hierarchy provides more flexibility for these cases. + +## Motivation + +Consider a tile whose features fit into multiple categories that do not share the same properties. A parking lot tile may have three types of features: cars, lamp posts, and trees. With the standard batch table, this might look like the following: + +```json +{ + "lampStrength" : [10, 5, 7, 0, 0, 0, 0, 0], + "lampColor" : ["yellow", "white", "white", "", "", "", "", ""], + "carType" : ["", "", "", "truck", "bus", "sedan", "", ""], + "carColor" : ["", "", "", "green", "blue", "red", "", ""], + "treeHeight" : [0, 0, 0, 0, 0, 0, 10, 15], + "treeAge" : [0, 0, 0, 0, 0, 0, 5, 8] +} +``` + +In this example, several `""` and `0` array values are stored so each array has the same number of elements. A potential workaround is to store properties as JSON objects; however, this becomes bulky as the number of properties grows: + +```json +{ + "info" : [ + { + "lampStrength" : 10, + "lampColor" : "yellow" + }, + { + "lampStrength" : 5, + "lampColor" : "white" + }, + { + "lampStrength" : 7, + "lampColor" : "white" + }, + { + "carType" : "truck", + "carColor" : "green" + }, + { + "carType" : "bus", + "carColor" : "blue" + }, + { + "carType" : "sedan", + "carColor" : "red" + }, + { + "treeHeight" : 10, + "treeAge" : 5 + }, + { + "treeHeight" : 15, + "treeAge" : 8 + } + ] +} +``` + +Another limitation of the standard batch table is the difficulty in expressing metadata hierarchies. +For example, consider a tile that represents a city block. The block itself contains metadata, the individual buildings contain metadata, and the building walls contain metadata. A tree diagram of the hierarchy might look like this: + +- block + - building + - wall + - wall + - building + - wall + - wall + - building + - wall + - wall + + +In order to select a wall and retrieve properties from its building, the wall metadata must also include building metadata. Essentially the three-level hierarchy must be flattened into each feature, resulting in a lot of duplicate entries. + +A standard batch table with two walls per building and three buildings per block might look like this: + +```json +{ + "wall_color" : ["blue", "pink", "green", "lime", "black", "brown"], + "wall_windows" : [2, 4, 4, 2, 0, 3], + "building_name" : ["building_0", "building_0", "building_1", "building_1", "building_2", "building_2"], + "building_id" : [0, 0, 1, 1, 2, 2], + "building_address" : ["10 Main St", "10 Main St", "12 Main St", "12 Main St", "14 Main St", "14 Main St"], + "block_lat_long" : [[0.12, 0.543], [0.12, 0.543], [0.12, 0.543], [0.12, 0.543], [0.12, 0.543], [0.12, 0.543]], + "block_district" : ["central", "central", "central", "central", "central", "central"], +} +``` + +Both these cases illustrate the benefit of supporting feature types and a feature hierarchy within the Batch Table. + +## Hierarchy + +The standard batch table may be extended to include a `HIERARCHY` object that defines a set of classes and a tree structure for class instances. + +Sample Batch Table: + +```json +{ + "HIERARCHY" : { + "classes" : [ + { + "name" : "Wall", + "length" : 6, + "instances" : { + "color" : ["white", "red", "yellow", "gray", "brown", "black"], + } + }, + { + "name" : "Building", + "length" : 3, + "instances" : { + "name" : ["unit29", "unit20", "unit93"], + "address" : ["100 Main St", "102 Main St", "104 Main St"] + } + }, + { + "name" : "Owner", + "length" : 3, + "instances" : { + "type" : ["city", "resident", "commercial"], + "id" : [1120, 1250, 6445] + } + } + ], + "instancesLength" : 12, + "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2], + "parentCounts" : [1, 3, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0], + "parentIds" : [6, 6, 10, 11, 7, 11, 7, 8, 8, 10, 10, 9] + } +} +``` + +`classes` is an array of objects, where each object contains the following properties: +* `name` - A string representing the name of the class +* `length` - The number of instances of the class +* `instances` - An object containing instance properties. Properties may be stored as an array of values or a reference to data in the binary body. + +`instancesLength` is the total number of instances. It is equal to the sum of the `length` properties of the classes. + +Note that this is different than a tile's `batchLength`, which is the total number of features. While all features are instances, not all instances are features; the hierarchy may contain instances that don't have a physical basis in the tile's geometry but still contribute to the metadata hierarchy. + +`classIds` is an array of integers of length `instancesLength`. Each value specifies the instances's class as an index in the `classes` array. + +**Implementation Note**: The Batch Table Hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. + +`parentCounts` is an array of integers of length `instancesLength`. Each value specifies the number of parents that instance has. If omitted, `parentCounts` is implicitly an array of length `instancesLength`, where all values are 1. + +`parentIds` is an array of integers whose length equals the sum of the values in `parentCounts`. Parent ids are placed sequentially by instance - instance 0's parent ids are followed by instance 1's parent ids. Each value specifies the instance's parent as an index into the `classIds` array. + +Cyclical hierarchies are not allowed. When an instance's `parentId` points to itself, then it has no parent. When `parentIds` is omitted, the instances do not have parents. + +A feature's `batchId` is used to access its `classId` and `parentCount`. Therefore, the values in the `classIds` and `parentCounts` arrays are initially ordered by `batchId` and followed by non-feature instances. + +The `parentCounts` and `parentIds` arrays form an instance hierarchy. A feature's properties include those defined by its own class and any properties from ancestor instances. + +In some cases multiple ancestors may share the same property name. This can occur if two ancestors are the same class or are different classes with the same property names. For example, if every class defined the property "id", then it would be an overloaded property. In such cases it is up to the implementation to decide which value to return. + +Finally, `classIds`, `parentCounts`, and `parentIds` may instead be references to data in the binary body. If omitted, `componentType` defaults to `UNSIGNED_SHORT`. `type` is implicitly `SCALAR`. + +```json +"classIds" : { + "byteOffset" : 0, + "componentType" : "UNSIGNED_SHORT" +}; +``` + +## Examples + +### Feature classes + +Going back to the example of a parking lot with car, lamp post, and tree features, a Batch Table might look like this: + +```json +{ + "HIERARCHY" : { + "classes" : [ + { + "name" : "Lamp", + "length" : 3, + "instances" : { + "lampStrength" : [10, 5, 7], + "lampColor" : ["yellow", "white", "white"] + } + }, + { + "name" : "Car", + "length" : 3, + "instances" : { + "carType" : ["truck", "bus", "sedan"], + "carColor" : ["green", "blue", "red"] + } + }, + { + "name" : "Tree", + "length" : 2, + "instances" : { + "treeHeight" : [10, 15], + "treeAge" : [5, 8] + } + } + ], + "instancesLength" : 8, + "classIds" : [0, 0, 0, 1, 1, 1, 2, 2] + } +} +``` + +Since this example does not contain any sort of hierarchy, the `parentCounts` and `parentIds` are not included, and `instancesLength` just equals the tile's `batchLength`. + +A `classId` of 0 indicates a "Lamp" instance, 1 indicates a "Car" instance, and 2 indicates a "Tree" instance. + +A feature's `batchId` is used to access its class in the `classIds` array. Features with a `batchId` of 0, 1, 2 are "Lamp" instances, features with a `batchId` of 3, 4, 5 are "Car" instances, and features with `batchId` of 6 and 7 are "Tree" instances. + +The feature with `batchId = 5` is the third "Car" instance, and its properties are + +``` +carType : "sedan" +carColor : "red" +``` + +Batch Table Hierarchy, parking lot: + +![batch table hierarchy parking lot](figures/batch-table-hierarchy-parking-lot.png) + +### Feature hierarchy + +The city block example would now look like this: + +```json +{ + "HIERARCHY" : { + "classes" : [ + { + "name" : "Wall", + "length" : 6, + "instances" : { + "wall_color" : ["blue", "pink", "green", "lime", "black", "brown"], + "wall_windows" : [2, 4, 4, 2, 0, 3] + } + }, + { + "name" : "Building", + "length" : 3, + "instances" : { + "building_name" : ["building_0", "building_1", "building_2"], + "building_id" : [0, 1, 2], + "building_address" : ["10 Main St", "12 Main St", "14 Main St"] + } + }, + { + "name" : "Block", + "length" : 1, + "instances" : { + "block_lat_long" : [[0.12, 0.543]], + "block_district" : ["central"] + } + } + ], + "instancesLength" : 10, + "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2], + "parentIds" : [6, 6, 7, 7, 8, 8, 9, 9, 9, 9] + } +} +``` + +The tile's `batchLength` is 6 and `instancesLength` is 10. The building and block instances are not features of the tile but contain properties that are inherited by the six wall features. + +`parentCounts` is not included since every instance has at most one parent. + +A feature with `batchId = 3` has the following properties: + +``` +wall_color : "lime" +wall_windows : 2 +building_name : "building_1" +building_id : 1, +building_address : "12 Main St" +block_lat_long : [0.12, 0.543] +block_district : "central" +``` + +Breaking it down into smaller steps: + +The feature with `batchId = 3` is the fourth "Wall" instance, and its properties are the following: +``` +wall_color : "lime" +wall_windows : 2 +``` + +The feature's `parentId` is 7, which is the second "Building" instance. Therefore it gets the following properties from its parent: +``` +building_name : "building_1" +building_id : 1, +building_address : "12 Main St" +``` + +The building's `parentId` is 9, which is the sole "Block" instance with the following properties: +``` +block_lat_long : [[0.12, 0.543]] +block_district : ["central"] +``` + +Since the block's `parentId` is also 9, it does not have a parent and the traversal is complete. + +Batch Table Hierarchy, block: + +![batch table hierarchy block](./figures/batch-table-hierarchy-block.png) + +## Styling + +This extension supports additional built-in functions in the styling language for querying feature classes: + +* [`getExactClassName`](#getexactclassname) +* [`isExactClass`](#isexactclass) +* [`isClass`](#isclass) + +### getExactClassName + +``` +getExactClassName() : String +``` + +Returns the feature's class name, or `undefined` if the feature is not a class instance. + +For example, the following style will color all doorknobs yellow, all doors green, and all other features gray. + +```json +{ + "defines" : { + "suffix" : "regExp('door(.*)').exec(getExactClassName())" + }, + "color" : { + "conditions" : [ + ["${suffix} === 'knob'", "color('yellow')"], + ["${suffix} === ''", "color('green')"], + ["${suffix} === null", "color('gray')"], + ["true", "color('blue'"] + ] + } +} +``` + +### isExactClass + +``` +isExactClass(name : String) : Boolean +``` + +Returns `true` if the feature's class is equal to `name`, otherwise `false`. + +For example, the following style will color all doors, but not features that are children of doors (like doorknobs): + +```json +"color" : { + "conditions" : [ + ["isExactClass('door')", "color('red')"], + ["true", "color('white')"] + ] +} +``` + +### isClass + +``` +isClass(name : String) : Boolean +``` + +Returns `true` if the feature's class, or any of its ancestors' classes, are equal to `name`. + +For example, the style below will color all doors and doorknobs. + +```json +"color" : { + "conditions" : [ + ["isClass('door')", "color('blue')"], + ["true", "color('white')"] + ] +} +``` + +## Notes + +* Since the Batch Table Hierarchy is an extension to the standard batch table, it is still possible to store per-feature properties alongside the `HIERARCHY` object: + +``` +{ + "Height" : [...], + "Longitude" : [...], + "Latitude" : [...], + "HIERARCHY" : {...} +} +``` + +* The Batch Table Hierarchy is self-contained within the tile. It is not possible to form metadata hierarchy across different tiles in the tileset. \ No newline at end of file diff --git a/TileFormats/BatchTable/figures/batch-table-hierarchy-block.png b/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-block.png similarity index 100% rename from TileFormats/BatchTable/figures/batch-table-hierarchy-block.png rename to extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-block.png diff --git a/TileFormats/BatchTable/figures/batch-table-hierarchy-block.svg b/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-block.svg similarity index 100% rename from TileFormats/BatchTable/figures/batch-table-hierarchy-block.svg rename to extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-block.svg diff --git a/TileFormats/BatchTable/figures/batch-table-hierarchy-parking-lot.png b/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png similarity index 100% rename from TileFormats/BatchTable/figures/batch-table-hierarchy-parking-lot.png rename to extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png diff --git a/TileFormats/BatchTable/figures/batch-table-hierarchy-parking-lot.svg b/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg similarity index 100% rename from TileFormats/BatchTable/figures/batch-table-hierarchy-parking-lot.svg rename to extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg diff --git a/extensions/README.md b/extensions/README.md new file mode 100644 index 000000000..aa94ec8e0 --- /dev/null +++ b/extensions/README.md @@ -0,0 +1,59 @@ +# 3D Tiles Extensions + +## Extensions + +* [CESIUM_batch_table_hierarchy](./CESIUM_batch_table_hierarchy/) + +## About + +Extensions allow the base 3D Tiles specification to be extended with new features. They may add new properties to a 3D Tiles JSON object, and may add functionality a tile format or the 3D Tiles Styling expression language. + +Extensions may not remove existing properties or features, nor redefine existing properties or features to mean something else. + +The optional `extensions` dictionary property may be added to a 3D Tiles JSON object, which contains the name of the extensions and the extension specific objects. + +The following example shows a tile object with a hypothetical vendor extension which specifies a separate collision volume. +```JSON +{ + "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": { + "url": "building.b3dm" + }, + "extensions": { + "VENDOR_collision_volume": { + "box": [ + 0, 0, 6.8, + 3.8, 0, 0, + 0, 3.8, 0, + 0, 0, 13.5 + ] + } + } +} +``` + +All extensions used in a tileset or any descendent external tilesets must be listed in the tileset JSON file in the top-level `extensionsUsed` array property, e.g., + +```JSON +{ + "extensionsUsed": [ + "VENDOR_collision_volume" + ] +} +``` + +All extensions required to load and render a tileset or any descendent external tilesets must also be listed in the tileset JSON file in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. \ No newline at end of file From d5c5491d33e4de9201fbbc85d0b9fc167dfa621b Mon Sep 17 00:00:00 2001 From: ggetz Date: Thu, 3 May 2018 14:31:33 -0400 Subject: [PATCH 18/37] Update schemas --- .../CESIUM_batch_table_hierarchy/README.md | 15 ++- .../schema/CESIUM_batch_table_hierarchy.json | 102 ++++++++++++++++++ schema/batchTable.schema.json | 56 ---------- 3 files changed, 112 insertions(+), 61 deletions(-) create mode 100644 extensions/CESIUM_batch_table_hierarchy/schema/CESIUM_batch_table_hierarchy.json diff --git a/extensions/CESIUM_batch_table_hierarchy/README.md b/extensions/CESIUM_batch_table_hierarchy/README.md index 7e68defa7..eda4d7b37 100644 --- a/extensions/CESIUM_batch_table_hierarchy/README.md +++ b/extensions/CESIUM_batch_table_hierarchy/README.md @@ -1,4 +1,4 @@ -# CESIUM_batch_table_hierarchy +# CESIUM_batch_table_hierarchy Extension ## Contributors @@ -11,7 +11,8 @@ * [Overview](#overview) * [Motivation](#motivation) -* [Hierarchy](#hierarchy) +* [Batch table JSON schema updates](#batch-table-json-schema-updates) + * [CESIUM_batch_table_hierarchy](#cesium_batch_table_hierarchy) * [Examples](#examples) * [Styling](#styling) * [Notes](#notes) @@ -109,15 +110,15 @@ A standard batch table with two walls per building and three buildings per block Both these cases illustrate the benefit of supporting feature types and a feature hierarchy within the Batch Table. -## Hierarchy +## Batch table JSON schema updates -The standard batch table may be extended to include a `HIERARCHY` object that defines a set of classes and a tree structure for class instances. +The standard batch table may be extended to include a `CESIUM_batch_table_hierarchy` object that defines a set of classes and a tree structure for class instances. Sample Batch Table: ```json { - "HIERARCHY" : { + "CESIUM_batch_table_hierarchy" : { "classes" : [ { "name" : "Wall", @@ -151,6 +152,8 @@ Sample Batch Table: } ``` +### CESIUM_batch_table_hierarchy + `classes` is an array of objects, where each object contains the following properties: * `name` - A string representing the name of the class * `length` - The number of instances of the class @@ -185,6 +188,8 @@ Finally, `classIds`, `parentCounts`, and `parentIds` may instead be references t }; ``` +JSON schema definitions can be found in [CESIUM_batch_table_hierarchy.json](./schema/CESIUM_batch_table_hierarchy.json). + ## Examples ### Feature classes diff --git a/extensions/CESIUM_batch_table_hierarchy/schema/CESIUM_batch_table_hierarchy.json b/extensions/CESIUM_batch_table_hierarchy/schema/CESIUM_batch_table_hierarchy.json new file mode 100644 index 000000000..4c75a8fd2 --- /dev/null +++ b/extensions/CESIUM_batch_table_hierarchy/schema/CESIUM_batch_table_hierarchy.json @@ -0,0 +1,102 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema", + "title": "CESIUM_batch_table_hierarchy extension", + "type": "object", + "properties" : { + "classes" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string" + }, + "length" : { + "type" : "number", + "minimum" : 0 + }, + "instances" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/property" + } + } + }, + "required" : ["name", "length", "instances"] + } + }, + "instancesLength" : { + "type" : "number", + "minimum" : 0 + }, + "classIds" : { + "$ref" : "#/definitions/integerProperty" + }, + "parentCounts" : { + "$ref" : "#/definitions/integerProperty" + }, + "parentIds" : { + "$ref" : "#/definitions/integerProperty" + }, + "extensions" : { + "$ref": "extension.schema.json" + }, + "extras" : { + "$ref": "extras.schema.json" + } + }, + "definitions" : { + "binaryBodyReference" : { + "type" : "object", + "properties" : { + "byteOffset" : { + "type" : "integer", + "minimum" : 0 + }, + "componentType" : { + "type" : "string", + "enum" : ["BYTE", "UNSIGNED_BYTE", "SHORT", "UNSIGNED_SHORT", "INT", "UNSIGNED_INT", "FLOAT", "DOUBLE"] + }, + "type" : { + "type" : "string", + "enum" : ["SCALAR", "VEC2", "VEC3", "VEC4"] + } + }, + "required" : ["byteOffset", "componentType", "type"] + }, + "property" : { + "anyOf" : [ + { "$ref" : "#/definitions/binaryBodyReference" }, + { "type" : "array" } + ] + }, + "integerArray" : { + "type" : "array", + "items" : { + "type" : "number", + "minimum" : 0 + } + }, + "integerBinaryBodyReference" : { + "type" : "object", + "properties" : { + "byteOffset" : { + "type" : "integer", + "minimum" : 0 + }, + "componentType" : { + "type" : "string", + "enum" : ["UNSIGNED_BYTE", "UNSIGNED_SHORT", "UNSIGNED_INT"] + } + }, + "required" : ["byteOffset"] + }, + "integerProperty" : { + "anyOf" : [ + { "$ref" : "#/definitions/integerBinaryBodyReference" }, + { "$ref" : "#/definitions/integerArray" } + ] + } + }, + "required" : ["classes", "instancesLength", "classIds"] +} diff --git a/schema/batchTable.schema.json b/schema/batchTable.schema.json index 971f903bd..a80a49722 100644 --- a/schema/batchTable.schema.json +++ b/schema/batchTable.schema.json @@ -5,9 +5,6 @@ "type" : "object", "description" : "A set of properties defining application-specific metadata for features in a tile.", "properties" : { - "HIERARCHY" : { - "$ref" : "#/definitions/hierarchy" - }, "extensions" : { "$ref": "extension.schema.json" }, @@ -69,59 +66,6 @@ { "$ref" : "#/definitions/integerBinaryBodyReference" }, { "$ref" : "#/definitions/integerArray" } ] - }, - "hierarchy" : { - "type" : "object", - "properties" : { - "classes" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string" - }, - "length" : { - "type" : "number", - "minimum" : 0 - }, - "instances" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/property" - } - }, - "extensions" : { - "$ref": "extension.schema.json" - }, - "extras" : { - "$ref": "extras.schema.json" - } - }, - "required" : ["name", "length", "instances"] - } - }, - "instancesLength" : { - "type" : "number", - "minimum" : 0 - }, - "classIds" : { - "$ref" : "#/definitions/integerProperty" - }, - "parentCounts" : { - "$ref" : "#/definitions/integerProperty" - }, - "parentIds" : { - "$ref" : "#/definitions/integerProperty" - }, - "extensions" : { - "$ref": "extension.schema.json" - }, - "extras" : { - "$ref": "extras.schema.json" - } - }, - "required" : ["classes", "instancesLength", "classIds"] } } } From f0e031b769401647b999d20f76c606a0e2a1ea0f Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Mon, 7 May 2018 11:23:37 -0400 Subject: [PATCH 19/37] Tweak wording in local coordinate systems --- README.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d6636a88f..ad70344ed 100644 --- a/README.md +++ b/README.md @@ -339,15 +339,11 @@ The `boundingVolume.sphere` property is an array of four numbers that define a b ### Local coordinate systems -3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (additionally, see the [Tile transform](#tile-transform) section). +3D Tiles uses a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (additionally, see the [Tile transform](#tile-transform) section). -Some tile content types such as [Batched 3D Model](TileFormats/Batched3DModel/README.md) and [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) embed glTF. According to the [glTF spec](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units), glTF uses a right-handed coordinate system and defines the _y_ axis as up. By default, the vertex positions of embedded models are defined according toto a right-handed coordinate system where the _y_-axis is up. +Some tile content types such as [Batched 3D Model](TileFormats/Batched3DModel/README.md) and [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) embed glTF. The [glTF specification](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units) defines a right-handed coordinate system with the _y_ axis as up. For consistency with the _z_-up coordinate system of 3D Tiles, embedded glTFs may instead use the [`CESIUM_z_up` glTF extension](TODO). -In order to support a variety of source data, including models defined with geographical coordinate systems, vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF. - -> Implementation note: Using the `CESIUM_z_up` extension is preferred to transforming the vertex positions to a _z_-up coordinate system at runtime. - -If the `CESIUM_z_up` glTF extension is not used, model vertex positions must be transformed to be consistent with 3D Tiles' coordinate system. To transform coordinates from a glTF _y_-up system to a 3D Tiles' _z_-up system, rotate the positions about the _x_-axis by ϖ/2 radians. Equivalently, apply the following matrix transform: +If the `CESIUM_z_up` glTF extension is not used, the glTF model must be transformed to a _z_-up coordinate system at runtime. This is done by rotating the model about the _x_-axis by π/2 radians. Equivalently, apply the following matrix transform: ```json [ 1.0, 0.0, 0.0, 0.0, @@ -357,6 +353,8 @@ If the `CESIUM_z_up` glTF extension is not used, model vertex positions must be ] ``` +> Implementation note: Using the `CESIUM_z_up` extension is preferred to transforming the model to a _z_-up coordinate system at runtime. + Tile transforms are applied after the conversion between coordinate systems is resolved. ### Tile transform From 469a8609508a7a64d684ced3f2c30b4152669d7c Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Mon, 7 May 2018 13:40:50 -0400 Subject: [PATCH 20/37] Small tweaks --- README.md | 22 +++++++++++----------- Styling/schema/style.condition.schema.json | 2 +- TileFormats/BatchTable/README.md | 2 +- TileFormats/Batched3DModel/README.md | 4 ++-- TileFormats/FeatureTable/README.md | 2 +- TileFormats/Instanced3DModel/README.md | 8 ++++---- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index ad70344ed..358e5cec8 100644 --- a/README.md +++ b/README.md @@ -493,7 +493,7 @@ For more on request volumes, see the [sample tileset](https://github.com/Analyti See the [schema](schema) for the detailed tileset JSON schema. -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)): +Here is a subset of the tileset JSON used for [Canary Wharf](http://cesiumjs.org/CanaryWharf/) (also see the complete file, [`tileset.json`](examples/tileset.json)): ```json { "asset" : { @@ -540,9 +540,9 @@ Here is a subset of the tileset file used for [Canary Wharf](http://cesiumjs.org The top-level object in the tileset JSON has four properties: `asset`, `properties`, `geometricError`, and `root`. -`asset` is an object containing properties with metadata about the entire tileset. The `asset.version` property is a string that defines the 3D Tiles version, which specifies the JSON schema for the tileset file and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. The `gltfUpAxis` property is an optional string that specifies the up-axis of glTF models contained in the tileset. +`asset` is an object containing properties with metadata about the entire tileset. The `asset.version` property is a string that defines the 3D Tiles version, which specifies the JSON schema for the tileset and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. The `gltfUpAxis` property is an optional string that specifies the up-axis of glTF models contained in the tileset. -`properties` is an object containing objects for each per-feature property in the tileset. This tileset file snippet is for 3D buildings, so each tile has building models, and each building model has a `Height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and its value defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. +`properties` is an object containing objects for each per-feature property in the tileset. This tileset JSON snippet is for 3D buildings, so each tile has building models, and each building model has a `Height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and its value defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. `geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered, see [Geometric error](#geometric-error). @@ -550,7 +550,7 @@ The top-level object in the tileset JSON has four properties: `asset`, `properti `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. -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. +See the [Q&A below](#will-a-tileset-file-be-part-of-the-final-3d-tiles-spec) for how a tileset will scale to a massive number of tiles. ### External tilesets @@ -585,7 +585,7 @@ As described above, the tree has spatial coherence; each tile has a bounding vol The tree defined in a tileset by `root` and, recursively, its `children`, can define different types of spatial data structures. In addition, any combination of tile formats and refinement approach (replacement or additive) can be used, enabling a lot of flexibility to support heterogeneous datasets. -It is up to the conversion tool that generates tileset file to define an optimal tree for the dataset. A runtime engine, such as Cesium, is generic and will render any tree defined by the tileset file. Here's a brief description of how 3D Tiles can represent various spatial data structures. +It is up to the conversion tool that generates the tileset to define an optimal tree for the dataset. A runtime engine, such as Cesium, is generic and will render any tree defined by the tileset. Here's a brief description of how 3D Tiles can represent various spatial data structures. #### K-d trees @@ -669,11 +669,11 @@ A tileset can contain any combination of tile formats. 3D Tiles may also suppor ## Specifying extensions and application specific extras -3D Tiles defines extensions to allow the the base specification to have extensibility for new features, as well as extras to allow for application specific metadata. +3D Tiles defines extensions to allow the base specification to have extensibility for new features, as well as extras to allow for application specific metadata. ### Extensions -Extensions allow the base specification to be extended with new features. The optional `extensions` dictionary property may be added to a 3D Tiles JSON object, which contains the name of the extensions and the extension specific objects. The following example shows a tile object with a hypothetical vendor extension which specifies a separate collision volume. +Extensions allow the base specification to be extended with new features. The optional `extensions` dictionary property may be added to any 3D Tiles JSON object, which contains the name of the extensions and the extension specific objects. The following example shows a tile object with a hypothetical vendor extension which specifies a separate collision volume. ```JSON { "transform": [ @@ -707,7 +707,7 @@ Extensions allow the base specification to be extended with new features. The op } ``` -All extensions used in a tileset or any descendent external tilesets must be listed in the tileset file in the top-level `extensionsUsed` array property, e.g., +All extensions used in a tileset or any descendent external tilesets must be listed in the entry tileset JSON in the top-level `extensionsUsed` array property, e.g., ```JSON { @@ -717,11 +717,11 @@ All extensions used in a tileset or any descendent external tilesets must be lis } ``` -All extensions required to load and render a tileset or any descendent external tilesets must also be listed in the tileset file in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. +All extensions required to load and render a tileset or any descendent external tilesets must also be listed in the entry tileset JSON in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. ### Extras -The `extras` property allows application specific metadata to be added to a 3D Tiles JSON object. The following example shows a tile object with an additional application specific name property. +The `extras` property allows application specific metadata to be added to any 3D Tiles JSON object. The following example shows a tile object with an additional application specific name property. ```JSON { "transform": [ @@ -815,7 +815,7 @@ The general case runtime editing of geometry on a building, vector data, etc., a #### Will 3D Tiles include terrain? -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). +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 JSON). However, since Cesium already streams terrain well, we are not focused on this in the short-term. diff --git a/Styling/schema/style.condition.schema.json b/Styling/schema/style.condition.schema.json index cbe67fd5b..6c56ac8e6 100644 --- a/Styling/schema/style.condition.schema.json +++ b/Styling/schema/style.condition.schema.json @@ -17,7 +17,7 @@ "minItems" : 2, "maxItems" : 2 }, - "description" : "A series of boolean conditions evaluated in order. For the first one that evaluates to true, its value, the 'result' (which is also an expression), is evaluated and returned. Result expressions must all be the same type. If no condition evaluates to true, the result is `undefined`. When conditions are `undefined`, `null`, or an empty object, the result is `undefined`." + "description" : "A series of boolean conditions evaluated in order. For the first one that evaluates to true, its value, the 'result' (which is also an expression), is evaluated and returned. Result expressions must all be the same type. If no condition evaluates to true, the result is `undefined`. When conditions is `undefined`, `null`, or an empty object, the result is `undefined`." } }, "additionalProperties" : false diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 842ead934..a71d3d653 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -48,7 +48,7 @@ Code for reading the Batch Table can be found in [Cesium3DTileBatchTable.js](htt ### Padding -The binary body must start and end on a 8-byte alignment. +The binary body must start and end on an 8-byte alignment. The JSON header must be padded with trailing Space characters (`0x20`) to satisfy alignment requirements of the Batch Table binary (if present). diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index fc4dacfc1..94a66c886 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -145,9 +145,9 @@ When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0` 3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. -By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [local coordinate systems](../../README.md#local-coordinate-systems)). +By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [local coordinate systems](../../README.md#local-coordinate-systems)). -Vertex positions may be defined relative-to-center for high-precision rendering [1]. If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is is defined according to a coordinate system where the _z_-axis is up. +Vertex positions may be defined relative-to-center for high-precision rendering [1]. If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is defined according to a coordinate system where the _z_-axis is up. ## File extension and MIME type diff --git a/TileFormats/FeatureTable/README.md b/TileFormats/FeatureTable/README.md index 457e02106..47ded3a83 100644 --- a/TileFormats/FeatureTable/README.md +++ b/TileFormats/FeatureTable/README.md @@ -40,7 +40,7 @@ Code for reading the Feature Table can be found in [Cesium3DTileFeatureTable.js] ### Padding -The binary body must start and end on a 8-byte alignment. +The binary body must start and end on an 8-byte alignment. The JSON header must be padded with trailing Space characters (`0x20`) to satisfy alignment requirements of the Feature Table binary (if present). diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 5b5d9d622..992fcfefa 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -147,7 +147,7 @@ module. #### Default orientation If `NORMAL_UP` and `NORMAL_RIGHT` or `NORMAL_UP_OCT32P` and `NORMAL_RIGHT_OCT32P` are not present, 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. -This is suitable for instanced models such as trees whose orientation is always facing up from +This is suitable for instanced models such as trees whose orientation is always facing up from their position on the ellipsoid's surface. ### Instance position @@ -251,7 +251,7 @@ Contains metadata organized by `batchId` that can be used for declarative stylin The glTF asset to be instanced is stored after the Feature Table and Batch Table. -[glTF](https://www.khronos.org/gltf) is the runtime asset format for WebGL. Instanced 3D Models uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) to embed model data. +Instanced 3D Models uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) for model data. The [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#binary-gltf-layout) immediately follows the feature table and batch table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. @@ -260,7 +260,7 @@ The [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification * When the value of `header.gltfFormat` is `0`, the glTF field is a UTF-8 string, which contains a uri of the glTF model content. * When the value of `header.gltfFormat` is `1`, the glTF field is a binary blob containing binary glTF. -> Implementation note: Prefer a binary glTF blob to an glTF model data uri. +> Implementation note: Prefer a binary glTF blob to a glTF model data uri. In either case, `header.gltfByteLength` contains the length of the glTF field in bytes. @@ -268,7 +268,7 @@ In either case, `header.gltfByteLength` contains the length of the glTF field in 3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. -By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [local coordinate systems](../../README.md#local-coordinate-systems)). +By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [local coordinate systems](../../README.md#local-coordinate-systems)). ## File extension and MIME type From af25031b79f9d2e3488a4d442d37dcee50f230c2 Mon Sep 17 00:00:00 2001 From: ggetz Date: Mon, 7 May 2018 15:37:04 -0400 Subject: [PATCH 21/37] Update to 3DTILES_ prefix, updated contributors, fixed figures --- TileFormats/BatchTable/README.md | 7 + .../README.md | 202 +++--- .../figures/batch-table-hierarchy-block.png | Bin 0 -> 71231 bytes .../figures/batch-table-hierarchy-block.svg | 609 ++++++++++++++++++ .../batch-table-hierarchy-parking-lot.png | Bin 0 -> 65735 bytes .../batch-table-hierarchy-parking-lot.svg | 381 ++++++----- .../3DTILES_batch_table_hierarchy.json} | 2 +- .../figures/batch-table-hierarchy-block.png | Bin 71301 -> 0 bytes .../figures/batch-table-hierarchy-block.svg | 570 ---------------- .../batch-table-hierarchy-parking-lot.png | Bin 68336 -> 0 bytes extensions/README.md | 2 +- schema/batchTable.schema.json | 20 - 12 files changed, 957 insertions(+), 836 deletions(-) rename extensions/{CESIUM_batch_table_hierarchy => 3DTILES_batch_table_hierarchy}/README.md (74%) create mode 100644 extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-block.png create mode 100644 extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-block.svg create mode 100644 extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png rename extensions/{CESIUM_batch_table_hierarchy => 3DTILES_batch_table_hierarchy}/figures/batch-table-hierarchy-parking-lot.svg (93%) rename extensions/{CESIUM_batch_table_hierarchy/schema/CESIUM_batch_table_hierarchy.json => 3DTILES_batch_table_hierarchy/schema/3DTILES_batch_table_hierarchy.json} (98%) delete mode 100644 extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-block.png delete mode 100644 extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-block.svg delete mode 100644 extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 5159d6cd0..8b1098785 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -14,6 +14,7 @@ * [Padding](#padding) * [JSON header](#json-header) * [Binary body](#binary-body) +* [Extensions](#extensions) * [Acknowledgments](#acknowledgments) ## Overview @@ -158,6 +159,12 @@ var geographicArray = new Float64Array(batchTableBinary.buffer, byteOffset, geog var geographicOfFeature = positionArray.subarray(batchId * numberOfComponents, batchId * numberOfComponents + numberOfComponents); // Using subarray creates a view into the array, and not a new array. ``` +## Extensions + +The following extensions can be applied to a Batch Table. + +* [3DTILES_batch_table_hierarchy](../../extensions/3DTILES_batch_table_hierarchy/) + ## Acknowledgments * Jannes Bolling, [@jbo023](https://github.com/jbo023) diff --git a/extensions/CESIUM_batch_table_hierarchy/README.md b/extensions/3DTILES_batch_table_hierarchy/README.md similarity index 74% rename from extensions/CESIUM_batch_table_hierarchy/README.md rename to extensions/3DTILES_batch_table_hierarchy/README.md index eda4d7b37..021a6adbc 100644 --- a/extensions/CESIUM_batch_table_hierarchy/README.md +++ b/extensions/3DTILES_batch_table_hierarchy/README.md @@ -1,10 +1,8 @@ -# CESIUM_batch_table_hierarchy Extension +# 3DTILES_batch_table_hierarchy Extension ## Contributors * Sean Lilley, [@lilleyse](https://github.com/lilleyse) -* Rob Taglang, [@lasalvavida](https://github.com/lasalvavida) -* Tom Fili, [@CesiumFili](https://twitter.com/CesiumFili) * Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi) ## Contents @@ -12,14 +10,14 @@ * [Overview](#overview) * [Motivation](#motivation) * [Batch table JSON schema updates](#batch-table-json-schema-updates) - * [CESIUM_batch_table_hierarchy](#cesium_batch_table_hierarchy) + * [3DTILES_batch_table_hierarchy](#3DTILES_batch_table_hierarchy) * [Examples](#examples) * [Styling](#styling) * [Notes](#notes) ## Overview -The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The Batch Table Hierarchy provides more flexibility for these cases. +The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The Batch Table Hierarchy extension provides more flexibility for these cases. ## Motivation @@ -112,47 +110,49 @@ Both these cases illustrate the benefit of supporting feature types and a featur ## Batch table JSON schema updates -The standard batch table may be extended to include a `CESIUM_batch_table_hierarchy` object that defines a set of classes and a tree structure for class instances. +The standard batch table may be extended to include a `3DTILES_batch_table_hierarchy` object that defines a set of classes and a tree structure for class instances. Sample Batch Table: ```json { - "CESIUM_batch_table_hierarchy" : { - "classes" : [ - { - "name" : "Wall", - "length" : 6, - "instances" : { - "color" : ["white", "red", "yellow", "gray", "brown", "black"], + "extensions" : { + "3DTILES_batch_table_hierarchy" : { + "classes" : [ + { + "name" : "Wall", + "length" : 6, + "instances" : { + "color" : ["white", "red", "yellow", "gray", "brown", "black"], + } + }, + { + "name" : "Building", + "length" : 3, + "instances" : { + "name" : ["unit29", "unit20", "unit93"], + "address" : ["100 Main St", "102 Main St", "104 Main St"] + } + }, + { + "name" : "Owner", + "length" : 3, + "instances" : { + "type" : ["city", "resident", "commercial"], + "id" : [1120, 1250, 6445] + } } - }, - { - "name" : "Building", - "length" : 3, - "instances" : { - "name" : ["unit29", "unit20", "unit93"], - "address" : ["100 Main St", "102 Main St", "104 Main St"] - } - }, - { - "name" : "Owner", - "length" : 3, - "instances" : { - "type" : ["city", "resident", "commercial"], - "id" : [1120, 1250, 6445] - } - } - ], - "instancesLength" : 12, - "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2], - "parentCounts" : [1, 3, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0], - "parentIds" : [6, 6, 10, 11, 7, 11, 7, 8, 8, 10, 10, 9] + ], + "instancesLength" : 12, + "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2], + "parentCounts" : [1, 3, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0], + "parentIds" : [6, 6, 10, 11, 7, 11, 7, 8, 8, 10, 10, 9] + } } } ``` -### CESIUM_batch_table_hierarchy +### 3DTILES_batch_table_hierarchy `classes` is an array of objects, where each object contains the following properties: * `name` - A string representing the name of the class @@ -165,7 +165,7 @@ Note that this is different than a tile's `batchLength`, which is the total numb `classIds` is an array of integers of length `instancesLength`. Each value specifies the instances's class as an index in the `classes` array. -**Implementation Note**: The Batch Table Hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. +> **Implementation Note**: The Batch Table Hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. `parentCounts` is an array of integers of length `instancesLength`. Each value specifies the number of parents that instance has. If omitted, `parentCounts` is implicitly an array of length `instancesLength`, where all values are 1. @@ -188,7 +188,7 @@ Finally, `classIds`, `parentCounts`, and `parentIds` may instead be references t }; ``` -JSON schema definitions can be found in [CESIUM_batch_table_hierarchy.json](./schema/CESIUM_batch_table_hierarchy.json). +JSON schema definitions can be found in [3DTILES_batch_table_hierarchy.json](./schema/3DTILES_batch_table_hierarchy.json). ## Examples @@ -198,35 +198,37 @@ Going back to the example of a parking lot with car, lamp post, and tree feature ```json { - "HIERARCHY" : { - "classes" : [ - { - "name" : "Lamp", - "length" : 3, - "instances" : { - "lampStrength" : [10, 5, 7], - "lampColor" : ["yellow", "white", "white"] - } - }, - { - "name" : "Car", - "length" : 3, - "instances" : { - "carType" : ["truck", "bus", "sedan"], - "carColor" : ["green", "blue", "red"] - } - }, - { - "name" : "Tree", - "length" : 2, - "instances" : { - "treeHeight" : [10, 15], - "treeAge" : [5, 8] + "extensions" : { + "3DTILES_batch_table_hierarchy" : { + "classes" : [ + { + "name" : "Lamp", + "length" : 3, + "instances" : { + "lampStrength" : [10, 5, 7], + "lampColor" : ["yellow", "white", "white"] + } + }, + { + "name" : "Car", + "length" : 3, + "instances" : { + "carType" : ["truck", "bus", "sedan"], + "carColor" : ["green", "blue", "red"] + } + }, + { + "name" : "Tree", + "length" : 2, + "instances" : { + "treeHeight" : [10, 15], + "treeAge" : [5, 8] + } } - } - ], - "instancesLength" : 8, - "classIds" : [0, 0, 0, 1, 1, 1, 2, 2] + ], + "instancesLength" : 8, + "classIds" : [0, 0, 0, 1, 1, 1, 2, 2] + } } } ``` @@ -254,37 +256,39 @@ The city block example would now look like this: ```json { - "HIERARCHY" : { - "classes" : [ - { - "name" : "Wall", - "length" : 6, - "instances" : { - "wall_color" : ["blue", "pink", "green", "lime", "black", "brown"], - "wall_windows" : [2, 4, 4, 2, 0, 3] - } - }, - { - "name" : "Building", - "length" : 3, - "instances" : { - "building_name" : ["building_0", "building_1", "building_2"], - "building_id" : [0, 1, 2], - "building_address" : ["10 Main St", "12 Main St", "14 Main St"] + "extensions" : { + "3DTILES_batch_table_hierarchy" : { + "classes" : [ + { + "name" : "Wall", + "length" : 6, + "instances" : { + "wall_color" : ["blue", "pink", "green", "lime", "black", "brown"], + "wall_windows" : [2, 4, 4, 2, 0, 3] + } + }, + { + "name" : "Building", + "length" : 3, + "instances" : { + "building_name" : ["building_0", "building_1", "building_2"], + "building_id" : [0, 1, 2], + "building_address" : ["10 Main St", "12 Main St", "14 Main St"] + } + }, + { + "name" : "Block", + "length" : 1, + "instances" : { + "block_lat_long" : [[0.12, 0.543]], + "block_district" : ["central"] + } } - }, - { - "name" : "Block", - "length" : 1, - "instances" : { - "block_lat_long" : [[0.12, 0.543]], - "block_district" : ["central"] - } - } - ], - "instancesLength" : 10, - "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2], - "parentIds" : [6, 6, 7, 7, 8, 8, 9, 9, 9, 9] + ], + "instancesLength" : 10, + "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2], + "parentIds" : [6, 6, 7, 7, 8, 8, 9, 9, 9, 9] + } } } ``` @@ -406,14 +410,16 @@ For example, the style below will color all doors and doorknobs. ## Notes -* Since the Batch Table Hierarchy is an extension to the standard batch table, it is still possible to store per-feature properties alongside the `HIERARCHY` object: +* Since the Batch Table Hierarchy is an extension to the standard batch table, it is still possible to store per-feature properties alongside the `3DTILES_batch_table_hierarchy` parent `extension` object: ``` { "Height" : [...], "Longitude" : [...], "Latitude" : [...], - "HIERARCHY" : {...} + "extensions" : { + "3DTILES_batch_table_hierarchy" : {...} + } } ``` diff --git a/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-block.png b/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-block.png new file mode 100644 index 0000000000000000000000000000000000000000..2ad71bcfc2e18461913637804c83ade17bada450 GIT binary patch literal 71231 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

uURG+Ui1ldb~0pnTXJx)Pf&+--%^d;<++O` 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Π1r&*f@=~6mR2)l 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 + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + { "extensions" : { "3DTILES_batch_table_hierarchy" : { "classes" : [ { "name" : "Wall", "length" : 6, "instances" : { "wall_color" : ["blue", "pink", "green", "lime", "black", "brown"], "wall_windows" : [2, 4, 4, 2, 0, 3] } }, { "name" : "Building", "length" : 3, "instances" : { "building_name" : ["building_0", "building_1", "building_2"], "building_id" : [0, 1, 2], "building_address" : ["10 Main St", "12 Main St", "14 Main St"] } }, { "name" : "Block", "length" : 1, "instances" : { "block_lat_long" : [[0.12, 0.543]], "block_district" : ["central"] } } ], "instancesLength" : 10, "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2], "parentIds" : [6, 6, 7, 7, 8, 8, 9, 9, 9, 9] } }} + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + 3 + 2 + 5 + 4 + + + + + + + + + + + + Labeled by batchId + + Traversal stops + diff --git a/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png b/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png new file mode 100644 index 0000000000000000000000000000000000000000..7a5933cf20f2ffcdb23b40689e6b3e76bbc5f2e2 GIT binary patch literal 65735 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 literal 0 HcmV?d00001 diff --git a/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg b/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg similarity index 93% rename from extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg rename to extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg index af3daa32c..95b4e8792 100644 --- a/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg +++ b/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg @@ -15,13 +15,69 @@ viewBox="0 0 297 210" version="1.1" id="svg8" - inkscape:version="0.92.1 r15371" + inkscape:version="0.91 r13725" sodipodi:docname="batch-table-hierarchy-parking-lot.svg" inkscape:export-filename="C:\Code\3d-tiles\TileFormats\BatchTable\figures\batch-table-hierarchy-parking-lot.png" inkscape:export-xdpi="59.871426" inkscape:export-ydpi="59.871426"> + + + + + + + + + + + + + inkscape:window-width="1440" + inkscape:window-height="877" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> @@ -496,58 +552,123 @@ inkscape:groupmode="layer" id="layer1" transform="translate(0,-87)"> + + + + { "HIERARCHY" : { "classes" : [ { "name" : "Lamp", "length" : 3, "instances" : { "lampStrength" : [10, 5, 7], "lampColor" : ["yellow", "white", "white"] } }, { "name" : "Car", "length" : 3, "instances" : { "carType" : ["truck", "bus", "sedan"], "carColor" : ["green", "blue", "red"] } }, { "name" : "Tree", "length" : 2, "instances" : { "treeHeight" : [10, 15], "treeAge" : [5, 8] } } ], "instancesLength" : 8, "classIds" : [0, 0, 0, 1, 1, 1, 2, 2] }} { "extensions" : { "3DTILES_batch_table_hierarchy" : { "classes" : [ { "name" : "Lamp", "length" : 3, "instances" : { "lampStrength" : [10, 5, 7], "lampColor" : ["yellow", "white", "white"] } }, { "name" : "Car", "length" : 3, "instances" : { "carType" : ["truck", "bus", "sedan"], "carColor" : ["green", "blue", "red"] } }, { "name" : "Tree", "length" : 2, "instances" : { "treeHeight" : [10, 15], "treeAge" : [5, 8] } } ], "instancesLength" : 8, "classIds" : [0, 0, 0, 1, 1, 1, 2, 2] } }} + transform="matrix(0.01899536,0,0,0.01899536,12.884858,127.09305)"> @@ -704,32 +825,32 @@ @@ -737,7 +858,7 @@ + transform="matrix(0.01899536,0,0,0.01899536,1.0190546,214.84425)"> @@ -747,36 +868,36 @@ + transform="matrix(0.01899536,0,0,0.01899536,0.2269945,183.61376)"> @@ -797,36 +918,36 @@ 5 4 3 0 6 7 1 2 - 2 - - @@ -1028,7 +1131,7 @@ xml:space="preserve" id="flowRoot4750" style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" - transform="matrix(0.26458333,0,0,0.26458333,-7.2109049,78.452747)">Labeled by batchId - - + id="flowSpan4758">batchId diff --git a/extensions/CESIUM_batch_table_hierarchy/schema/CESIUM_batch_table_hierarchy.json b/extensions/3DTILES_batch_table_hierarchy/schema/3DTILES_batch_table_hierarchy.json similarity index 98% rename from extensions/CESIUM_batch_table_hierarchy/schema/CESIUM_batch_table_hierarchy.json rename to extensions/3DTILES_batch_table_hierarchy/schema/3DTILES_batch_table_hierarchy.json index 4c75a8fd2..25d770c70 100644 --- a/extensions/CESIUM_batch_table_hierarchy/schema/CESIUM_batch_table_hierarchy.json +++ b/extensions/3DTILES_batch_table_hierarchy/schema/3DTILES_batch_table_hierarchy.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-04/schema", - "title": "CESIUM_batch_table_hierarchy extension", + "title": "3DTILES_batch_table_hierarchy extension", "type": "object", "properties" : { "classes" : { diff --git a/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-block.png b/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-block.png deleted file mode 100644 index bc932d13a909fa1af158903f759bc9516956d530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71301 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 z 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 - - - - - - - - - - - image/svg+xml - - - - - - - { "HIERARCHY" : { "classes" : [ { "name" : "Wall", "length" : 6, "instances" : { "wall_color" : ["blue", "pink", "green", "lime", "black", "brown"], "wall_windows" : [2, 4, 4, 2, 0, 3] } }, { "name" : "Building", "length" : 3, "instances" : { "building_name" : ["building_0", "building_1", "building_2"], "building_id" : [0, 1, 2], "building_address" : ["10 Main St", "12 Main St", "14 Main St"] } }, { "name" : "Block", "length" : 1, "instances" : { "block_lat_long" : [[0.12, 0.543]], "block_district" : ["central"] } } ], "instancesLength" : 10, "classIds" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2], "parentIds" : [6, 6, 7, 7, 8, 8, 9, 9, 9, 9] }} - - - - - - - - - - - - - - - - - - - - - - - 1 - 0 - 3 - 2 - 5 - 4 - - - - - - - - - - - - Labeled by batchId - - Traversal stops - - - - - - - - diff --git a/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png b/extensions/CESIUM_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png deleted file mode 100644 index 8ec38de5f6bd060dcf2454ac4b4d7d5cd52be29c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68336 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 diff --git a/extensions/README.md b/extensions/README.md index aa94ec8e0..0af4b3fd7 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -2,7 +2,7 @@ ## Extensions -* [CESIUM_batch_table_hierarchy](./CESIUM_batch_table_hierarchy/) +* [3DTILES_batch_table_hierarchy](./3DTILES_batch_table_hierarchy/) ## About diff --git a/schema/batchTable.schema.json b/schema/batchTable.schema.json index a80a49722..23c37ddf7 100644 --- a/schema/batchTable.schema.json +++ b/schema/batchTable.schema.json @@ -46,26 +46,6 @@ "type" : "number", "minimum" : 0 } - }, - "integerBinaryBodyReference" : { - "type" : "object", - "properties" : { - "byteOffset" : { - "type" : "integer", - "minimum" : 0 - }, - "componentType" : { - "type" : "string", - "enum" : ["UNSIGNED_BYTE", "UNSIGNED_SHORT", "UNSIGNED_INT"] - } - }, - "required" : ["byteOffset"] - }, - "integerProperty" : { - "anyOf" : [ - { "$ref" : "#/definitions/integerBinaryBodyReference" }, - { "$ref" : "#/definitions/integerArray" } - ] } } } From 83f0144ef0f2540fdd63037bda70d63a22b46ce4 Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Mon, 7 May 2018 16:03:54 -0400 Subject: [PATCH 22/37] Random edits --- README.md | 4 ++-- extensions/README.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e559fcd4e..418cc264a 100644 --- a/README.md +++ b/README.md @@ -713,7 +713,7 @@ Extensions allow the base specification to be extended with new features. The op ``` -All extensions used in a tileset or any descendent external tilesets must be listed in the entry tileset JSON in the top-level `extensionsUsed` array property, e.g., +All extensions used in a tileset or any descendant external tilesets must be listed in the entry tileset JSON in the top-level `extensionsUsed` array property, e.g., ```JSON { @@ -723,7 +723,7 @@ All extensions used in a tileset or any descendent external tilesets must be lis } ``` -All extensions required to load and render a tileset or any descendent external tilesets must also be listed in the entry tileset JSON in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. +All extensions required to load and render a tileset or any descendant external tilesets must also be listed in the entry tileset JSON in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. ### Extras diff --git a/extensions/README.md b/extensions/README.md index 0af4b3fd7..b22444584 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -46,7 +46,7 @@ The following example shows a tile object with a hypothetical vendor extension w } ``` -All extensions used in a tileset or any descendent external tilesets must be listed in the tileset JSON file in the top-level `extensionsUsed` array property, e.g., +All extensions used in a tileset or any descendant external tilesets must be listed in the tileset JSON in the top-level `extensionsUsed` array property, e.g., ```JSON { @@ -56,4 +56,4 @@ All extensions used in a tileset or any descendent external tilesets must be lis } ``` -All extensions required to load and render a tileset or any descendent external tilesets must also be listed in the tileset JSON file in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. \ No newline at end of file +All extensions required to load and render a tileset or any descendant external tilesets must also be listed in the tileset JSON in the top-level `extensionsRequired` array property, such that `extensionsRequired` is a subset of `extensionsUsed`. All values in `extensionsRequired` must also exist in `extensionsUsed`. \ No newline at end of file From 13d6f78fe5d2ad0011e3d3fada1c83aa8e48cee3 Mon Sep 17 00:00:00 2001 From: ggetz Date: Mon, 7 May 2018 16:13:44 -0400 Subject: [PATCH 23/37] Twwak image, fix link --- .../3DTILES_batch_table_hierarchy/README.md | 2 +- .../batch-table-hierarchy-parking-lot.png | Bin 65735 -> 66455 bytes .../batch-table-hierarchy-parking-lot.svg | 123 +++++++----------- 3 files changed, 46 insertions(+), 79 deletions(-) diff --git a/extensions/3DTILES_batch_table_hierarchy/README.md b/extensions/3DTILES_batch_table_hierarchy/README.md index 021a6adbc..608951abe 100644 --- a/extensions/3DTILES_batch_table_hierarchy/README.md +++ b/extensions/3DTILES_batch_table_hierarchy/README.md @@ -10,7 +10,7 @@ * [Overview](#overview) * [Motivation](#motivation) * [Batch table JSON schema updates](#batch-table-json-schema-updates) - * [3DTILES_batch_table_hierarchy](#3DTILES_batch_table_hierarchy) + * [3DTILES_batch_table_hierarchy](#3dtiles_batch_table_hierarchy) * [Examples](#examples) * [Styling](#styling) * [Notes](#notes) diff --git a/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png b/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.png index 7a5933cf20f2ffcdb23b40689e6b3e76bbc5f2e2..209eb9863362fc717f914a3f6dbf9bd6d16468a4 100644 GIT binary patch literal 66455 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

    9gm0qY(Dste~q&u z;mN88Q~KAFkGBLn|GW-cerVADH;noXi6-OzZNo6Bbl^Z@)6r$RwLyvF2Td2p-(9rnCa2iuaNXcjKStV3BZfgtvn?*xV zq)0V4wTF`p>b+0`L#a~Mc*(~MRnxHO=r+i3zPMXKix2S72FAu=@$oWdW{i;UWdKta z>C6Ie3-FNLu;E?P68{X%)?(8^+K#B+s})P_eZh;erw)I^JsheY!J(509Uf#!HD6AB z5ltV+uRlGF+_KX~F{JcT?y&sUndk}2KZS;h>Mo0~<+l)B%kO6`G+_+Z4nOJ_ZBpD` zIMqgCo4=9~=A(P5_r*bn1xMWDwC=qGjp*}d-%H*5YbcKK2h{9#T#B|z6gtKZvY&HL zk$rtQIMGe??=U!5EJ>CA3|hJfh7_8)7Sq)aAV4JsUqkaLDD*{hnc}IdtE*{fAQv$0 zyg~-(?p46c-SYLOc(k9g?C-;1fb5|ML55q*?58w9)RmUDKMt zU!|jc0Vz|pGbe2ENWl)8`?i46Lte;2-D@nGf+tHqpt*M%XmE8lb9JBBmKx4zbPNm* zr=3|nPckTKACeS)S%+R2{Pyh+Kv1#Sn&O4svK2c0_u2K(Z7buE+L}(m-@kvQ0Nx1o zGN#8~0`{x8Km-wDjpB4YvVbpmG9SQp6AO%re}6&}6<7oW#7Tfn{pGmLdV$VEDIC?b ztayXvnLI7t*aWv*%(HigcCOREf6^1Ok+cT(1;B7@Wfz{RxSZa+RcimLi-c6V?MMOF z`8{f(#~7|m*Xsh;oAPveOYDy$gyl*?rKqvo|9on9kJGd2;568O6jJXk#Il?Jx5Xzg z(_fCInzNBy0Z+&$R#JRDZ7Z26&4#yDCA*T!x+!G-MW2!rx$ zyAG!wfV;`$KravTC4>hCZM&qE6;&n3IynAK1Kw~D4v9CT0m0j z_q3p{uCA7O!Swmnxm}3`eE+VeKSi(jPhI|L)Cpj430tvhiQvt(Vbn*jmu+JI;)m%(MJYh5@mZw zrFrU!9{D-_6RkB$dOscbgXVNL3|i$bUK1VqUFMmCkAQ<%f5>=g z%?8z6>=S=96I}Bv3L2Wkm>D-2iLp9fJXPp)GCnN3-*=4mcht4p=k6`xT_yYSx&6dD z|Ee>$47->ki1P`V?=9QezLpWm{eGqqjOo4O?WEMn41Lz)0op?2 zo=wBGzXg&KK|?xf_$i{y#GCad+pp8IP8%3e;?McL)iP*q@;FYVI#B%j zu7EHuI@Rqv*NKR%aRZEfLt^<*6r(S?KcTY_XUl0DD$ocj>%46~2fuJVUkUB&LMZjZ z44GyGbQk2kU$7<8@p4pb8ih{=E-$YJP9fg$|NJ@G^Xf7!J$P?0T5N7 zCT9Z67O3roO+|4v>!S^=twZwRm~6_Zu21Iqw%rF36^V{gMpk*efATr8Z-rS!b1xZ_ zZfIe}j=II-09_|Go-F_0!380VIXs4XXHfF68FI8rErsz#dSl}Z6HygZcZ+^Z2?Jff72B=kB zt=LF!Z!nO(=jZ0UG%Wwk(Hg?wl!$l$dim!rE6nfVJSSV1=6BY4*eIx&Fi|SIyq5#{ zc23%??lNROx+yyM*P=VTe-rAQx|9%xKrp%k#WZNF@V?);52RmeMn)-5^mW)^KL-Tp z!z%)5feqv!um;6*Rq{W7{b~R&1QOjs>d;@LFaBb50?drGpzwh}LZJog9}qwVHy27- zwjjgMD7WwjHWEajz#k2S-V0E~#T+d5C zEF^JqdhpY0HO{J*{a;!hz-{`V3fB@u765o=xFadjQLGr<%0^nAL&qA_g`#>Mm=+9+ zq5Fgvw;IqvA9Sxd&TTXxbTBRXzHOnhO2r}!S4>GUWk6*%qR{66}qtSF-V!} z;ijw&W#hxcUWB3^*8RsHpfDT+0YU!{Eq*t5cU~Y2LujoBUCTVRB5w#gkWLo@5wCdn zCkyf>*wnv6=n2W+M`$p5fJ?mK`OZssR8nZVL0>r-nm(HoWecEaddkPg@wU;2be9m^ z4w97^4{wm%*Mr?kDOT9s_gwC!(3mf0bLU0erzKv^Ru%rtgVaOtt2Ry$Z z!Ks82e9@MitSrE6p*~KA#AT4yLSH?;VK-bd7=KKoOol}K!EPgMA#vcB-WCjNkY|1h zk;$nqP&XDlGZ89UiDh?uy23^#oZ5XgWr|Wp8@A&bb)U16-0IjVXU+R+5592-JoDUy^q*1B$RB2r&_SEP$J@y{5kh(YVcW*8{v;&Z7L?F+aT_Evrjw^8H|&Q3$cB{uU}h_LZEfN1O3kL zD!Fje!PEjofFIz57ObsyJKL;)4nR2Ua)?S1QcEfDtniE|l>z4OqHUJO@K8uN=5ka$ z@plZBe3jkZl|P?@YA`>%F%rG15Zf_2#t9G@T`ag^x7*UM_a`hOp`*oe27>0*$zS2U zuLwa0C)3f{82~Z;!p25dX43M7fDUWaKJ;()=RT1Sz+z8HO^x9&yalP$JSYbNQ%Ad;HlmLt^RJPDt>FXugQdx%IZWJ(+zCWWC(pu zre^?VOvtQO4=vU4GIJu>Mi|~>8BQOr&u-r7SQ%Qa`pQ{{K5|pcV_Z6^nsJE->uSbH z+kCQOY#-e!rZ@fD0!DN4h(U?vC=Qp^#5Jn|7mRKSM5$YcWW691L&?j_%L3zOggD3j z4su{*iMF*#xQDI+`5XdFUe_aL04>4p2Wt42(1bcTzC-%-8)OF~dFsERLtqN|JrsTP z>OWjVY9X+^?ciplq@;XKRy|o$w=~IG< zbEHEKuM9pOo-pW6v-gU*_j-H$;+}k0q*D}EFsio3+%R64res`ZL?M)N6}-^JDELQQ z9%i#L{i^b>RsfZBL`UP2&hF-hB}VUmm-i%Hp*^>tHs@-rqvMO&aLy8MIUI&VxlwlV zzd@)8QR4b@kMhJ3*!m!e)CId4Pyj&{X%5mt-q0yv6e~iT1JC_ov!q9b#dsqq^pN=c zMWVkIl%UZtux2~i>e3)k@$FgL+zhO!a11gBip>}q9WYStnALS$VaU+$ zRx7r$(6OITM5^Dg&K)4~-Lo-IsJ6YFawyK0tdRIDD49{r`;OJGjOIUvTCiB^T*ZtB z(mL^d#{o!Jhh0i86BL@K67zUFdxoRA-bctUJJ{uZjng!=7$~5y z$@fz-QqMcH%ukL#L>pjv?bZHLr*39GaIrq~khEg~oC}UkaD8V{ z{6tlqCvuT1)M0^oHv1O+*YR~UjWoOmXsCkq-NXObhK)PdA4v*G*vP8&nG8t`_9lmp zK6XJSLcDDlBBVGtIbV_a?G*F5svMWw=nuBYw}g+Qzi+9QYwMD|RzF#CSBt++hp|^) zT1(#CQa+vFqQcH{Z^nRuI5k2oTnZU9@ZJS+ZWu&bu$Ah;-BZ)Tw{C`GBvZ{UsF z1&P9l0Dbnsfjx9CDNpNfW$Zrnvg~gxwFwt8Wc1Rib)jT1Wk+!e-~V1|MT9R#B}(PM zHMb9P37=4CVADQ+{0%lo#qYw`k*EF@Dr?o%FV4@H%CD@pdw%OzPuvLdq&s6}qAc20 z)_jdFDxZF&l9iwmkYwg8-CrRprSm0HCAWO!$NQyb>6^n}H1O^gp%;nb`EP^>gq>XM zKE?}e<6sY+N?MOKpI7g(>%D2$>)cZ*mo261-b2qRatG_{eg40k0^(FYxG7wmJUm7a zm7HR~3|F_8k7bjZTh;~e%dcnq32f|(=~)Y zZx|I3B6MD6PCZp6+HrA~Cg}9SRs=o!?p*_Fy61M)ULkjvWo4t4b9_XXI->b`<-cnS zSO5a1eoPIg;6=EKpPwJ7vZE@dU69g?Laqvn`zPwAlC3`<%|~@D+Vdzi9)^EG=iwH3 zh@z;^BzXTYA~E%@ut8>f2j#>}Qk&-`1?}T+(E&vMbuI)BE-porJY1Z=Yi;yN|4doi z+og7pSm|mPrC_HJ8fp#aC_|NS*zvyb;?~aFC3QcXd+Klx$a594d0NDb;8uUOWn*Ce z`q;{<5v;#pB7JCe6*b9R&%md$h@DnU?EZuM$vqvEESzEXWwGIzq1s?Dj?l^HR(_Bt$lfSUR^xc+v}SBRvtXbe1(Ym z+C#DD?w=lsR7S*vH*G$@oNdW?HTB$CLH+mH-Ir)+7Tw)NC581p19+VJ`d{zdVdv&( z9P9gb`*_P{MLv}Or!o`#3%eRI7bDstFntnmlaR1rreJ4JGcYhYHZLyzymv^`F-kO} zUXnGEOBDG01pU);xAakSfPyhdTdL2tenH~23jyycKPg3GpGo~BNh~+o37)n=I;|J? zlaf@;(YgQb%1Q(D*v~efyxW|9Wd!IXF+abbAocB@PBc3@8dFz;67!zLf{Q`g(F(*K z&w@GGIZ{Fc??hNwm?)*+g4%cA&!?=upX{hO@EpqRN;o)v*0?@_s%A^NxvGYXi{5Bf z2)1?+{cVqnLsdjovaXOKQEhR4K6~kYpI2cfB-{+XQ2wIYs~L)$@;^l4`I>#N-@eKJ zUglT#a8FRij~_$U*7beKv!XJ^#fKwi#TVz#7$a_}^7Fsh+;FOSr**zH-Ta)ITAcDW zuFK-hx2-|)o(CoxFwIjGq3l&a(UB1zevg@j<&ew|w|Ama(Rqu`F(M!p-k^fYvSG)Y z!r`~?3JS(wEt70r9TFu|hXlqan5vX99*N4_EIzKvxgAn(Wc9B@$IlCvs4Qb zYk%LR%#@A_U(%Opl@?T+6K>f8t0eqj*=XJ}}WyJH|14&9Rk2Ft`>BV6W`TYrJ1zJNbYGyYBqPl-*b=X~9o(863(eL4U%YTfWoh~*D zVXJ<-5;5htxW}tlnIauhK;_e>X=Kac39_Y40oT$=So+StB=Je@pL#rQUCh-xsy9*v zU<0_H7q!k@#ZVK@c63CblxqKcZ9IC9?MZ}`C{;`sowmxa_g){-+7=u2Tu&lHyO&D3 zo7BweZhbeG1Q*JUaZd3)4OrHIVO!&J_DzwSXZ+m3!*lR%fVx-GP*vr};(RC#Urh$C z@V$x6$=Pij_cL$#>=^HZ0hbdzH3|`bSL-9@tIZ+*)%}&S$(*r?z4r?((UJ9@dE@wF zDYEk&!2$U!mS!Vec6Hku<329VYv)z-&4{E7+Ne#^mk&iv%Piyen1A1}7lzO4h-n+l zF!m@{eu`kn95jFzp#aMM3E}uvI6=uU(CYA|jvVneeErFf8v7&2wmX@zT zmRxtf7XVvMipj_iWj`GI^^9$a4s=OfUwUypRMZ`p6|zllbd(VzqXW~4dtrD|+Cmk| zH}`;{YLXzwW?`mu&)BGkImA35bQB^{(5rple(XaZtC%_4L14Ixs;KBLu1LGe?3M7Z z`C3ld`NOckI)ll-Io^|Z>4!$*3bPI9>Fqq^0Sh&eO&+v}FBQbxj3IB)#v?=syr+~L zt=lSyPDX;rME?B?A3OBLrBtoE$avQISCcQbM2;n@W5j9uzGQb!`MC}K=i`=b>Ly1H zS!{(%sn0|doDBZa(ovrQRM3QweLp{(JB6uS^Xt{)+3fY@7T49+#Bzx;saI#um1xG+nSF3k($eaWHg_h>`_lYt zQyDnzBkOzq{rq^ea!r5)&?EJm-<~2jTgXPWz!tjkaGv;sQ)%8CDaoak#v0c*KOGBv zQe0J>+@8(t?y_yTR7wW;&rL_&Frl4^BBIQ6{e**GXiX7f+_TCbuD}GMOIg`?iB@j&1F|plevrE1 z6B4!{<@N2?K5c)j>bxp>0cr)S;a-B=d=*h*eR6Pl$!hMCqT+CeEZ@HLp)C69Pgrwp z^$gG{XZDCOm+K^Zdrrl=$jL)tW7 z@^HLWVrs#*{Qf&K9Y^JJ+BaNm`*m8(sGx+TCvr0spDC+c4jG}PVKm?5e~K;od5T2? zo%l}Mc2>`t#Z95t*7s_}E#B^Zvb_JiIO0bvfpD@+AK(0(P-A!8DRz37e+}fZgPGZ5 zRb{ZWPoke#J%n+IWKa)HSVA1pl_(GgnbjIQ2gM%l-D`0?44p0Irm5Q|9i$1=h5beC zKaaIvZa-OHFtKVla*smEQtu9me3iR8k0%^%ehD|q^`yA=H+{+0)+8O~hV)hdTdk9k zCe%s}as6?xml|NEWi&#=J19+NKoT`BBK^DcCk^UMgTjkCIYEON6II10n0a3x;V!9} z*>k~GG30pPaN?ug$^n@-ZVI!cl(%wjvWNTXxZ+HIxFnyXZUQOuc)4COYb>7dv!#)v z%`Ea^d6r%!KR+e2LBB6sThU5cANXjlJ7^I5LFf@3mn!=Ti8Q9J*4c(kO?}Pym*+*f z)YY@F3~Yoce6aK0VD|U#Y*swFDhU5fNn6Nh#B$WoKb_M?BrDZ(f!5N~bJsjTinpA1 zY@FzXPdNPjcky7tlQ&d$c2FK@$bLn#LCjU()Ps$tug@{RAX#nq>4tGH9vqjF-@o&H zRjc^Q%?h;DYU-ij=W+IM6OAtAk_#ukR6htoA{wVuyI1O?Hds$*tv@AV^OcL$u} zDb$n;fgf42x2Q3~~2u~~tn8P99? zW$4|TH>A+SgyACfs5!!DNEbn-#$`4nv0~ZU)C8hYNho!eO^O9S?6wM4_3dbZnK~Nj z$j7#e64>Cf84{$j67cowA~ZTdo%S*Ig!%AIhJgY7Z%C@&uD*uN%ZOm@iT!EUxCqhC zM+!D_PowztBQG?;x3eGQz6_V+8cG80#8-wF;l^+>E=T}A8Xg%hp13Hg>HKr zpz^x<@5W7(LAUQg1zX)BL`eVKFC0RCD2K-Lzfb#9Y$$SeW>;t|$AO2p_l##@?&Uj+ zap9eEORlT=+ouVnKrKFskF%)RfuU}uQ-b9LvP_ugcRP&-A%85%Z zd3ANqGcq!uD7D7ye0X?h2)dzzzrz7+b?2d=-$4`v38fbbnl;2*)4nJB4MR$>EY(F% zS@Ko#i6K%RbYK?#oSCJlD2a{3HpCk-S+R1+ZQdp&z0i9+LwC>?VjLtH7(~lT|M}Mq z>{)(u!UCD-7rj*CKTGWyE^iak8|ob79VH8uo~_aS$k%Lrp5(4F8x3Bt9*K$6(^bvu zOsaayHGJ0s2nCL-yTZfg{g|ctV01iNt%x$o{pdkPaHu!PX$aZa*!b+7it*AaDxN?q zApWTh5OS1|A~cLvw?G&Z&1sAc;~^m1^aFJ@63p&^_!bl*jgc&xtCJOMFjHcH)V4J% zumi=A;?@H`dwOkcZA3E)eeSTt#2#2%h+GJo?$E6AgEAmeL4-Cl3XStKn|X8?dF)Dh zP7d;&AKEn?us)&dkO~s%N?93KW|+H%8RdP@n~DXINs-uO7qA&8@Js)BtqFSWte0JsKAc4GpObLK=!_Zc>8< zQFURb1nCjQO!UKmpde(O!!WEobUB^{pF!tz4VvDdAE<|-7bsLCFVK(XUhW+DFe=Y3 z1Rs*Uicz6tvcaUVr`kQTguUXr;50G}rzc_Ms7Y{NP_+cD zz{aN~g4791Q0^h~YY_YG!xu*ezd&Xk z1A90qXF#a`&_Gbb)*1Bj%xZf^Epzu1YNEL2&`c2wAg7^5B|={>_?o{f%E_#ziLG5 z50!QWsDL0t=9e zpq`eRdiL+%4ybozLtz+RJqnO9Nrus0dz_APb@WO`CQCV&aJg6A&v~&e1dEvKGj!Fy zfj&cp?9aGUw)+{&R2`1_$Om6vh#UqD42p2sib}`EP|3~ZD>=wieoza73)aUQMD)(x ztR16KRA@I89Gh;MIXm6sQA&`1Ks+!PrPF6%XyfvCNSJ0vZvU#+Qv&;T>L#G)_u`eU znG+wPWuxZ33OK@b83wf#bgZ&<>I92|FYg3C6o~D8eiaXmXB+6*xb@<|Og}Vss;@53 zps5j>n27xX1oTA}6}|mi-(P-0bQX|Ef$RaRcj*~O&$&6bVG)fncF=z7##<{tjKaPEc6kqRu zhco@znis)5O-6eg{Z7%H*1+FGBZLK)7ws~#tOJJ+;{`gGk~~tzzdo3nC`wgp*OylY zumf}qD;@tm-W@F<%FXXuH27gPB{2weY4GWe0w0Re1tkm&wP!28)xzI_MyGLRCJDM` zNIwrIFzu5*9Y4Op1&NMQMW>e zF^e`9AF(*|9_@A^E*rZ8g`iswNc;c!daDdDp<5gVbN)gO+ z(g_G8WMyTMN)AFA*8^J}=Iz_5u&R)n0<@J7RUtmuSv1;h86fBUa?SB{Dpb0mC0pnQ zMvpK)0X>0A*JIY@8^jzu5s@fl6@61Ra`Nyrs-4l*xa3T=2ohF(@hH;&{k-enevb7hS+*l|R;2 z2y!uPJ)@u?rR~8_2jb)@YrDH(Umg=Kq9TR?U`!50#rBT2`Wy{z?~y!)BW^|VXOB+L zoh{5phNMx=)yo)B{2jMe(`r5iPZYTfy?gifUh>c@VLjr%nJ#Jh%rcL8c$l?6q_n}; zl7ivnlRC&VP@o>M)}MOAH25zH)C6MTa7THp*K`xac)*ak4vnPY^8OrUCXfMwTEAg< znBW7PW=NX`R8lX%M+6RkIPaw=qRj59y>Y$c1=z5ODFsSIXO9qWqrK7 zuEDl?Ll+_?&}fptaEv7uEiEl+w+dq~sBu5QXecsb3`56d6@SkT*FS0GVl>fH6P$bdzNWf71avZtO7&^N*S|6;)i`O&t4P+16O|H!s1-Z^)szpC% zxc1ZRE%~&Gj;xtxtvKkZPb%OL7`2p9P6;kVRrTAaBeC)yF4NNPqzmjm%G_x1W1%GPNjyuEGG}hY$_=+ z^KcD6ONlT1!1@|kl&yR_&P{4DoJ%WEvdk^K6babRf}g|g5OLde@Rz2$mJf}OEWFaQ z>+78mZawDWY8o8GfB8G=>_g&~MvTnaSx~4JvD1m;=KI(S^e)M);(jTAGcHNb)z!Gb9x`_?or;(W2YDxm(P^!-EW$aGCVY zrpswde`J3CeBj0%VNOrMSe)l>JkHl&XD4g%bCEm=U0auKsk=O!M`Kx`_995Z%I?pU zE1E3K)*|_Zr#4btm~*`LanA0q451IJw72_H2Xco$p0oKBBq!^o?^;%GQD{?QVy5Ac z_${Ap!;H%cxs?T0Vqz8=n*7zJYkMnQ>3<(;1EpLu0awD@KqF40Rr=U@c02nt$?}v# zQTZBGHpX=mhS59Ev1iZcY@k%p9!F-rf3(x>BToG{&2ra`PA(CK@UMZabdx%NDlIL| zdhyZSr1k%40ov{ck@5;FC=A^GiVK>1^5Q)P0U~1Jj^+TON{|oQnfDWpfKmd)y)+=r z?>GIm^s2@Cx(NohPvcZK$Kw|ZYm$DMbgL#C9zquoQi2snD1@waee1PY$anv0TH?eW zDfj9gLzc$FheO0qU$@>R&;op^_1Z+4#EQmfo@Cs1-KaYAoxe{NDpLrQbCq;E#4WQo z41BF#%tf9Mh(7T+cY?0|Cm00GKB2}0;qbrH(>;h;P0VZldV^;SL_~vv5QANHu|x3l zw)Qp}DHO}$`qwi%2&_oiUMaJ{&Lo5DEP-&JETA zeKceTwn|a-Z2#S^qAUg9E!Sg(@7guO3980zxDzY#bjmvLa;#N*2n@p+HROEsDz?vk zTe~YM_Tr7wg9m0qf9V9wcQLa?LJ&0)(D3)N#t^L^dTsXVm#AzkL z5yrZ{A8l6@f-g}U5@f@z1dG4kH>JRPiD?P2MZ!yxS z$jlCm5P(k`uIKqKur?Ez4%T1i4qHr?2ZAhPA9Nw66~BJ{8mxBS7p_nxgdJSufq`Ns zw!3V6@@_c8ea)35gK-{{7b}PBrgd(-7%eR)4|8$EA|vgm!4{}9($u_Zxf%BC*zV|t zNo{R4fgIQD+fUxLzOMVtaml@cYZnzidw5ybpK7NSTgRB|SVIq*i~8~L7?`OwRn6pc z-lMjvIV1!DFDwe~nSEG*uU@=Bfmu;|$l^c1Yy)xvTU$Sd_l{yq9`h$u&yZ0LB$VCc zD0Buzqg6D&BP+~vOr&e+>*=kIpEbHN}F?UwguW{aKG&H8^WU3Vas{rg3UP!xT6tRiK}&IQ^?9pM##u0dnBTWhA1kT{m%Wqzy4}@#(jV8>vOJiopU~kB@!vvwiyNs zAGsZy-Pm7{U;2Xz-9BNj!))Q2i_5DYYB_1aETjPJOt5{5^(@)mp>}W2h?JFAc+`|< zET1TQ6ToOTRguzD<7I<$o2Nd7p8Phf|9K=aJl`}^*1h$4d#-*TpK`KE;3mhvh0hs} zxJCwzTj^$INIxlSYG}GCcK^`(o~(9f_TL%VXWIQO|M#;&VOQiNm8Eulb&IE)xEX7O z2tO1ye!QCH80-u}UG^c7JFk+YUXpJ!j@1sj_OYn8id(Zk#b5teI_!*s1952R9YG3-!apCihr4_Xk6UMp&RT)FM)hO%`o4DOwwu zBQg{)T3^Z=aYd#a0H{;nXGs$F^;EGP`_zAiD`h=qRii zg2;HmKt{|k?eVQZZQ_nl85v%LF@^`#3LwE zk%hOvC4iCM-WrgTXnp_u`9n_qn~@`C5b!}OAR;PQ@!bWO%+`Mu`abbmy!wqVr~wZ% z5x|1G)U6VqOK-#I&qkj7XWs_xcVfdT_ZPLUryu6S5t?Z4g+)avho8V65I8hsgxE96 zi4$Fhf(M}AME979RX=QxTYlj1;S$`VWgN2xFVtoNwgRP}LsT9wJh+0&l zB|nM8w4mVNVt^^UKfMThw3)g2(rne-Cxm*Hk2aVf{|wK$WKShbL4?a&PEHQ~^W=&B zs~}%eta)v(ei_Ku#MR9)F4;>sZLq&Ds_%y_6QzId( z#I$T_WN;f)Oh!gr@Tow-qgRzY2caL~_JKpEeQ^~_(P?4oBt9pYggvsdx>XKfZQuvc zT)7Z<{?&NH%?s9y%)1q3;l#DMdNb(ulHKN!uN4jx10}-SqP-q=rnX2Y{K!UhMkJDU z;WoHKrNaCagAG-Vb;md_k>Z?XZMm|M? zAwYz%jLbGTfCzmj4FYTYK)S&UHhh*AC6h4zLmVXouNaY3iLGo2RgPc?z|-x=?K_C( z6+$VnlPribfS-0EP*9?krR`69#?Jv-g5iSliSY6ra-G3xr|e}bgl-&r(t?s@mhKam zuZDzk4AVg(0b=WuY_m#PxV8z!6!+3<6f2~I5U3Gf3mZ$>+}s2gq{pixgM?`gBD@^@ zcYK2jpL?>fswUvIfGre_Q;)V;J5CnbNi?$931Dq!@u<{2LteyfKA*q;V%oDB}vZSCIH@4tcTyk_XmDhx94 z2%kgh0}YX7)Ecd^alc&`jf2D7jj=#zPzZr3zym%L1C@#0L-LlHMK;Yzq^X6kZaK{; zp!#o=B`y|xb`8_N12&&Ng?<%ut*(kZqUgCR2HJgZD`IQyc@!U= zk(X4upE^)D{U=9n#-wt4rXP(y*jU$}cK+5d0CA+Gq-Z6{=NP@9Llf7CMaOJ@F{3nA zU?W5(s-kD0-BeUm{60V5ws-*5-3NL|!99i1W$001Vca3=L7z1_2+kscTCF^V))S8{ zeoF@q(;wv8#}gK`EMwlBfj_Sg)vQ$7mtO7;7{$AD@I+jC&8x+19NaZ95O3+bR%X=t z^#LUo>3UmECdrFB@nppj3%-$ANU4ZiJ;|>ulz%}--u`U{Nr`)&r`ho%Q!YtPdg(m_ zOZd}I;Ue5%hX_%Odq*2n?{0Nzt&^Bicon%hyq-5QHXff2fyn)o_rjLFZ_6q3xeT&l znuI)tZkGt-R$jl>SQ(3F9GN@{FU=~p{(9+=n<`Sk#Q4Chhxi zjzT9M#MYFiL8*6tv8k`HCiod+nR2^0f=p7Cy|Y22W7YKz=Y!z1{kGTO z{vj^kwSCQ&zWFV6s#pK5p&Wr?LK{my_sU3~t9d;SkR8BqtGLEcvZ$!*vR#JNe{a{8Yns5q${HEP-}LF=<1eAfMBT=n2Je0g^SF;qYb#v^ zd=f@!tI78xt)=!6KgGy*V(p8#e0==flc`&awLSdTfJzBJD7GKNvGmY+tA+Enp>;WW zw{d)TYGq}lucX?4Ki7p8dl{f`BmLRpOL4U?ME7AAla`a~b>qrVeCoNQc9}`*WPSbn zH;6v#s$GkS*5n8iDk3wc@4m<`9D~`y!@opN6*5WJ@-jffQty6xc2vRqC3`Yc;mHs zn_MrCv-3;SK?-(9AC{E3ruHd%H}v-#V2nC%Go@wp^b~3OnOk8@HQkMseA&v!*6M4` z!c0w!z#^LPZ6h2U&ud~g`yVN`cRB3${j}DCcdIVN#bvSZ;3JHTzOSP#D)uZMYurdj zSNB@mS0v_%lhw?6W?P{q7$MaP*H|AHb&XMl2%V$1w zY?BI!WZ_cc-fyoPyk+%=`Yd~y*cqQ6Pr}Zfz9=7^kjjQ@qDLaN*|+vSier84)OEH9 zP=rvQJh5&ms;C(JZ)MZ4vL3k3xV#u5Y3gLi$Cj0J3~F4sXo2H$Pi%?Yd8F1zJezPU z-vFdjQ~rw~QT49@Q;*p*kNXJ<3c?AFC2kLr@{I$g6<7N`syqmn2&N95&b|_*`>w4myWshZ;5`b1IKZsP{L+6W=*ddU%x-Wcng9cL z3h&&*u!^u!;D;hcnu$bUa9vC{suL2<)c)G;@UFTQ5@}-81B59ByNL%sj{SB8AT-K$ zzsaU{s^-wlNKW2zZ3FG*W{bRl=Uk9!&$>IbjeJ*MFJ~w@G z3zI$rwDasF62-~MsTN7KO&?cM4e=Qh6Y1}@A>mEy`t|E6D}ckN9z2kTc^+~ta_V9! zfYVtkDRb>frDr{ zVCPT)18YnO1m2mT`hgJ#DT#br1hd_pF1yKgXdpdsUchsu+(~@l;NOIJSHuw@eJKQ4 zL68`pPO+0OvhtT5*eAN#buQR^vY*!KAm2xTKlckkWPt8}sj9f~}Iez}@5j2N)t z{?E(H3tSvD04c7iFz;X=CRnPeso?y4``U^E@XMOm{s~LJ%a^|Ni@gswp0E1m`mt@t z$jC@Gri`HMk&m2tR0?c*K4H1USb|W+M)4~#)xj(e&A)3@<6%H_P|8K{-YLF4j0O^; zQEN=EhlYj-E+6!J=?bziaEREZ`1p7jtXYw$qwK9eWR`C@@!J6ViFGpoJVm8wSw*&HC^5;&edTiT~ z6)BUd%*VYysN_Pr&Q5RjJsMrk>_hxYo`l0eR#x`Ji4$qaco|lmk-^9U4=4rq78hj# ztnmlXhXC0&rU3GxdUz0cY(I zQx7~@GYG{1<&D5wW)aF4KpG;j2`ma4$P%C)I6Gu8LP1VOU%qJqUJ1j84&dek|KIV$ z-Qi#U=sND3k*TTk`l<&ylGc|mtzh}V*3eseQ4gxaH7&C@UWR|c$Svb+Sp-`h1A;`8 zLR5ZY!EM-J9C|X86Kc9YpLW~sNIMpo=I8c6;~qjeh*Y%XlK$sAG8&T)W=d@F8mD2| zxfSYV2_Esb(&_WkL>^N?K>(g%1QV1tf;DfYwkv^s)8FvWl?e&Ge{5u{)d zE+s%yu`cE{pd45>c4%vBBlaws$cIECLS^MaG{W!kdIS6`DCaT=$ik&|w%5$;zJ?VF z2D%gF@D^SMkP~`~ATS%W<1;f_fHQ<$jNqP;dwn-42{Gn3VRA^bz-KHRlxQE0Rc`zMM&8` z2U!R@Avy>k@EH(fE_>rBqxY$t@#)m}HH%iA{9JOI`Yw5^XE}4^ivhQZ54;l20ikPAh5u^T~Z=^sr{n0bs&DZ&cDHMm`DVj?o4H<>+F;o zdt!=?5~HbJl*4c3V3M%H99>=a!epp}Q-#6jbw72q#&>Q3O?nY>VAt&ft+B#L19yrV zoSmCXy;G)L>9@{^wC?TI(ohhQW? zZ*dTuDmrxSg^6Aq0X2b)z&p`tM17M;gPxN}Q0hCk?`F^5n1>ch+&F|92m&RAx0 z5?m(oQEAiA3=+-+7@jh_?JyU9=@z_>uY|VvY!r70h|B{A4|XGG6vPPzznqA#6vR68 zlg&v7Q{^|mj(`DrH#fI$OUS0%lmfMKmo|vr$8RQUR-_TrGg!|F3-5+E(8(H&CRROgZ%tDsB^D+6Ft2nLP6{sxVgAa zpx2ISoOhJHUn68>W|r(4IYYF3W(y$2JGB};pXK^vT%MSiIL!T=L?RK{`)JlXKJKhy zTeh`%Ffz|8w`qOF(st@+Aj5K0?vT&&XJNRW9?eOs8c)u#+P_7X>K2zTA|H$6CGJd? zCHMTU^Z8!SaIjgAZgmca%VCc!br?%A%r|j--$38voOrMb888_719cPjPQty1Vnp{H zN{B98D6D36h%G{I-D+xS2>}N+k8(3*_Xr~^BFjCJMY;C&GM&4QSiWot?zd05GA&PW*D6d&h@tUs!Qd-X8uuG4TS|f^za? z)9cq!M8aS*kAq#vMr2$?5_VP~KSyFlNhXJehxhDFK&|B>kz^op!p!Xt+Kr3DrJ{HU zvq1R*#1TPnNWZ|53e6buL+La1X~$~|`#Ssq%Ncru2u$Dz4x9K9dW|o0KO}Gze6;ctN5DN)BbiT(hly&A!fWQv=5Q6XKI&|GG#Q_Su zvsn6s@e#=j?1-wyIOEeuWy$ZmptLaZLF5(-b};!XL$~2r??T||HyI*V8_^JeWzyHi zk9NFz)!NoZj6hIO;fqkk(m@=!0KO#*-n?_&SU?2li&Z%C)KTTI4`pj$28Xdt<_B*|9R22_)K~3p5<{|sB`BsEUejVjjrVB_PVrgKcT5- z*l$v-+8h|6*g8l8$MMFfA$$rtP=h)&|vWXLBxnL zo7Y^1{~l;7PysQ*H_i2^$K2+`n78E_XRcZ(I25cZFV0C>o2jM0bckRhSI=~Gj91N# zPg1h{RuU}9?eT3|-#B56s!r2OY-V%ncxovysZV!x0=sp^F&p~8%=Nd;J% zG$QufQ(0Hvl)N9_XM3Xlw!pPHi!jSWs5B+AMSc11{(YB*YIvTx-aKPz;A#H0oL)-m zfD6+*A5)UpZq;os+2{moWvuF}TGOWSj6C1z;R^gcn`lL}1&__WBdJRhMH zVKEJgVS-f1VK?eoskz$65`EndZ`Ee9+XfMr@pKZOa-M|ywU12tdD)S|yb9Wn+OHf} zRXv4<;(nQMn~0^Qt$SU(WZRzsF$3yY(-Z4-CtGiI;WjRe6WB6J+dG2FF30tUlgZQ= zRjk~XcXmw}s!^W#T2hP#3mJTUZPANLJ7&nre5Kcx=lB@$@0%Jvcqpc1wJQJilqXY2H;EB#b@fX@WGR5X<%tD}E*w9ToYySwf8GnY6G zx);GXw&s(?#+vcX^`5Vc`5KJX0sfl zz2>a9_Z)V;K1ayI2(bg1s@~dKWY3dll9hLa)yknzNSvR)D~p+n^jYEfY1y70>hpyc zA#v{p7N+AYJXKWe24^WfCYiytyLSlc#1JIAhugy5D`N#hr9M7w`xzLxq>ob0A9gd0 z;W_O|ze$;5q?3HAw$4vB7<*#YBJ=^IUNMa=#Em5@I!*+~yu3QL{-EGdW@gMdd>BI3 zTC%k?G<2mD)nodH4IY0{IDY4OBumzrUwxvmVy>_AG`xuOK7U?A>g&Yw&hxM8jvB^s zWT)@fgTT)EN?3;zj{c=YGH|cnOJLE#g!&4J%JloVL(u(t3Vv16fRvv`(cd>CR z7zPL7{Ul^}?ekY7K~xM{XF4KWSB%TuLo^!e_}lU0UC+v5UY1|VQhYFQr8O+ukDmxUwRWJ|(7 zq7?<5DL3UVP$?>)iG1RizVw}r=gPO-$-Q4cnb0f$ zQjkB+J;)NJn4ap2ZRvlk;V{t~#w$`26(=TYz?ytNE`75>u1GY~4r<7)Tk}^gKUPeb z{I<}iA9~AxUq(j9=k@yZ_wT}#FKa7pPI;9%CI%GUokza(>+$cqELLdBct`5r3-M`e zZAC-YYdWgO+T(An>^nI{Ub0GDN=J1}{fvZUs!&;cyiU2PkzdZm*Vf|tr!-C|-NWV@8@=RLBAIygLhjj-MZkzx~~YqW@Bf);sy>@Q_H@qbD-hOjc6foxjB7 r>e_b6*45SH@64o7Y<7@4?fTAN=e6JbvuL70gI^RiZPfy@RlxrN`1>D4 literal 65735 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 diff --git a/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg b/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg index 95b4e8792..673f79008 100644 --- a/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg +++ b/extensions/3DTILES_batch_table_hierarchy/figures/batch-table-hierarchy-parking-lot.svg @@ -524,8 +524,8 @@ inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="0.98994949" - inkscape:cx="614.00507" - inkscape:cy="440.67342" + inkscape:cx="643.27973" + inkscape:cy="359.86122" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" @@ -576,90 +576,57 @@ id="rect4731" style="opacity:1;fill:#edb0b0;fill-opacity:1;stroke:#ca0000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> { "extensions" : { "3DTILES_batch_table_hierarchy" : { "classes" : [ { "name" : "Lamp", "length" : 3, "instances" : { "lampStrength" : [10, 5, 7], "lampColor" : ["yellow", "white", "white"] } }, { "name" : "Car", "length" : 3, "instances" : { "carType" : ["truck", "bus", "sedan"], "carColor" : ["green", "blue", "red"] } }, { "name" : "Tree", "length" : 2, "instances" : { "treeHeight" : [10, 15], "treeAge" : [5, 8] } } ], "instancesLength" : 8, "classIds" : [0, 0, 0, 1, 1, 1, 2, 2] } }} { "extensions" : { "3DTILES_batch_table_hierarchy" : { "classes" : [ { "name" : "Lamp", "length" : 3, "instances" : { "lampStrength" : [10, 5, 7], "lampColor" : ["yellow", "white", "white"] } }, { "name" : "Car", "length" : 3, "instances" : { "carType" : ["truck", "bus", "sedan"], "carColor" : ["green", "blue", "red"] } }, { "name" : "Tree", "length" : 2, "instances" : { "treeHeight" : [10, 15], "treeAge" : [5, 8] } } ], "instancesLength" : 8, "classIds" : [0, 0, 0, 1, 1, 1, 2, 2] } }} 2 Date: Mon, 7 May 2018 17:31:48 -0400 Subject: [PATCH 24/37] Edits --- README.md | 46 ++++++++++++-------------- Styling/README.md | 2 -- TileFormats/BatchTable/README.md | 2 +- TileFormats/Batched3DModel/README.md | 16 ++++----- TileFormats/FeatureTable/README.md | 2 +- TileFormats/Instanced3DModel/README.md | 28 +++++++++------- TileFormats/PointCloud/README.md | 20 +++++++---- 7 files changed, 60 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index 418cc264a..b584ac87f 100644 --- a/README.md +++ b/README.md @@ -73,12 +73,12 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [URIs](#uris) * [Units](#units) * [Coordinate reference system (CRS)](#coordinate-reference-system-crs) + * [Tile content coordinate systems](#tile-content-coordinate-systems) * [Tiles](#tiles) * [Bounding volumes](#bounding-volumes) * [Region](#region) * [Box](#box) * [Sphere](#sphere) - * [Coordinate system and units](#coordinate-system-and-units) * [Tile transform](#tile-transform) * [Viewer request volume](#viewer-request-volume) * [Tileset JSON file](#tileset-json-files) @@ -206,7 +206,7 @@ Explicit file extensions are optional for tileset and tile content files. Valid ## URIs -3D Tiles use URIs to reference tile content. These URIs may point to [relative external references (RFC3986)] or be data URIs that embed resources in the JSON. Embedded resources use [the "data" URI scheme (RFC2397)](https://tools.ietf.org/html/rfc2397). +3D Tiles use URIs to reference tile content. These URIs may point to [relative external references (RFC3986)](https://tools.ietf.org/html/rfc3986#section-4.2) or be data URIs that embed resources in the JSON. Embedded resources use [the "data" URI scheme (RFC2397)](https://tools.ietf.org/html/rfc2397). When the URI is relative, its base is always relative to the referring tileset JSON file. @@ -220,9 +220,27 @@ All angles are in radians. ## Coordinate reference system (CRS) -3D Tiles uses a global and local coordinate systems. Coordinates for top-level tileset and tile properties defined by bounding volumes are specified using a **global** coordinate system, the coordinate system for which depends on the type of [bounding volume](#bounding-volumes) used. A tileset's global coordinate system will often be [WGS84 ellipsoidal coordinate system](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be. +Tile objects are specified in a coordinate system as defined by the type of [bounding volume](#bounding-volumes) used. This coordinate system will often be in a geospatial context and use the [WGS84 ellipsoidal coordinate system](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be. -Tile content uses a [**local** coordinate system](#local-coordinate-systems) independent of the global tileset coordinate system. An additional [tile transform](#tile-transform) may be applied to transform a tile's local coordinate system to the parent tile's coordinate system. +### Tile content coordinate systems + +Each tile's content uses a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. An additional [tile transform](#tile-transform) may be applied to transform a tile's local coordinate system to the parent tile's coordinate system. + +Some tile content types such as [Batched 3D Model](TileFormats/Batched3DModel/README.md) and [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) embed glTF. The [glTF specification](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units) defines a right-handed coordinate system with the _y_ axis as up. For consistency with the _z_-up coordinate system of 3D Tiles, embedded glTFs may instead use the [`CESIUM_z_up` glTF extension](TODO). + +If the `CESIUM_z_up` glTF extension is not used, the glTF model must be transformed to a _z_-up coordinate system at runtime. This is done by rotating the model about the _x_-axis by π/2 radians. Equivalently, apply the following matrix transform: +```json +[ +1.0, 0.0, 0.0, 0.0, +0.0, 0.0, -1.0, 0.0, +0.0, 1.0, 0.0, 0.0, +0.0, 0.0, 0.0, 1.0 +] +``` + +> Implementation note: Using the `CESIUM_z_up` extension is preferred to transforming the model to a _z_-up coordinate system at runtime. + +Tile transforms are applied after the conversion between coordinate systems is resolved. ## Tiles @@ -342,26 +360,6 @@ The `boundingVolume.sphere` property is an array of four numbers that define a b ![Bounding Sphere](figures/BoundingSphere.jpg) -### Local coordinate systems - -3D Tiles uses a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (additionally, see the [Tile transform](#tile-transform) section). - -Some tile content types such as [Batched 3D Model](TileFormats/Batched3DModel/README.md) and [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) embed glTF. The [glTF specification](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units) defines a right-handed coordinate system with the _y_ axis as up. For consistency with the _z_-up coordinate system of 3D Tiles, embedded glTFs may instead use the [`CESIUM_z_up` glTF extension](TODO). - -If the `CESIUM_z_up` glTF extension is not used, the glTF model must be transformed to a _z_-up coordinate system at runtime. This is done by rotating the model about the _x_-axis by π/2 radians. Equivalently, apply the following matrix transform: -```json -[ -1.0, 0.0, 0.0, 0.0, -0.0, 0.0, -1.0, 0.0, -0.0, 1.0, 0.0, 0.0, -0.0, 0.0, 0.0, 1.0 -] -``` - -> Implementation note: Using the `CESIUM_z_up` extension is preferred to transforming the model to a _z_-up coordinate system at runtime. - -Tile transforms are applied after the conversion between coordinate systems is resolved. - ### Tile transform To support local coordinate systems—e.g., so a building tileset inside a city tileset can be defined in its own coordinate system, and a point cloud tileset inside the building could, again, be defined in its own coordinate system—each tile has an optional `transform` property. diff --git a/Styling/README.md b/Styling/README.md index 91e5c986c..109e5f137 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -1272,8 +1272,6 @@ For example: Tileset styles use the `.json` extension and the `application/json` mime type. -An explicit file extension is optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. - ## Acknowledgments * Piero Toffanin, [@pierotofy](https://github.com/pierotofy) diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 0984668cf..2fe67e620 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -40,7 +40,7 @@ Code for reading the Batch Table can be found in [Cesium3DTileBatchTable.js](htt ### Padding -The binary body must start and end on an 8-byte alignment. +The Batch Table binary body must start and end on an 8-byte alignment within the containing tile binary. The JSON header must be padded with trailing Space characters (`0x20`) to satisfy alignment requirements of the Batch Table binary (if present). diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 94a66c886..a131a3a51 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -37,9 +37,9 @@ A tile is composed of two sections: a header immediately followed by a body. The ### Padding -A tile's `byteLength` must be aligned to an 8-byte boundary. +A tile's `byteLength` must be aligned to an 8-byte boundary. The contained [Feature Table](../FeatureTable/README.md#padding) and [Batch Table](../BatchTable/README.md#padding) must conform to their respective padding requirement. -The [binary glTF](#binary-gltf) (if present) must start and end on an 8-byte alignment so that glTF's byte-alignment guarantees are met. This can be done by padding the [Feature Table](../FeatureTable/README.md#padding) or [Batch Table](../BatchTable/README.md#padding) if they are present. +The [binary glTF](#binary-gltf) (if present) must start and end on an 8-byte alignment so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. ## Header @@ -83,7 +83,7 @@ These semantics define global properties for all features. | Semantic | Data Type | Description | Required | | --- | --- | --- | --- | | `BATCH_LENGTH` | `uint32` | The number of distinguishable models, also called features, in the batch. If the Binary glTF does not have a `batchId` attribute, this field _must_ be `0`. | :white_check_mark: Yes. | -| `RTC_CENTER` | `float32[3]` | A 3-component array of numbers defining the center position in _z_-up coordinates when positions are defined relative-to-center. | :red_circle: No. | +| `RTC_CENTER` | `float32[3]` | A 3-component array of numbers defining the center position when positions are defined relative-to-center, (see [Coordinate reference system (CRS)](#coordinate-reference-system-crs)). | :red_circle: No. | ## Batch Table @@ -139,22 +139,20 @@ The `batchId` parameter is specified in a glTF mesh [primitive](https://github.c } ``` +The `accessor.type` must be a value of `"SCALAR"`. All other properties must conform to the glTF schema, but have no additional requirements. + When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0`, the `_BATCHID` attribute is required; otherwise, it is not. ### Coordinate reference system (CRS) 3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. -By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [local coordinate systems](../../README.md#local-coordinate-systems)). +By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [tile content coordinate systems](../../README.md#tile-content-coordinate-systems)). -Vertex positions may be defined relative-to-center for high-precision rendering [1]. If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is defined according to a coordinate system where the _z_-axis is up. +Vertex positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is defined according to a coordinate system where the _z_-axis is up. ## File extension and MIME type Batched 3D Model tiles use the `.b3dm` extension and `application/octet-stream` MIME type. An explicit file extension is optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. - -## Resources - -1. [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/) \ No newline at end of file diff --git a/TileFormats/FeatureTable/README.md b/TileFormats/FeatureTable/README.md index 47ded3a83..fa365e454 100644 --- a/TileFormats/FeatureTable/README.md +++ b/TileFormats/FeatureTable/README.md @@ -40,7 +40,7 @@ Code for reading the Feature Table can be found in [Cesium3DTileFeatureTable.js] ### Padding -The binary body must start and end on an 8-byte alignment. +The Feature Table binary body must start and end on an 8-byte alignment within the containing tile binary. The JSON header must be padded with trailing Space characters (`0x20`) to satisfy alignment requirements of the Feature Table binary (if present). diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 992fcfefa..2dc58f252 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -20,6 +20,8 @@ * [Oct-encoded normal vectors](#oct-encoded-normal-vectors) * [Default orientation](#default-orientation) * [Instance position](#instance-position) + * [Coordinate reference system (CRS)](#coordinate-reference-system-crs) + * [RTC_CENTER](#rtc_center) * [Quantized positions](#quantized-positions) * [Instance scaling](#instance-scaling) * [Examples](#examples) @@ -49,11 +51,11 @@ A tile is composed of a header section immediately followed by a body section. T ### Padding -A tile's `byteLength` must be aligned to an 8-byte boundary. +A tile's `byteLength` must be aligned to an 8-byte boundary. The contained [Feature Table](../FeatureTable/README.md#padding) and [Batch Table](../BatchTable/README.md#padding) must conform to their respective padding requirement. -The [binary glTF](#gltf) (if present) must start and end on an 8-byte alignment so that glTF's byte-alignment guarantees are met. This can be done by padding the [Feature Table](../FeatureTable/README.md#padding) or [Batch Table](../BatchTable/README.md#padding) if they are present. +The [binary glTF](#gltf) (if present) must start and end on an 8-byte alignment so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. -Otherwise, if the glTF field is a UTF-8 string, it must be padded with trailing Space characters (`0x20`) to satisfy alignment requirements of the tile. +Otherwise, if the glTF field is a UTF-8 string, it must be padded with trailing Space characters (`0x20`) to satisfy alignment requirements of the tile, which must be removed at runtime before requesting the glTF asset. ## Header @@ -151,7 +153,17 @@ This is suitable for instanced models such as trees whose orientation is always ### Instance position -`POSITION` defines the location for an instance before any tile transforms are applied. Positions may be defined relative to center for high-precision rendering, see [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/). `RTC_CENTER` defines the center position. +`POSITION` defines the location for an instance before any tile transforms are applied. + +#### Coordinate reference system (CRS) + +3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. + +By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [tile content coordinate systems](../../README.md#tile-content-coordinate-systems)). + +#### RTC_CENTER + +Positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is defined according to a coordinate system where the _z_-axis is up. #### Quantized positions @@ -260,16 +272,8 @@ The [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification * When the value of `header.gltfFormat` is `0`, the glTF field is a UTF-8 string, which contains a uri of the glTF model content. * When the value of `header.gltfFormat` is `1`, the glTF field is a binary blob containing binary glTF. -> Implementation note: Prefer a binary glTF blob to a glTF model data uri. - In either case, `header.gltfByteLength` contains the length of the glTF field in bytes. -### Coordinate reference system (CRS) - -3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. - -By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [local coordinate systems](../../README.md#local-coordinate-systems)). - ## File extension and MIME type Instanced 3D models tiles use the `.i3dm` extension and `application/octet-stream` MIME type. diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index cda49acdd..2c5559e93 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -18,6 +18,8 @@ * [Point semantics](#point-semantics) * [Global semantics](#global-semantics) * [Point positions](#point-positions) + * [Coordinate reference system (CRS)](#coordinate-reference-system-crs) + * [RTC_CENTER](#rtc_center) * [Quantized positions](#quantized-positions) * [Point colors](#point-colors) * [Point normals](#point-normals) @@ -46,7 +48,7 @@ A tile is composed of a header section immediately followed by a body section. T ### Padding -A tile's `byteLength` must be aligned to an 8-byte boundary. +A tile's `byteLength` must be aligned to an 8-byte boundary. The contained [Feature Table](../FeatureTable/README.md#padding) and [Batch Table](../BatchTable/README.md#padding) must conform to their respective padding requirement. ## Header @@ -114,14 +116,22 @@ Examples using these semantics can be found in the [examples section](#examples) ### Point positions -`POSITION` defines the position for a point before any tileset transforms are applied. Positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/). `RTC_CENTER` defines the center position. +`POSITION` defines the position for a point before any tileset transforms are applied. + +#### Coordinate reference system (CRS) + +3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (also see [tile content coordinate systems](../../README.md#tile-content-coordinate-systems)). + +#### RTC_CENTER + +Positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is defined according to a coordinate system where the _z_-axis is up. #### Quantized positions If `POSITION` is not defined, positions may be stored in `POSITION_QUANTIZED`, which defines point positions relative to the quantized volume. If neither `POSITION` nor `POSITION_QUANTIZED` is defined, the tile does not need to be rendered. -A quantized volume is defined by `offset` and `scale` to map quantized positions into model space. The following figure shows a quantized volume based on `offset` and `scale`: +A quantized volume is defined by `offset` and `scale` to map quantized positions to a position in local space. The following figure shows a quantized volume based on `offset` and `scale`: ![quantized volume](figures/quantized-volume.png) @@ -321,10 +331,6 @@ The _Batch Table_ contains application-specific metadata, indexable by `batchId` See the [Batch Table](../BatchTable/README.md) reference for more information. -### Coordinate reference system (CRS) - -3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (also see [local coordinate systems](../../README.md#local-coordinate-systems)). - ## File extension and MIME type Point cloud tiles use the `.pnts` extension and `application/octet-stream` MIME type. From 7b9ae34766125875fe35c0b32e78712fe03ba9d2 Mon Sep 17 00:00:00 2001 From: ggetz Date: Mon, 7 May 2018 17:53:11 -0400 Subject: [PATCH 25/37] Update bounding volume images --- figures/BoundingBox.jpg | Bin 54354 -> 90874 bytes figures/BoundingRegion.jpg | Bin 50289 -> 82364 bytes figures/BoundingSphere.jpg | Bin 59383 -> 102852 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/figures/BoundingBox.jpg b/figures/BoundingBox.jpg index 83bf00aa4dd6bb7019bcd3fb18d66708778cc044..ca066cb56cbd435681f7537d8c7947694ccb9893 100644 GIT binary patch literal 90874 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 literal 54354 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 delta 50087 zcmb4q_cPqz_dgLtv{xiVUo8>6_ZAVoMen`$=-pEZqIaT45QHV_>NTt`dRZl`)mK@a z#mD>mAAHZ;xifd>o|*H*nR6fKaUZ8W0{i4ER&p}%Yw)xmi6%v**m2jFBhygMuR8svA38(j94MmO?KNl!O=@iE1 z)bITwzY2^<9Vz%iBoDaVH(F#2FHbGQy}4TO`^4E3JSbVniHJ9F-2kZMOz*GpS{VJ} zr6O#<2OR~79xzVT2;i*-mh^4rr%FD7lOsGM@-C2ijFZKX=U`EVVQ|}sYB6)dqKF6p znrd~j{cI>`CtB-_$XPudmrvuVD_?5!w_)!3>7?l8znGlDl+di;OMuOs_<*54*Gf9-+(ue(z@MynkX9o=nl?Cu_~m9{rtyMDqlJ*ww( zLmUOB5Ms}rAMIhJNKPGS(QP~a`5o>twmdL>@-w$fI?&NQ zseLXQyy!$J(e4uyxMB3xrMqqs_Qh{Nq0f$e+2>ciKBNeOht5Kx^xU=ZxIib0b&m0L3M)rjSUnVW)zt8zO&oG+HnpxvJ; zRmsR$ktgK=e$@Yh+HcNkGQFh|ME`sd$0wbn@0xq^Au(J0^Z{e8Mr=mhs(N4Hcv+2- zx2LJf4}ZE#<9e?8OE$t%I5lU|F<1)hciAnfvWXO3x!H7WZ3cKVL_mG84v+aRTDN?| zY1P^$BaLYYhhly znUS*m4f%o|0T_PYBD=={wOMM_i<-9*BdzQK&WtJ7+5)uD46WCi#arpww)3}|NQTy| zPniZf2HD1iSy;cf&#JB=3IvIDifk6r7Aef1-cP_yJ4$wLKHk4>Z*A?b`dU>f{IAm7 zoEUm0fIu0t8OR917$d{pwI6rhuSHsY8IW_SF5fgg2gXe%EwU^W@iz~}Lbl6j_LLWq zhs6mDO;K-k5i=N5-Unht8IGt`?$LvBWgd;l+rC}>pYL=O`a(S+e?b9&*wtno1Tud5ZmVk!C_I;E%+L(*I;%+!Qr-}lWvFjZWY1X@cs^Qj zsu+=yHdBysDAgd?z|lbSvNyS-Yf0$MpH+kFZ!eO;JDAzNbWL${K=G$4OaM0Z){lt1~I~i7-N( z3&8^acwZ5X@mDs!w@5BtYSGs!4Ou6^hC6*b{=dNORFRru zMs<>vcVuKY-d`}4I6vb-HTe>=sbiN-B#^qEn;ZFgt`YL(9=L9~dnU7(C zD|1v)gPq-05?(5PGTt-5*V+}P*_*mPJ_||=Jg;$d!}n9x0$8U%DGXuOW*G<6h?GZ1 z1(8}XzMduQEnuQD&Pyx{iw|iWA?Pd<>ZllQb}c()9Ht%GNT?}sxeamE`|CqGDi!0JJ#yOafwqCH_X?S@~ zr`};V&^lS)!M*5iz1sor{=eW5!`^AHN3ScL(yo*7QqIOID1|*zhahG140pd@O6IFy zOe011Dk10UDxe(tt3U8_dq@Oi!?B2zEM09+Gm%#5)ojfrdb~`lxw&!LIY>G<(5l!_ zHRH5o`0F}|XF=qAd;iFoU5HY3-=ME3ZgHi3ktt_AR!-5ao%FLhNKjE~@YP8k;1btY z;V#k|J!F7b{hro%iH#K&uH#o(@UDIuEmg9khcb>K1m>Wbq|0FX0X4sWBt~V}a$@r; zq>De>&fVkhmR(0zj?2K-mSR$6fkX>9P8n&r#}+L5ZYz`g zw2-UPPMilk=|tEND5>od{i1xiJ1o!I3pu8UAKjdz|K~FUw552ra71LB&B4;j)ydhv zu9CTpTWbCFJk^lH%Y&NyVIiB^Jovu8o@h`LFzxTF$1BUn>C3b1Cm}TvaBj7s>_ERr zput|aH#7Q~Z)SU%bnq%mM>oGL2Op2gto;Yae#7NZ_r&&8ZCOGki{Zeh3eGYC*QU$~ z2GLDSR6{&B`qJ2XuE943OT|TUs8fY&gzT@hD?qe*p5$3B1Mt6P(^W0iwr0h?ghSwf z1|0!6$6|@gcV4^i;_yATqM`UBu#x%;@dT!K>mi3zRKAV6Ei=es0|s?5x2)lY1znNd zqw9H)lgpdYIwN*c4FCvjU@!YBhODm{@AyZCePb&yCI7`(DK zMxyenuFAE=)hSz5@kLy44v6EM%c-O-o!wDDo_67qZ__P2e0=$}S#CLQjdR#)TjdA6 zEtR@wUISl93%rbjN+H2(&H=#Oc|4_GxO~B(dWL#tRaGA&Z649=DE`QP4B5M6T-WHX z_5G=Qen=^H15ymzRniC*39EEo{q1KN(MBUMg!}+gO&@KWVdCSW0UD zQ1yMvcW+`^oAcd?F0fiq#gp|_9sFj9V@-p)V5z@N!sh$8jO5Fe6j%V`d?UkP3g7S3 zXmXGjQOkWJK1rurGWp?khsaMpw?UK20yO*>ti(Z4v`nf02fFf=0*bY(8^Oo_Mu%Q? z@%ii6aPl}&q?-_eQ6f@bZ&(s>`qVB{3);a<$L`3+R-)0B@ph5wu>3j^TeqpT&7V;L zft?)+3-!D4x-2spWda)SV2X)U2*Y7H{RqVtm=gx?0({2m1WfnVC_=|wICW$3WAVMA z{A~*!Gb6hc(d^lF58+!p_QthWrVSYEA=(~1BZB_ozT$xBwUiUKM~Pjk=g?Si&A&Fm zV`y)MtH85x#W!)wGN?N^{pXT`h3D#U<11*NPH0pN<+-y~dD(LWq#x^r|fxR_N_r$AA zTpd%>mQ$ZGe3iYelS&b2Do^FL@p-@?!c`joko%V}5_b9fJJ$JSWy(k^+&<$qN29VJ zj$|WWKwfFa3xM&92d0DwoPS8^Fh$a`89K6Wau$Nq&>rc^|A0Yek18NqqzKizoBIdf zKV;cI-ZyH_M1WnLxtMiyVL0$18caHZIg(29HomDS1B04q&++j8h(wN5F-}@P>=*F- zoi8&+^L0$0eLX5YA&Vxcm)ZWx zXYQ~yor*GyJHad-GYRqfJ-l*ZB_AI!0;f9+vR#T&xoy&Gd#ev6)ZCLCGY==7vtAf4 zt-L^O@v58NNwAi<7iGR1{lN!$D`%FWzP^?-#mpOa=;7!K3GvE$jq1Wq+?AS8nX?(M zqPshz1RDDr3OP5x%%dXLZF=;<<*)^qsc|o1Uwqxcb$j2A6lINzFX;@vz|=v~ke;pU zlLB9^EjC2U+xdn-+G417R)^;lGAOv3olGsKc%^#!c9)8o+KPOergdH!)L(g99@$h> zy0j;z9W?5Tlz7&MWhS_DFLL}7QclRIp6av+6fc26S)rwhBX-T8xwa@LCx1%$7e;@E z_4&U9E8Yd_=xj%&sv!Gp&v((h5?+3n($D{{T-gp9vnGtu{Ms!1m10-{=OVhcNb8%6 z49^d<(irFVXWHttsJ|-u2P-7uisYa;tT969nl+DwU8=j^le(@A+~^$El<$0EYNE^o zlu=M#_~)ldSrU3>61TdI673-q9Oq(%FLaw8Fv9j}1+MPO{DjomU0$jafDwHZ6jpbL zrOKr7<`uS$&Mvqr3m5yLH-4O~=Bjdjn+KE*UeIxOmk`te2N5~0zLBJ#IVbd(+B1<9 z$Xw>4SE_w0Xc|FZzmJ+P_v15cnqmj|e~BDKoC&7r?|sPQM_u?+>yYEZ==-YD@5(P+t0!x_0^j&tztLxKUpS0A%X*y z!gg44;MtB-Ugw7795jASf_*|lb+USb`W)E!UbZxD}=@l=keQw&>e|S*8>0gij_Pl_Psv#fwSEHV7 zvX!lYXTpaPJo?|?4sOL{m@mJy62!+uUQg10%wZuF#JScJ76*U?L!ZBd{B5ZC4@<%$ zIM7j8qJ)Cf_Gyj6)OmI(Bu?Efetd6)-k)bs+!gAX=T*b?JE6c@VM-C?vr^Un_0O)Lpb`H|Q2s6GbZCNKbfC(I#0>T{@VrvRT_$L^ zz0Qz;6HuF)DN2_MG0wd1G-VZve8BMeBFrl1A#4?KJIgd0Onnqz=vo*41I)ar?#R@?Mc7-27khWR)CAl1I0PUNnhUEK_s2$>OEXi&!* zZpJ%ZuB`uK~M|yWa z9kg1LCr;yL1xjjv^LmL=zql2Wa#7&|WmUS_79rj3qV~qmK0^x7xKn45C?*}|LoseK zice_ICk#xLwmUNKj|eqQCUUA5Di84Tn~@`1KY5SjeKpm84{=WwPw*^{FcX6q59_Zf@4~f%!h$M$z`R1{7c8ABp8a z^UuM1U%jt== z+1PUkze1%}f$;!kn+S>__5-qj2by{epi$SS z8w~<+U@^t0RSq@O)Z#}DrZi<{g7;KmOeh5jHmFXQUoj~}=4VLq-~SSOI3SxkM?va~3uL!p0AGU-J+J4Bz7BlgzY8E=-j@XN$^Xo?XHd3n z)phys;d}jm&A^C|?d}zEz)jM61hbSH_B{ z%ic(;;IB}vxeoYxe9YUV>cuwYw!y5c7L9OqE2z?Sg`##v(LO?I0D+Py(~F{to4{Am zm2o}sw?jPLWH*n8{{$q@Pe5@qeKo6njD_#`>K-ug09$W~aJkc0be4;ta(QZ~{B)4PkK>L0>(|nlN`2pi*f4WCLW8thh7Sxhdk%qm= z^@D#(Zg^eoXeHdgTSW33x>C^7Itz0h@tUor3-O)8a@hwVE2ff7C70T-s|xddNr{pM z{egl3tM<4H-|P^BIgZYv5SyW+aGhp zxt(546X2;y7fu%$G_)M}$U!|rN%FO#IW=BLVH#mY-?M_8}%<57I)<*C3P zc4>jSBya4A@`#5B?#WSXBmcC50U~ot?w$sj+E^&=%Soa-`Q$Lf(x2vwmds!AVzNHYQal_ zrON@563fvnZwbwSSNk*FzvBNJKLC(e7xQvIVA#9IiVr>EWffdAmp5(v>1rVs3c35o zNbdY@yOVEUgFTh}39HeeD>(kOZgH&}L9He}&VwYVFe!xM$F)-&Xbh=N5{_3_-d2{85|`jYvQ;-?4WI z7IMT#X4xfll!Xw+4aL3fqqx@|(xn?tK%#z~s(5iHjMK;f0de0sWC-&}*f`p_33NhE z2|yuIqG^|G{B>{Im}GoMdY0Xx^NrF3LN77N(`9I<*4mGDa9G_*E160}Je$j*m;nTv zd8cPpn>QFkZY%GlDNqqOeSm`6Gfh6&?kB}^91V(Cnzh4%;-9<$R~zc8G7rhye$&NztkAGO z=yrC-4HESz(029j>0W_$Dc!&~bYrX~U+?s6aqojG*x!&-4}L&I-A6dUX-;!u>tfT@ zJz2__)k;FflH%7107x8l)iGh8&!I#uQnMj(-N5n%$)eQ3jc!z#mBi1V6;F;S$k8RI z&>GY8{5KiMk^=3D+qs@Whlv)Z-%7^OpalW%LA1xE( zRd7=_ds=>FGP#xe{l)6C^*!mRzF~BsH)5IWgf)NE-}$5$NW2S#hnWNkYId&&ZTrYy z>qDb0(&95E3pu5hkj5Ennw&O5x#ChHJfkZzL`XGI0{RCrw; zi>JIe`V|ua-xgMvBU~;-Y=$F0>$7rle+U=3XOJ3q`Yu=PF4}FBXrCZYqluq|rr;s`jGmqc_Luo%`!u7(zoncJ$S3M1sR$nVV zRDJy@T-GCbn4oT8DRpU}#r3r#pVh3#V^>=oSl+|YVv`6%;z1ls?6yq4Ti1#M1sMqn zot7n|f(a3%%C&TwKHowmJhvv=NwnpGTOtHw* zfS|JYVAiM2e(=bWX9qQxR0Z;7fZ@^4yT9?ux~PS?%1R@jaIr29%5|&TYm9fcv>m`; zl{%%LDKXj3C8ZaHNN!_t^qZt2`F25=&LS$HwyeRgwV>RXqZCGHkHInTddk!^>@tt zRIY!05D-zI=1@mfM9tmbY9rGahy>262~1gZH`6bp2HXRdhggrFogn&aeQIptiSn$N zA27hC6UX1iE=IuY&5%_4MfWyb0-lMv_Dmz?%~pt-CQa#*Bwx}Is81^2M-pddY3qRe^3A34p#K%JH4zxJZ?OZfavS$I94lz{c54Pty# z<&!SeOd4f{S(V9e)!;v483+S8k)yP{+w+>zAlXtGfs1+<0`_V3x;^ac+&3X7|Naxv z=sB-pys9mW>w0RxG~IHm!cLcqpVfUW_cu6z3>`3UO6DpkSt^0^YegLN&%yDPG<@wrN|s}Fdn(`_fccNDGy z=e^3bpRV3=^}o?kZhOGsAW^BGXd6p*9j+(A6NX33gh=-OGFzi6CIC{Z!aVR3+Nr7C zA21T>|cSBc^zz z;dJm{q3djvv3PZ^$hr^w@ZNj!DHixABtFyL(zD^8>%g>X>_3i~FFmx>hfDhCvg3Zn zAp-W3uNfuF7{o){lKB9ujxu;sfq}c;#l}9Z;uaphuhWSuN~-vVnpM!Is(|;1Q@jra;I=ud{i|WIw4bR7S1yRr3#TboLF+ zFtXt>vgg}lV~_b~AtHC(Vx}@_a5`k_p<-(93$pAaHL589wOkUiwVe>Z?$(~9w zGSs~Ahydiuw^V;WOPBBg+Sv6K5*({Cqz#lMXb>vJ&_)&a`3G=>ir58TWmfv|!{H}Pf3j6$u?D}({WyNoX)rr*c zQH9;MLm)O}5|NE_K!AoOtFbB;Cp3}jz8@J6^g*|P71=E*Uu8*}^o~NFl^|VyMXKxW zh)6cFWRQ!H>_Ga@k(8*Dgi-g2*TZVQbW*+okLoFCOG(S|c#@}$+bix;xWZ)J`7ma4 zjawUZu9Lk!&1q3B6sc?0HlcLW2G=dUtN4cmh_#!zHhKG+3*rU;dG~n5{a<1p?Sw3h zCR~w2PpGqHF6o)aaNTOzBE4IN3=cifisG5EyVhx|%ofjH9cPP?&%OK-_`Z8^-2ce< zQ*>8tyjh3U3y!z#5LSy=PG9uG-9M@rIPIMTkM7i@3-Tj`+i2Wc*DTwo;4yVUYOEzf z8WR>?Qw_(w=t<}k$Poto%^(&?XgbV*1XfqrNPwpkVgTa&S13Ikdk}HxMFOmnOZhU{ zScRn>!LfF5MI>-Z`TSid)m>h))*(3y9HKpURb=-J zEe-JAW~dj)f9BWLzxr~Pz7ClEH@%rE%-CxGfZ;V*`n%?CI%y;#@5H1gvYo@h?#J?# zkwMz6;WYAD)n90aTYFXW2(6Hv2oh;pQKWBp1t>~VMT}=Y8)kAIrE)M0(VCD7>?$>7 zBc;^n0PWIdn7Ft&yEr|op1bh5h;edqBY|B9cWR~f!3rcZ5?=8JM*_y!FL>CRY4uY6 z`hW|3LkSX*cN>c0Npm@wLU^x`tvXA3cryjSxYJfwujh~>yKWf7-w~l5ylf>-3rsXB zzWzpcw}2(A`EpAl;6!7^q*a;n>FM^8_<&pUui)2R*Jr;(^Jiz z7EWbQdNUzwiELAcuz~8GYGxZ#3X6MQ(X(=pQ9_83jH@0753O8ovCTm;QFTbd#3YVPal>9B4REcqr{3ilp_IC{d6z>$ z-;^Yl{VmmqMqcecpRGw)e?Yv*^KguJONzu`m#b_qwf9)&&A@D~+qZ1#nHOpEzxRzH zUoCR=r@a$Isg#GTvV=6Qvs4hpOP;9saOt5M-YfT-Z=8&c?E5tB778o*gMGLt^i6AH9MW8~eMBMd@#k}sd*txW zUmYvM=c=b34G2w*so|w}=knKfXFu+~Q3;1oKv!H57E@s zO}I0-QU(YvQj|6vT*@HMq}CHP?z>Q>rSM*sNzLUR4Cjm#qfMyR#60PcjJ1(`o!=w^ zM(O&AXExARz)pGQO%o2b%3I{hXMZT|`5hYpL7v$v=Wh%}Jnkv;QRtS)EnwoA? zOsr9^9f71vcj&Tv-q{^n={hZXt?;q`VDcM@`wW~BUwwMO*zyoIT)Q0k92VS%vo_&5 z@NAnFt)m=j!}I<1&o{SiQR|P|r^?E*{(v1Axm;z!Wb$qBG0)9brHP@xUxMUd3eM86 zvBug%zVixw|HIPj2aIn3*dVB5X~ER~;%*s0*=xjiZnYmau#m^#@H~Zjx&yb>dM6V~ zO)iv7bpBz#r9wf|{7F=@?9cv^Z=82uf&!1FG6c+D${CHZ`UZ7KS}Z(ZobR=;K43`w z)4S<^#HD|`9xzx(&{0FQf(j%SAgP`QjQR4X?h3anKbfQ4vapf{YM!PnD%y%^=Y75U zB)0X{wps2I-Xe5$TjV~&F&~h}c73uh+Ve%$+x>B38UEK*s_~>QBI|a-2i_30o>-+F}0n_RIrDn9@}tzD`ywmgz$U6^2pYV4@}V#0e~RiwVpI#$6+6d ziK(GZKk5+p%ZFM5}LeEB07Ow-B^?nFk{~+_*R$-y3X+ zS%)#*yoQ^N&))c711&w&dhz>f1Of^2e>C>{^o?#6>s;wmWqIWP;^>GBViQU4!@%Ni z0`ex7?7=GlirM&-i0UE)DKz$|8sB#7+6RhY3;MyoNPV7LdJiL=U&F&9roe@DkzcHIFeU570F~?E zs}QMt?R1k8X%bm`g9vep-&9*?HFC2Y?sj%0>WrD12`@R3tNXCyY6hEBMFI~7(%YhM zR(XNm18hM8K#)r3+fK775qHmZ3Yjc?WO`SZJ@hE9`~d@H)?8{{-_IWMNsd*4DmN0O zbYrK~IE|J**4;5v6qu`Y<4^gMkoRsqqke*#8y#HP!w@^7W)r@#y6TsQB&kJ({~k~n z*N=a(pf_EJ=gozGmD%g|Y-L~QGb@x{)}*{jzRemAh=6$nc&J;s9#w@;L_NfDWX1;f zgA{8L&CugPla&q^jIt1uaj=L9j>v7kO>iZv@I{#yFj=Z1^hj5suAreHlk6xOdO~tGC zkL?@nH)Md^lJ_rtLe0P( zW1op?pj5j(O6SGsG}|y9VU+X5C7gCvqkY7aB9o<ljL@MSz@=+u&ho$E@@+YCv|5!lPpX9RtBFAzsm;)xl+IOcgB}w zv?e`!9yM+)(ex3tg&dNtWf4THF7>sH1@rIjyq>5xvT-*@SebMwuG=C}hUm^|ckTJA zWaD~;*Gy}ajXrvCzGfVk?Fg+T`J+=lRg0sYiFF84w6c~o*WtFF1;mt1H41YebaJG4 z3@jau8Yt1&f)UJ?}7_2+|W7kC6A)0#ogArRnrC7Rk7^M zkyp)&-P0fl88U`m7(+DWFZ{E_Z|FSfcF4P{+7q!qqOQg32>>+YZQGP>%{+;qRf&~RZCSeh#&;3zf5F(`&*EZrUZnHtdrJN35%>&&+bZPN#<>rIEMZTdqL z_b(Dls0+v2gX{7Ya#^SOB9&y&ae^&l8lD*i+;mM2e4h0*DNI`E&%aNx9bO{P#uz2{i z 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 diff --git a/figures/BoundingSphere.jpg b/figures/BoundingSphere.jpg index 71507ac2ff07f6454e5169810c456d19f2e1d7bd..56b90dba451a353eb405888d8815ca3e5aad96b2 100644 GIT binary patch literal 102852 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

      qkBI2BFgoVR)VcrjI$ra1AhO<%*^TwAZ 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 literal 59383 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

      w^uhIC3c~`$^#Y*Hf^-mgR`2WvzCvh? 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ⅅ)}E;A`dWmht8;I1g$xeu6) zgWR|O09vW!saI#*26*X1NZwG!LxcExSEitTS1CC@X=>SPF1R2K{==xI{KttHcK-nD zaZS$XgB|7n0NJM%Rb|NBqxt+U&j?1##FcO8e`APkCjbYcnMWG-Tu#|ND@tsFbUg^ zI0OFxuUF11iE9~Msks~-~b;&u-Ijcq|IU#p;>A|8> zxido~WGjwx+*N&mlB>8Ly!5HZnU_+C$)E3YN}^>RVG*9##zke$N=SiX`S$_>_p6Bl zvp+vvaZBYW`MmEe`;aPiV54|uC4KsFN~LK@4stWEwMlMd-VV%gs=qHv_>D#_0WqanV&n2{FB7i!?tamx&$^HU{_4h!hF;;&i8|D7+7^zH(s{0Yv zH9vUu`c+kSNerZg^j@bF($3Ou#?kkJ_U4=bw5^9`+^&NkTCTzTvJ=b*dGzT<=5#Tx z+=JI0>U4>fVrg=*WR?E_BDQisF%iMs2H@YqdQ?6@Ay~=+?#pqK)qBj6R%rxS><(%s zbYjXFJgfPC`sla{sT%D>7-QYKRHT(9Q)x#30B5y9xOr~Qzy{mr`_vTm=h3W*%(N|jORbaOevQe3MzE}0PEC-F};bx zsO#%ZjZwZrLYxzwwMl?{tAo8fwf_KTlTrel$m~y6z@}l(kg$wz{jmsQh*SE9o@T;QxVQKGMo;2;MNte^y)5Jky2i2 z=eLn@Hf5F7_W5oibSM1O=O{nEEi%&H+_a=gBzp!&%(>>R8`%JSI)UgjStzWnAO)Ge z_e=^_zDX5f`n`dcp3N^s{zvK9f2406(|q6B)#TQfl-$}~Y~{^s^|t*>?{Vgk z@rgGMK32v)wG-Vil!4|*Jsr0UeK@Mi2j2OdAIqAITemTt%&pHgtn!>HkG&1OPbQCz zd{IuMszVtiDLcI*ud3y<`IjE;V=exTWE<1V=lRrac-#5=K0Dz@`OQX$!5r;n4ic8<^rTGWM8?lAOEAw*LSU zhn87XAy({iw8vH>1&Z=V%f)Icjkr*l&+AQHk%>>1cYiviP~$S>feU~^Deu;!Xj6F+ zu_ND~YS}9je49XQe|UAMo&|8S2J~JR1XX)cHe|(aTjeYc7kA_RYQkBwe36HcoRYZx zYeYx2zyZRZpIUi@sa(c{jE};TtV)@hvB>#WF|Tqxy?Lt<+JacT=x|S|KHaL?c_^gr z>-7FYq%xoi3gNlu7~}D%Rb&ojAr8{9vok;8`EydGxiTt-`Mv)Dom@#&43=%Xcpd5| zXCE?$Bc6H&spox17C_PYN&-h7SLVYGzTWiMqjFt|EZqY19Vy{l9J4TQ;`ATRq%lhx zmI5>^KZpa(5|JFv<6^cUPwv!~_Q}OQV#|e$Fc>2}KmBzA$cUv(rT2ezakiuomtshn zm+y0tpZ>LGC7}F(2xE^$=jEnJaLl-gS%>wjD+4hYh=O`Ib54re4ANjPzI**C%1XfG zQjRu7-_}k>-fBkk83)Kg>CbAoB2l?agLhxfnxfcl%#25N>_tyHB#cKZFfFz*`JO#` zRc(@-7m-(U9=$6_v}=GAG3oO+T4G$FZQF6r*P2|waD_6=OQ~#%V+IxwNVPjp``AEi1YFyhbvLYnpPNe*+&mP9AtGm$NQMp1{L@^|4!KKgdG0{(; z{{R}Mr*<~R8NR$Jq&Sy!Q4+^@KDeotWkht0Dd%q=!hWWuKx9n4Gr5jNcGU6PG_HY^ zD*pg=xT#@*Vox=`RsJG-{VG(Ocp*vHyyI^t@v5*Bd2#MYF%Qbeb8g7|hkAI4Y z`R-3jNBH3VY>mcbnu(yV|pC}ji=Hy&8~3U>ll z!{B_uPJ4fmN;C5n1cmbJWv| z<7h7#k8capnrlTgn~}y>zH|L5vfCGz4kBHr9r1xluP`N9A>S%_sq*JPUezi(0Hs_H zPp{!g4Yp&tc(X!ny?lmU7HDJJa-=Xq}nrcD#s?^e{|kn0l;3Sg)$PVs>&B9sNGY> z;Y7O`BmP+FPI*TF6pVq`ed^7~T;lDTb$O(cGy^T4$MF3rL=q6BkViOa6nxY@!bbyU zDPBflj&MEc=H&8Zzyqcj=A+&pG8pQpfn{yWz`*Bl{{R{hO0iKJu-bX|^rL8U`~Gzv zo$3^pXJ<{*GM`1jU(ST2Os&wm6;%~f<-dq}fA#5sp#9^PUCYNOjDPy-q<|R_DRvfVysJzKh0t7$rf1K324mSS)52ZXsBCg%vyZ#@g2ncuOOEEom`qb<5 gvVyD!Ow)vFp^K0gj2@#jf#U&wQ-XT?(?Ea!*)06cS^xk5 From e204c9bedd0272e6cd22ec1c5acaa532852ebce5 Mon Sep 17 00:00:00 2001 From: ggetz Date: Tue, 8 May 2018 17:58:46 -0400 Subject: [PATCH 26/37] Add Refinement section, url->uri, edits, cleanup --- README.md | 180 ++++++++++++++----------- TileFormats/BatchTable/README.md | 24 ++-- TileFormats/Batched3DModel/README.md | 18 +-- TileFormats/Composite/README.md | 12 +- TileFormats/FeatureTable/README.md | 18 ++- TileFormats/Instanced3DModel/README.md | 23 ++-- TileFormats/PointCloud/README.md | 13 +- figures/additive_1.jpg | Bin 0 -> 59538 bytes figures/additive_2.jpg | Bin 0 -> 65302 bytes figures/replacement_1.jpg | Bin 0 -> 59405 bytes figures/replacement_2.jpg | Bin 0 -> 62678 bytes 11 files changed, 160 insertions(+), 128 deletions(-) create mode 100644 figures/additive_1.jpg create mode 100644 figures/additive_2.jpg create mode 100644 figures/replacement_1.jpg create mode 100644 figures/replacement_2.jpg diff --git a/README.md b/README.md index b584ac87f..216fd8463 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,9 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [Sphere](#sphere) * [Tile transform](#tile-transform) * [Viewer request volume](#viewer-request-volume) + * [Refinement](#refinement) + * [Additive](#additive) + * [Replacement](#replacement) * [Tileset JSON file](#tileset-json-files) * [External tilesets](#external-tilesets) * [Bounding volume spatial coherence](#bounding-volume-spatial-coherence) @@ -151,7 +154,6 @@ Topic | Status [Batched 3D Model](TileFormats/Batched3DModel/README.md) (*.b3dm)

      Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

      Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected [Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)

      Massive number of points | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Vector Data](TileFormats/VectorData/README.md) (*.vctr)

      Polygons, polylines, and placemarks | :white_circle: **In progress**, [#124](https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/124/files) [Composite](TileFormats/Composite/README.md) (*.cmpt)

      Combine heterogeneous tile formats | :white_check_mark: **Solid base**, only minor, if any, changes expected [Declarative styling](Styling/README.md)

      Style features using per-feature metadata | :white_check_mark: **Solid base**, will add features/functions as needed, [#2](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/2) @@ -159,6 +161,7 @@ Topic | Status Topic | Status ---|--- +[Vector Data](TileFormats/VectorData/README.md) (*.vctr)

      Polygons, polylines, and placemarks | :white_circle: **In progress**, [#124](https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/124/files) 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) [OpenStreetMap](TileFormats/OpenStreetMap/README.md) | :white_circle: **Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md) Stars | :white_circle: **Not started** @@ -182,7 +185,7 @@ To support tight fitting volumes for a variety of datasets—from regularly | ![Bounding Box](figures/BoundingBox.jpg) | ![Bounding Sphere](figures/BoundingSphere.jpg) | ![Bounding Region](figures/BoundingRegion.jpg) | -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 rendering draw call overhead. +A tile references a _feature_ or set of _features_, such as 3D models representing buildings or trees, or points in a point cloud. These features may be batched together into essentially a single feature to reduce client-side load time and rendering draw call overhead. A 3D tileset consists of at least one tileset JSON file specifying the metadata and the tree of tiles, as well as any referenced tile content files which may be any valid tile format, defined in JSON as described below. @@ -220,7 +223,7 @@ All angles are in radians. ## Coordinate reference system (CRS) -Tile objects are specified in a coordinate system as defined by the type of [bounding volume](#bounding-volumes) used. This coordinate system will often be in a geospatial context and use the [WGS84 ellipsoidal coordinate system](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be. +Tile objects are specified in a coordinate system as defined by the type of [bounding volume](#bounding-volumes) used. This coordinate system will often be in a geospatial context and use the WGS 84 datum as defined in [EPSG 4326](http://nsidc.org/data/atlas/epsg_4326.html). Otherwise, the bounding volume will be defined with a right-handed 3-axis (x, y, z) Cartesian coordinate system. ### Tile content coordinate systems @@ -271,7 +274,7 @@ Tiles consist of content, metadata used to render the tile, and any children til 19.4 ] }, - "url": "2/0/0.b3dm" + "uri": "2/0/0.b3dm" }, "children": [...] } @@ -283,13 +286,13 @@ The `geometricError` property is a nonnegative number that defines the error, in The optional `viewerRequestVolume` property (not shown above) defines a volume, using the same schema as `boundingVolume`, that the viewer must be inside of before the tile's content will be requested and before the tile will be refined based on `geometricError`. See the [Viewer request volume](#viewer-request-volume) section. -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. +The `refine` property is a string that is either `"REPLACE"` for replacement refinement or `"ADD"` for additive refinement, see [Refinement](#refinement). It is required for the root tile of a tileset; it is optional for all other tiles. A tileset can use any combination of additive and replacement refinement. When the `refine` property is omitted, it is inherited from the parent tile. -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 uri. 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). +The `content` property is an object that contains metadata about the tile's content and a link to the content. `content.uri` is a string that points to the tile's contents with an absolute or relative uri. In the example above, the uri, `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). The uri can be another tileset JSON to create a tileset of tilesets. See [External tilesets](#external-tilesets). -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 else as an external tileset if the content is JSON. +A file extension is not required for `content.uri`. A content's [tile format](#tile-formats) can be identified by the `magic` field in its header, or else as an external tileset if the content is JSON. The `content.boundingVolume` property defines an optional [bounding volume](#bounding-volumes) 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. When it is not defined, the tile's bounding volume is still used for culling (see [Grids](#grids)). @@ -309,7 +312,7 @@ Bounding volume objects are used to defined an enclosing volume, and must specif #### Region -The `boundingVolume.region` property is an array of six numbers that define the bounding geographic region in [EPSG:4326](http://spatialreference.org/ref/epsg/wgs-84/) coordinates with the order `[west, south, east, north, minimum height, maximum height]`. Latitudes and longitudes are in radians, and heights are in meters above (or below) the [WGS84 ellipsoid](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf). +The `boundingVolume.region` property is an array of six numbers that define the bounding geographic region with latitude, longitude, and height coordinates with the order `[west, south, east, north, minimum height, maximum height]`. Latitudes and longitudes are in the WGS 84 datum as defined in [EPSG 4326](http://nsidc.org/data/atlas/epsg_4326.html) and are in radians. Heights are in meters above (or below) the [WGS 84 ellipsoid](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf). ```JSON "boundingVolume": { @@ -388,6 +391,31 @@ When `transform` is not defined, it defaults to the identity matrix: The transformation from each tile's local coordinate to the tileset's global coordinate system is computed by a top-down traversal of the tileset and by post-multiplying a child's `transform` with its parent's `transform` like a traditional scene graph or node hierarchy in computer graphics. +For an example of the computed transforms for a tileset, consider: + +![](figures/tileTransform.png) + +The computed transform for each tile is: +* `TO`: `[T0]` +* `T1`: `[T0][T1]` +* `T2`: `[T0][T2]` +* `T3`: `[T0][T1][T3]` +* `T4`: `[T0][T1][T4]` + +The positions and normals in a tile's content may also have tile-specific transformations applied to them _before_ the tile's `transform` (before indicates post-multiplying for affine transformations). Some examples are: +* `b3dm` and `i3dm` tiles embed glTF, which defines its own node hierarchy, where each node has a transform. These are applied before `tile.transform`. +* `i3dm`'s Feature Table defines per-instance position, normals, and scales. These are used to create per-instance 4x4 affine transform matrices that are applied to each instance before `tile.transform`. +* Compressed attributes, such as `POSITION_QUANTIZED` in the Feature Tables for `i3dm`, `pnts`, and `vctr`, and `NORMAL_OCT16P` in `pnts` should be decompressed before any other transforms. + +Therefore, the full computed transforms for the above example are: +* `TO`: `[T0]` +* `T1`: `[T0][T1]` +* `T2`: `[T0][T2][pnts-specific Feature Table properties-derived transform]` +* `T3`: `[T0][T1][T3][b3dm-specific transform, including the glTF node hierarchy]` +* `T4`: `[T0][T1][T4][i3dm-specific transform, including per-instance Feature Table properties-derived transform and the glTF node hierarchy]` + +#### Implementation example + The following JavaScript code shows how to compute this using Cesium's [Matrix4](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/Matrix4.js) and [Matrix3](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/Matrix3.js) types. ```javascript @@ -417,79 +445,78 @@ function computeTransform(tile, transformToRoot) { } ``` -For an example of the computed transforms (`transformToRoot` in the code above) for a tileset, consider: - -![](figures/tileTransform.png) - -The computed transform for each tile is: -* `TO`: `[T0]` -* `T1`: `[T0][T1]` -* `T2`: `[T0][T2]` -* `T3`: `[T0][T1][T3]` -* `T4`: `[T0][T1][T4]` - -The positions and normals in a tile's content may also have tile-specific transformations applied to them _before_ the tile's `transform` (before indicates post-multiplying for affine transformations). Some examples are: -* `b3dm` and `i3dm` tiles embed glTF, which defines its own node hierarchy, where each node has a transform. These are applied before `tile.transform`. -* `i3dm`'s Feature Table defines per-instance position, normals, and scales. These are used to create per-instance 4x4 affine transform matrices that are applied to each instance before `tile.transform`. -* Compressed attributes, such as `POSITION_QUANTIZED` in the Feature Tables for `i3dm`, `pnts`, and `vctr`, and `NORMAL_OCT16P` in `pnts` should be decompressed before any other transforms. - -Therefore, the full computed transforms for the above example are: -* `TO`: `[T0]` -* `T1`: `[T0][T1]` -* `T2`: `[T0][T2][pnts-specific Feature Table properties-derived transform]` -* `T3`: `[T0][T1][T3][b3dm-specific transform, including the glTF node hierarchy]` -* `T4`: `[T0][T1][T4][i3dm-specific transform, including per-instance Feature Table properties-derived transform and the glTF node hierarchy]` - ### Viewer request volume A tile's `viewerRequestVolume` can be used for combining heterogeneous datasets, and can be combined with [external tilesets](#external-tilesets). The following example has a building in a `b3dm` tile and a point cloud inside the building in a `pnts` tile. The point cloud tile's `boundingVolume` is a sphere with a radius of `1.25`. It also has a larger sphere with a radius of `15` for the `viewerRequestVolume`. Since the `geometricError` is zero, the point cloud tile's content is always rendered (and initially requested) when the viewer is inside the large sphere defined by `viewerRequestVolume`. -```javascript -"children": [{ - "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": { - "url": "building.b3dm" - } -}, { - "transform": [ - 0.968635634376879, 0.24848542777253732, 0, 0, - -0.15986650990768783, 0.6231850279035362, 0.7655606573007809, 0, - 0.19023066741520941, -0.7415493329385225, 0.6433637229384295, 0, - 1215002.0371330238, -4736270.772726648, 4081651.6414821907, 1 - ], - "viewerRequestVolume": { - "sphere": [0, 0, 0, 15] - }, - "boundingVolume": { - "sphere": [0, 0, 0, 1.25] - }, - "geometricError": 0, - "content": { - "url": "points.pnts" - } -}] +```json +{ + "children": [{ + "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" + } + }, { + "transform": [ + 0.968635634376879, 0.24848542777253732, 0, 0, + -0.15986650990768783, 0.6231850279035362, 0.7655606573007809, 0, + 0.19023066741520941, -0.7415493329385225, 0.6433637229384295, 0, + 1215002.0371330238, -4736270.772726648, 4081651.6414821907, 1 + ], + "viewerRequestVolume": { + "sphere": [0, 0, 0, 15] + }, + "boundingVolume": { + "sphere": [0, 0, 0, 1.25] + }, + "geometricError": 0, + "content": { + "uri": "points.pnts" + } + }] +} ``` _TODO: screenshot showing the request vs. bounding volume_ For more on request volumes, see the [sample tileset](https://github.com/AnalyticalGraphicsInc/3d-tiles-samples/tree/master/tilesets/TilesetWithRequestVolume) and [demo video](https://www.youtube.com/watch?v=PgX756Yzjf4). +### Refinement + +Refinement determines how a parent tile renders when its children are also selected to be rendered. Permitted refinement types are replacement (`"REPLACE"`) and additive (`"ADD"`). A tileset can use all refinement, all additive, or any combination of additive and replacement refinement. A refinement type is required for the root tile of a tileset; it is optional for all other tiles. When omitted, a tile inherits the refinement type of its parent. + +#### Replacement + +If a tile uses replacement refinement, when refined it renders its children in place of itself. + +| Parent Tile | Refined | +|:---:|:--:| +| ![](figures/replacement_1.jpg) | ![](figures/replacement_2.jpg) | + +#### Additive + +If a tile uses additive refinement, when refined it renders itself and its children simultaneously. + +| Parent Tile | Refined | +|:---:|:--:| +| ![](figures/additive_1.jpg) | ![](figures/additive_2.jpg) | + ## Tileset JSON Files 3D Tiles use one main tileset JSON file as the entry point to define a tileset. Both entry and external tileset JSON files are not required to follow a specific naming convention. @@ -524,7 +551,7 @@ Here is a subset of the tileset JSON used for [Canary Wharf](http://cesiumjs.org }, "geometricError": 268.37878244706053, "content": { - "url": "0/0/0.b3dm", + "uri": "0/0/0.b3dm", "boundingVolume": { "region": [ -0.0004001690908972599, @@ -557,7 +584,7 @@ See the [Q&A below](#will-a-tileset-file-be-part-of-the-final-3d-tiles-spec) for ### External tilesets -To create a tree of trees, a tile's `content.url` can point to an external tileset (the uri of another tileset JSON file). This enables, for example, storing each city in a tileset and then having a global tileset of tilesets. +To create a tree of trees, a tile's `content.uri` can point to an external tileset (the uri of another tileset JSON file). This enables, for example, storing each city in a tileset and then having a global tileset of tilesets. ![](figures/tilesets.jpg) @@ -567,7 +594,6 @@ When a tile points to an external tileset, the tile: * Cannot be used to create cycles, for example, by pointing to the same tileset file containing the tile or by pointing to another tileset file that then points back to the initial file containing the tile. * Will be transformed by both the tile's `transform` and root tile's `transform`. For example, in the following tileset referencing an external tileset, the computed transform for `T3` is `[T0][T1][T2][T3]`. - ![](figures/tileTransformExternalTileset.png) ### Bounding volume spatial coherence @@ -586,7 +612,7 @@ As described above, the tree has spatial coherence; each tile has a bounding vol ### Creating spatial data structures -The tree defined in a tileset by `root` and, recursively, its `children`, can define different types of spatial data structures. In addition, any combination of tile formats and refinement approach (replacement or additive) can be used, enabling a lot of flexibility to support heterogeneous datasets. +The tree defined in a tileset by `root` and, recursively, its `children`, can define different types of spatial data structures. In addition, any combination of tile formats and refinement approach (replacement or additive) can be used, enabling a lot of flexibility to support heterogeneous datasets, see [Refinement](#refinement). It is up to the conversion tool that generates the tileset to define an optimal tree for the dataset. A runtime engine, such as Cesium, is generic and will render any tree defined by the tileset. Here's a brief description of how 3D Tiles can represent various spatial data structures. @@ -666,7 +692,7 @@ The geometric error is determined when creating the tileset and based on a metri ## Tile formats -Each tile's `content.url` property points to a tile that is one of the formats listed in the [Status section](#spec-status) above. +Each tile's `content.uri` property points to a tile that is one of the formats listed in the [Status section](#spec-status) above. A tileset can contain any combination of tile formats. 3D Tiles may also support different formats in the same tile using a [Composite](TileFormats/Composite/README.md) tile. @@ -695,7 +721,7 @@ Extensions allow the base specification to be extended with new features. The op }, "geometricError": 32, "content": { - "url": "building.b3dm" + "uri": "building.b3dm" }, "extensions": { "VENDOR_collision_volume": { @@ -744,7 +770,7 @@ The `extras` property allows application specific metadata to be added to any 3D }, "geometricError": 32, "content": { - "url": "building.b3dm" + "uri": "building.b3dm" }, "extras": { "name": "Empire State Building" @@ -849,7 +875,7 @@ Supporting heterogeneous datasets with both inter-tile (different tile formats i Yes. There will always be a need to know metadata about the tileset and about tiles that are not yet loaded, e.g., so only visible tiles can be requested. However, when scaling to millions of tiles, a single tileset file with metadata for the entire tree would be prohibitively large. -3D Tiles already supports trees of trees. `content.url` can point to another tileset JSON file, which enables conversion tools to chunk up a tileset into any number of JSON files that reference each other. +3D Tiles already supports trees of trees. `content.uri` can point to another tileset JSON file, which enables conversion tools to chunk up a tileset into any number of JSON files that reference each other. There's a few other ways we may solve this: * Moving subtree metadata to the tile payload instead of the tileset file. Each tile would have a header with, for example, the bounding volumes of each child, and perhaps grandchildren, and so on. diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 2fe67e620..7f344460a 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -29,15 +29,13 @@ A Batch Table is used by the following tile formats: ## Layout -A Batch Table is composed of two parts: a JSON header and an optional binary body. The JSON describes the properties, whose values either can be defined directly in the JSON as an array, or can refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the Batch Table layout: +A Batch Table is composed of two parts: a JSON header and an optional binary body in little endian. The JSON describes the properties, whose values either can be defined directly in the JSON as an array, or can refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the Batch Table layout: ![batch table layout](figures/batch-table-layout.png) When a tile format includes a Batch Table, the Batch Table immediately follows the tile's Feature Table if it exists. Otherwise, the Batch Table immediately follows the tile's header. The header will also contain `batchTableJSONByteLength` and `batchTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the Batch Table. -Code for reading the Batch Table can be found in [Cesium3DTileBatchTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileBatchTable.js) in the Cesium implementation of 3D Tiles. - ### Padding The Batch Table binary body must start and end on an 8-byte alignment within the containing tile binary. @@ -56,7 +54,9 @@ Batch Table values can be represented in the JSON header in two different ways: * `componentType` is the datatype of components in the attribute. Allowed values are `"BYTE"`, `"UNSIGNED_BYTE"`, `"SHORT"`, `"UNSIGNED_SHORT"`, `"INT"`, `"UNSIGNED_INT"`, `"FLOAT"`, and `"DOUBLE"`. * `type` specifies if the property is a scalar or vector. Allowed values are `"SCALAR"`, `"VEC2"`, `"VEC3"`, and `"VEC4"`. -The Batch Table JSON is a `UTF-8` string containing JSON. It can be extracted from the arraybuffer using the `TextDecoder` JavaScript API and transformed to a JavaScript object with `JSON.parse`. +The Batch Table JSON is a `UTF-8` string containing JSON. + +> **Implementation Note**: In JavaScript, the Batch Table JSON can be extracted from an `ArrayBuffer` using the `TextDecoder` JavaScript API and transformed to a JavaScript object with `JSON.parse`. A `batchId` is used to access elements in each array and extract the corresponding properties. For example, the following Batch Table has properties for a batch of two features: ```json @@ -114,7 +114,15 @@ The following tables can be used to compute the byte size of a property. | `"VEC3"` | 3 | | `"VEC4"` | 4 | -For example, given the following Batch Table JSON with `batchLength` of 10: +## Extensions + +The following extensions can be applied to a Batch Table. + +* [3DTILES_batch_table_hierarchy](../../extensions/3DTILES_batch_table_hierarchy/) + +## Implementation examples + +The following examples access the `"height"` ang `"geographic"` values respectively given the following Batch Table JSON with `batchLength` of 10: ```json { @@ -159,11 +167,7 @@ var geographicArray = new Float64Array(batchTableBinary.buffer, byteOffset, geog var geographicOfFeature = positionArray.subarray(batchId * numberOfComponents, batchId * numberOfComponents + numberOfComponents); // Using subarray creates a view into the array, and not a new array. ``` -## Extensions - -The following extensions can be applied to a Batch Table. - -* [3DTILES_batch_table_hierarchy](../../extensions/3DTILES_batch_table_hierarchy/) +Code for reading the Batch Table can be found in [`Cesium3DTileBatchTable.js`](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileBatchTable.js) in the Cesium implementation of 3D Tiles. ## Acknowledgments diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index a131a3a51..48e7bb75b 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -27,7 +27,7 @@ _Batched 3D Model_ allows offline batching of heterogeneous 3D models, such as d Per-model properties, such as IDs, enable individual models to be identified and updated at runtime, e.g., show/hide, highlight color, etc. Properties may be used, for example, to query a web service to access metadata, such as passing a building's ID to get its address. Or a property might be referenced on the fly for changing a model's appearance, e.g., changing highlight color based on a property value. -Batched 3D Model, or just the _batch_, is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. +A Batched 3D Model tile is a binary blob in little endian. ## Layout @@ -50,19 +50,13 @@ The 28-byte header contains the following fields: | `magic` | 4-byte ANSI string | `"b3dm"`. This can be used to identify the arraybuffer as a Batched 3D Model tile. | | `version` | `uint32` | The version of the Batched 3D Model format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | -| `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. Zero indicates there is no Feature Table. | -| `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | +| `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. | +| `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. | | `batchTableJSONByteLength` | `uint32` | The length of the Batch Table JSON section in bytes. Zero indicates there is no Batch Table. | | `batchTableBinaryByteLength` | `uint32` | The length of the Batch Table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | -If `featureTableJSONByteLength` equals zero, the tile does not need to be rendered. - The body section immediately follows the header section, and is composed of three fields: `Feature Table`, `Batch Table`, and `Binary glTF`. -> Implementation Note: Code for reading the header can be found in -[Batched3DModelTileContent](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Batched3DModel3DTileContent.js) -in the Cesium implementation of 3D Tiles. - ## Feature Table Contains values for `b3dm` semantics. @@ -156,3 +150,9 @@ Vertex positions may be defined relative-to-center for high-precision rendering, Batched 3D Model tiles use the `.b3dm` extension and `application/octet-stream` MIME type. An explicit file extension is optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. + +## Implementation example + +Code for reading the header can be found in +[`Batched3DModelTileContent.js`](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Batched3DModel3DTileContent.js) +in the Cesium implementation of 3D Tiles. diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index 045887bbe..cc92f0784 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -24,7 +24,7 @@ The _Composite_ tile format enables concatenating tiles of different formats int Supporting heterogeneous datasets with both inter-tile (separate tiles of different formats that are in the same tileset) and intra-tile (different tile formats that are in the same Composite tile) options allows conversion tools to make trade-offs between number of requests, optimal type-specific subdivision, and how visible/hidden layers are streamed. -A Composite is a binary blob in little endian accessed in JavaScript as an `ArrayBuffer`. +A Composite tile is a binary blob in little endian. ## Layout @@ -47,8 +47,6 @@ The 16-byte header section contains the following fields: | `byteLength` | `uint32` | The length of the entire Composite tile, including this header and each inner tile, in bytes. | | `tilesLength` | `uint32` | The number of tiles in the Composite. | -_TODO: code example reading header_ - ## Inner tiles Inner tile fields are stored tightly packed immediately following the header section. No additional header is added on top of the tiles' preexisting headers, e.g., b3dm or i3dm headers. However, the following information describes general characteristics of the existing contents of relevant files' headers to explain common information that a Composite tile reader might exploit to find the boundaries of the inner tiles: @@ -75,6 +73,10 @@ An explicit file extension is optional. Valid implementations may ignore it and * [Christopher Mitchell, Ph.D.](https://github.com/KermMartian) -## Resources +## Implementation example + +* [Python `packcmpt` tool in gltf2glb toolset](https://github.com/Geopipe/gltf2glb) contains code for combining one or more _Batched 3D Model_ or _Instanced 3D Model_ tiles into a single Composite tile file. +* Code for reading the header can be found in +[`Composite3DTileContent.js`](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Composite3DTileContent.js) +in the Cesium implementation of 3D Tiles. -1. [Python `packcmpt` tool in gltf2glb toolset](https://github.com/Geopipe/gltf2glb) diff --git a/TileFormats/FeatureTable/README.md b/TileFormats/FeatureTable/README.md index fa365e454..078a726fd 100644 --- a/TileFormats/FeatureTable/README.md +++ b/TileFormats/FeatureTable/README.md @@ -14,30 +14,24 @@ * [Padding](#padding) * [JSON header](#json-header) * [Binary body](#binary-body) -* [Implementation notes](#implementation-notes) +* [Implementation example](#implementation-example) ## Overview A _Feature Table_ describes position and appearance properties for each feature in a tile. The [Batch Table](../BatchTable/README.md), on the other hand, contains per-feature application-specific metadata not necessarily used for rendering. -A Feature Table is used by the following tile formats: -* [Batched 3D Model](../Batched3DModel/README.md) (b3dm) - each model is a feature. -* [Instanced 3D Model](../Instanced3DModel/README.md) (i3dm) - each model instance is a feature. -* [Point Cloud](../PointCloud/README.md) (pnts) - each point is a feature. -* [Vector](../VectorData/README.md) (vctr) - each point/polyline/polygon is a feature. +A Feature Table is used by tile formats like [Batched 3D Model](../Batched3DModel/README.md) (b3dm) where each model is a feature, and [Point Cloud](../PointCloud/README.md) (pnts) where each point is a feature. Per-feature properties are defined using tile format-specific semantics defined in each tile format's specification. For example, for _Instanced 3D Model_, `SCALE_NON_UNIFORM` defines the non-uniform scale applied to each 3D model instance. ## Layout -A Feature Table is composed of two parts: a JSON header and an optional binary body. The JSON property names are tile format-specific semantics, and their values can either be defined directly in the JSON, or refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the Feature Table layout: +A Feature Table is composed of two parts: a JSON header and an optional binary body in little endian. The JSON property names are tile format-specific semantics, and their values can either be defined directly in the JSON, or refer to sections in the binary body. It is more efficient to store long numeric arrays in the binary body. The following figure shows the Feature Table layout: ![feature table layout](figures/feature-table-layout.png) When a tile format includes a Feature Table, the Feature Table immediately follows the tile's header. The header will also contain `featureTableJSONByteLength` and `featureTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the Feature Table. -Code for reading the Feature Table can be found in [Cesium3DTileFeatureTable.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileFeatureTable.js) in the Cesium implementation of 3D Tiles. - ### Padding The Feature Table binary body must start and end on an 8-byte alignment within the containing tile binary. @@ -68,7 +62,9 @@ When the JSON header includes a reference to the binary, the provided `byteOffse Values can be retrieved using the number of features, `featuresLength`; the desired feature id, `featureId`; and the data type (component type and number of components) for the feature semantic. -For example, using the `POSITION` semantic, which has a `float32[3]` data type: +## Implementation examples + +The following example accesses the position property using the `POSITION` semantic, which has a `float32[3]` data type: ```javascript var byteOffset = featureTableJSON.POSITION.byteOffset; @@ -76,3 +72,5 @@ var byteOffset = featureTableJSON.POSITION.byteOffset; var positionArray = new Float32Array(featureTableBinary.buffer, byteOffset, featuresLength * 3); // There are three components for each POSITION feature. var position = positionArray.subarray(featureId * 3, featureId * 3 + 3); // Using subarray creates a view into the array, and not a new array. ``` + +Code for reading the Feature Table can be found in [`Cesium3DTileFeatureTable.js`](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTileFeatureTable.js) in the Cesium implementation of 3D Tiles. diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 2dc58f252..f76fced77 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -39,13 +39,15 @@ _Instanced 3D Model_ is a tile format for efficient streaming and rendering of a In addition to trees, Instanced 3D Model is useful for exterior features such as fire hydrants, sewer caps, lamps, and traffic lights, and for interior CAD features such as bolts, valves, and electrical outlets. -A [Composite](../Composite/README.md) tile can be used to create tiles with different types of instanced models, e.g., trees and traffic lights. +An Instanced 3D Model tile is a binary blob in little endian. -Instanced 3D Model maps well to the [ANGLE_instanced_arrays](https://www.khronos.org/registry/webgl/extensions/ANGLE_instanced_arrays/) extension for efficient rendering with WebGL. +> **Implementation Note**: A [Composite](../Composite/README.md) tile can be used to create tiles with different types of instanced models, e.g., trees and traffic lights by combing two Instanced 3D Model tiles. + +> **Implementation Note**: Instanced 3D Model maps well to the [ANGLE_instanced_arrays](https://www.khronos.org/registry/webgl/extensions/ANGLE_instanced_arrays/) extension for efficient rendering with WebGL. ## Layout -A tile is composed of a header section immediately followed by a body section. The following figure shows the Instanced 3D Model layout (dashes indicate optional fields): +A tile is composed of a header section immediately followed by a binary body. The following figure shows the Instanced 3D Model layout (dashes indicate optional fields): ![header layout](figures/header-layout.png) @@ -67,19 +69,13 @@ The 32-byte header contains the following fields: | `version` | `uint32` | The version of the Instanced 3D Model format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | | `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. | -| `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | +| `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. | | `batchTableJSONByteLength` | `uint32` | The length of the Batch Table JSON section in bytes. Zero indicates that there is no Batch Table. | | `batchTableBinaryByteLength` | `uint32` | The length of the Batch Table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | | `gltfFormat` | `uint32` | Indicates the format of the glTF field of the body. `0` indicates it is a uri, `1` indicates it is embedded binary glTF. See the [glTF](#gltf) section below. | -If `featureTableJSONByteLength` equals zero, or there is no `glTF`, the tile does not need to be rendered. - The body section immediately follows the header section and is composed of three fields: `Feature Table`, `Batch Table`, and `glTF`. -Code for reading the header can be found in -[Instanced3DModelTileContent](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Instanced3DModel3DTileContent.js) -in the Cesium implementation of 3D Tiles. - ## Feature Table The Feature Table contains values for `i3dm` semantics used to create instanced models. @@ -265,7 +261,7 @@ The glTF asset to be instanced is stored after the Feature Table and Batch Table Instanced 3D Models uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) for model data. -The [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#binary-gltf-layout) immediately follows the feature table and batch table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. +The required [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#binary-gltf-layout) immediately follows the feature table and batch table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. `header.gltfFormat` determines the format of the glTF field @@ -282,7 +278,6 @@ An explicit file extension is optional. Valid implementations may ignore it and ## Implementation examples - ### Cesium Generating up and right from longitude, latitude, and height: @@ -343,3 +338,7 @@ Matrix4.fromTranslationRotationScale( modelMatrix ); ``` + +Code for reading the header can be found in +[`Instanced3DModelTileContent.js`](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Instanced3DModel3DTileContent.js) +in the Cesium implementation of 3D Tiles. diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 2c5559e93..4c6cb432a 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -33,6 +33,7 @@ * [Per-point properties](#per-point-properties) * [Batch Table](#batch-table) * [File extension and MIME type](#file-extension-and-mime-type) +* [Implementation example](#implementation-example) ## Overview @@ -40,6 +41,8 @@ The _Point Cloud_ tile format enables efficient streaming of massive point cloud Using 3D Tiles terminology, each point is a _feature_. +A Point Cloud tile is a binary blob in little endian. + ## Layout A tile is composed of a header section immediately followed by a body section. The following figure shows the Point Cloud layout (dashes indicate optional fields): @@ -60,16 +63,12 @@ The 28-byte header contains the following fields: | `version` | `uint32` | The version of the Point Cloud format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | | `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. | -| `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. If `featureTableJSONByteLength` is zero, this will also be zero. | +| `featureTableBinaryByteLength` | `uint32` | The length of the Feature Table binary section in bytes. | | `batchTableJSONByteLength` | `uint32` | The length of the Batch Table JSON section in bytes. Zero indicates that there is no Batch Table. | | `batchTableBinaryByteLength` | `uint32` | The length of the Batch Table binary section in bytes. If `batchTableJSONByteLength` is zero, this will also be zero. | -If `featureTableJSONByteLength` equals zero, the tile does not need to be rendered. - The body section immediately follows the header section, and is composed of a `Feature Table` and `Batch Table`. -Code for reading the header can be found in [PointCloud3DModelTileContent.js](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/PointCloud3DTileContent.js) in the Cesium implementation of 3D Tiles. - ## Feature Table Contains per-tile and per-point values that define where and how to render points. @@ -336,3 +335,7 @@ See the [Batch Table](../BatchTable/README.md) reference for more information. Point cloud tiles use the `.pnts` extension and `application/octet-stream` MIME type. An explicit file extension is optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. + +## Implementation example + +Code for reading the header can be found in [`PointCloud3DModelTileContent.js`](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/PointCloud3DTileContent.js) in the Cesium implementation of 3D Tiles. \ No newline at end of file diff --git a/figures/additive_1.jpg b/figures/additive_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e8a65b81933d41218e27f5a677b6f128d7a3a63 GIT binary patch literal 59538 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�^URy{~?j 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 literal 0 HcmV?d00001 diff --git a/figures/replacement_1.jpg b/figures/replacement_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cabdadc48a871ae06d1dbfb2910fbefbfe8d1585 GIT binary patch literal 59405 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

    1. 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 T;(#G&@;+__6*F`+PzV3n*2JDX literal 0 HcmV?d00001 diff --git a/figures/replacement_2.jpg b/figures/replacement_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a48822be8a22d86e5e835a67140ff9af9336ea04 GIT binary patch literal 62678 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 Date: Tue, 8 May 2018 15:05:41 -0400 Subject: [PATCH 27/37] Misc updates --- README.md | 47 +++++++++---------- Styling/README.md | 34 +++++++------- TileFormats/BatchTable/README.md | 2 +- TileFormats/Batched3DModel/README.md | 8 ++-- TileFormats/Composite/README.md | 8 ++-- TileFormats/FeatureTable/README.md | 2 +- TileFormats/Instanced3DModel/README.md | 14 +++--- TileFormats/PointCloud/README.md | 8 ++-- .../3DTILES_batch_table_hierarchy/README.md | 2 +- schema/README.md | 2 +- schema/asset.schema.json | 6 --- schema/boundingVolume.schema.json | 4 +- schema/tile.content.schema.json | 4 +- schema/tile.schema.json | 4 +- schema/tileset.schema.json | 9 ++-- 15 files changed, 71 insertions(+), 83 deletions(-) diff --git a/README.md b/README.md index 216fd8463..a20952d73 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [Refinement](#refinement) * [Additive](#additive) * [Replacement](#replacement) -* [Tileset JSON file](#tileset-json-files) +* [Tileset JSON](#tileset-json) * [External tilesets](#external-tilesets) * [Bounding volume spatial coherence](#bounding-volume-spatial-coherence) * [Creating spatial data structures](#creating-spatial-data-structures) @@ -150,7 +150,7 @@ The 3D Tiles spec is pre-1.0 (indicated by `"version": "0.0"` in the tileset JSO Topic | Status ---|--- -[Tileset JSON](#tileset-json-files)

      The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed +[Tileset JSON](#tileset-json)

      The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed [Batched 3D Model](TileFormats/Batched3DModel/README.md) (*.b3dm)

      Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

      Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected [Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)

      Massive number of points | :white_check_mark: **Solid base**, only minor, if any, changes expected @@ -174,7 +174,7 @@ For spec work in progress, [watch this repo](https://github.com/AnalyticalGraphi ## Introduction -In 3D Tiles, a _tileset_ is a set of _tiles_ organized in a spatial data structure, the _tree_. 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. +In 3D Tiles, a _tileset_ is a set of _tiles_ organized in a spatial data structure, the _tree_. Each tile has a bounding volume completely enclosing its content. 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. ![](figures/tree.png) @@ -194,10 +194,10 @@ Optionally, a separate 3D Tile Style may be applied to a tileset. ## File extensions and MIME types * Tileset files use the `.json` extension and the `application/json` MIME type. -* A tile's referenced content may be an external tileset JSON file (`application/json`), or the file type and MIME format specific to the [tile format](#tile-formats). +* Tile content files use the file type and MIME format specific to their [tile format](#tile-formats). * Tileset style files use the `.json` extension and the `application/json` MIME type. -Explicit file extensions are optional for tileset and tile content files. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. +Explicit file extensions are optional. Valid implementations may ignore it and identify a content's format by the `magic` field in its header. ## JSON encoding @@ -241,9 +241,9 @@ If the `CESIUM_z_up` glTF extension is not used, the glTF model must be transfor ] ``` -> Implementation note: Using the `CESIUM_z_up` extension is preferred to transforming the model to a _z_-up coordinate system at runtime. +Note that glTF defines its own node hierarchy, where each node has a transform. These transforms are applied before the coordinate system transform is applied. -Tile transforms are applied after the conversion between coordinate systems is resolved. +> Implementation Note: Using the `CESIUM_z_up` extension is preferred to transforming the model to a _z_-up coordinate system at runtime. ## Tiles @@ -288,13 +288,13 @@ The optional `viewerRequestVolume` property (not shown above) defines a volume, The `refine` property is a string that is either `"REPLACE"` for replacement refinement or `"ADD"` for additive refinement, see [Refinement](#refinement). It is required for the root tile of a tileset; it is optional for all other tiles. A tileset can use any combination of additive and replacement refinement. When the `refine` property is omitted, it is inherited from the parent tile. -The `content` property is an object that contains metadata about the tile's content and a link to the content. `content.uri` is a string that points to the tile's contents with an absolute or relative uri. In the example above, the uri, `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). +The `content` property is an object that contains metadata about the tile's content and a link to the content. `content.url` is a uri that points to the tile's content. In the example above, the uri, `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). The uri can be another tileset JSON to create a tileset of tilesets. See [External tilesets](#external-tilesets). A file extension is not required for `content.uri`. A content's [tile format](#tile-formats) can be identified by the `magic` field in its header, or else as an external tileset if the content is JSON. -The `content.boundingVolume` property defines an optional [bounding volume](#bounding-volumes) 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. When it is not defined, the tile's bounding volume is still used for culling (see [Grids](#grids)). +The `content.boundingVolume` property defines an optional [bounding volume](#bounding-volumes) 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 content. `boundingVolume` provides spatial coherence and `content.boundingVolume` enables tight view frustum culling. When it is not defined, the tile's bounding volume is still used for culling (see [Grids](#grids)). 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. @@ -391,7 +391,7 @@ When `transform` is not defined, it defaults to the identity matrix: The transformation from each tile's local coordinate to the tileset's global coordinate system is computed by a top-down traversal of the tileset and by post-multiplying a child's `transform` with its parent's `transform` like a traditional scene graph or node hierarchy in computer graphics. -For an example of the computed transforms for a tileset, consider: +For an example of the computed transforms (`transformToRoot` in the code above) for a tileset, consider: ![](figures/tileTransform.png) @@ -403,7 +403,7 @@ The computed transform for each tile is: * `T4`: `[T0][T1][T4]` The positions and normals in a tile's content may also have tile-specific transformations applied to them _before_ the tile's `transform` (before indicates post-multiplying for affine transformations). Some examples are: -* `b3dm` and `i3dm` tiles embed glTF, which defines its own node hierarchy, where each node has a transform. These are applied before `tile.transform`. +* `b3dm` and `i3dm` tiles embed glTF, which defines its own node hierarchy and coordinate system. `tile.transform` is applied after these transforms are resolved. See (tile content coordinate systems)[#tile-content-coordinate-systems]. * `i3dm`'s Feature Table defines per-instance position, normals, and scales. These are used to create per-instance 4x4 affine transform matrices that are applied to each instance before `tile.transform`. * Compressed attributes, such as `POSITION_QUANTIZED` in the Feature Tables for `i3dm`, `pnts`, and `vctr`, and `NORMAL_OCT16P` in `pnts` should be decompressed before any other transforms. @@ -411,7 +411,7 @@ Therefore, the full computed transforms for the above example are: * `TO`: `[T0]` * `T1`: `[T0][T1]` * `T2`: `[T0][T2][pnts-specific Feature Table properties-derived transform]` -* `T3`: `[T0][T1][T3][b3dm-specific transform, including the glTF node hierarchy]` +* `T3`: `[T0][T1][T3][b3dm-specific transform, including the glTF node hierarchy and coordinate system transform]` * `T4`: `[T0][T1][T4][i3dm-specific transform, including per-instance Feature Table properties-derived transform and the glTF node hierarchy]` #### Implementation example @@ -517,7 +517,7 @@ If a tile uses additive refinement, when refined it renders itself and its child |:---:|:--:| | ![](figures/additive_1.jpg) | ![](figures/additive_2.jpg) | -## Tileset JSON Files +## Tileset JSON 3D Tiles use one main tileset JSON file as the entry point to define a tileset. Both entry and external tileset JSON files are not required to follow a specific naming convention. @@ -528,8 +528,7 @@ Here is a subset of the tileset JSON used for [Canary Wharf](http://cesiumjs.org { "asset" : { "version": "0.0", - "tilesetVersion": "e575c6f1-a45b-420a-b172-6449fa6e0a59", - "gltfUpAxis": "Y" + "tilesetVersion": "e575c6f1-a45b-420a-b172-6449fa6e0a59" }, "properties": { "Height": { @@ -570,13 +569,13 @@ Here is a subset of the tileset JSON used for [Canary Wharf](http://cesiumjs.org The top-level object in the tileset JSON has four properties: `asset`, `properties`, `geometricError`, and `root`. -`asset` is an object containing properties with metadata about the entire tileset. The `asset.version` property is a string that defines the 3D Tiles version, which specifies the JSON schema for the tileset and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. The `gltfUpAxis` property is an optional string that specifies the up-axis of glTF models contained in the tileset. +`asset` is an object containing properties with metadata about the entire tileset. The `asset.version` property is a string that defines the 3D Tiles version, which specifies the JSON schema for the tileset and the base set of tile formats. The `tilesetVersion` property is an optional string that defines an application-specific version of a tileset, e.g., for when an existing tileset is updated. `properties` is an object containing objects for each per-feature property in the tileset. This tileset JSON snippet is for 3D buildings, so each tile has building models, and each building model has a `Height` property (see [Batch Table](TileFormats/BatchTable/README.md)). The name of each object in `properties` matches the name of a per-feature property, and its value defines its `minimum` and `maximum` numeric values, which are useful, for example, for creating color ramps for styling. -`geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered, see [Geometric error](#geometric-error). +`geometricError` is a nonnegative number that defines the error, in meters, when the tileset is not rendered. See [Geometric error](#geometric-error) for how geometric error is used to drive refinement. -`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. +`root` is an object that defines the root tile using the JSON described in the [above section](#tiles). `root.geometricError` is not the same as the tileset's top-level `geometricError`. 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. `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. @@ -598,7 +597,7 @@ When a tile points to an external tileset, the tile: ### Bounding volume spatial coherence -As described above, the tree has spatial coherence; each tile has a bounding volume completely enclosing its contents, and the content for child tiles are completely inside the parent's bounding volume. This does not imply that a child's bounding volume is completely inside its parent's bounding volume. For example: +As described above, the tree has spatial coherence; each tile has a bounding volume completely enclosing its content, and the content for child tiles are completely inside the parent's bounding volume. This does not imply that a child's bounding volume is completely inside its parent's bounding volume. For example:


      @@ -688,7 +687,7 @@ Geometric error is a nonnegative number that defines the error, in meters, intro The geometric error is determined when creating the tileset and based on a metric like point density, tile sizes in meters, or another factor specific to that tileset. In general, a higher geometric error means a tile will be refined more aggressively, and children tiles will be loaded and rendered sooner. -> Implementation note: Typically, a property of the root tile, such as size, is used to determine a geometric error. Then each successive level of children uses a lower geometric error, with leaf tiles generally having a geometric error of 0. +> Implementation Note: Typically, a property of the root tile, such as size, is used to determine a geometric error. Then each successive level of children uses a lower geometric error, with leaf tiles generally having a geometric error of 0. ## Tile formats @@ -802,14 +801,14 @@ For complete details, see the [Declarative Styling](Styling/README.md) spec. * [General Q&A](#general-qa) * [Can I use 3D Tiles today?](#can-i-use-3d-tiles-today) - * [Are 3D Tiles specific to Cesium?](#are-3d-tiles-specific-to-cesium) + * [Is 3D Tiles specific to Cesium?](#is-3d-tiles-specific-to-cesium) * [What is the relationship between 3D Tiles and glTF?](#what-is-the-relationship-between-3d-tiles-and-gltf) * [Do 3D Tiles support runtime editing?](#does-3d-tiles-support-runtime-editing) * [Will 3D Tiles include terrain?](#will-3d-tiles-include-terrain) * [Will 3D Tiles include imagery?](#will-3d-tiles-include-imagery) * [Will 3D Tiles replace KML?](#will-3d-tiles-replace-kml) * [Technical Q&A](#technical-qa) - * [How do 3D Tiles support heterogeneous datasets?](#how-do-3d-tiles-support-heterogeneous-datasets) + * [How does 3D Tiles support heterogeneous datasets?](#how-does-3d-tiles-support-heterogeneous-datasets) * [Will a tileset file be part of the final 3D Tiles spec?](#will-a-tileset-file-be-part-of-the-final-3d-tiles-spec) * [How do I request the tiles for Level `n`?](#how-do-i-request-the-tiles-for-level-n) * [Will 3D Tiles support horizon culling?](#will-3d-tiles-support-horizon-culling) @@ -817,7 +816,7 @@ For complete details, see the [Declarative Styling](Styling/README.md) spec. * [How are cracks between tiles with vector data handled?](#how-are-cracks-between-tiles-with-vector-data-handled) * [When using replacement refinement, can multiple children be combined into one request?](#when-using-replacement-refinement-can-multiple-children-be-combined-into-one-request) * [How can additive refinement be optimized?](#how-can-additive-refinement-be-optimized) - * [What compressed texture formats do 3D Tiles use?](#what-compressed-texture-formats-do-3d-tiles-use) + * [What compressed texture formats does 3D Tiles use?](#what-compressed-texture-formats-does-3d-tiles-use) ### General Q&A @@ -833,7 +832,7 @@ No, 3D Tiles is a general spec for streaming massive heterogeneous 3D geospatial [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. -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). We created a binary glTF extension ([KHR_binary_glTF](https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF)) in order to embed glTF into binary tiles and avoid base64-encoding or multiple file overhead. +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). Taking this approach allows us to improve Cesium, glTF, and 3D Tiles at the same time, e.g., when we add mesh compression to glTF, it benefits 3D models in Cesium, the glTF ecosystem, and 3D Tiles. diff --git a/Styling/README.md b/Styling/README.md index 109e5f137..71fc467bd 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -205,7 +205,7 @@ Also, see the [JSON schema](schema). The language for expressions is a small subset of JavaScript ([EMCAScript 5](http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf)), plus native vector and regular expression types and access to tileset feature properties in the form of readonly variables. -_Implementation tip: Cesium uses the [jsep](http://jsep.from.so/) JavaScript expression parser library to parse style expressions._ +> Implementation tip: Cesium uses the [jsep](http://jsep.from.so/) JavaScript expression parser library to parse style expressions. ### Semantics @@ -329,14 +329,14 @@ Vectors support the following binary operators by performing component-wise oper #### Color Colors are implemented as `vec4` and are created with one of the following functions: -* `color() : Color` -* `color(keyword : String, [alpha : Number]) : Color` -* `color(6-digit-hex : String, [alpha : Number]) : Color` -* `color(3-digit-hex : String, [alpha : Number]) : Color` -* `rgb(red : Number, green : Number, blue : number) : Color` -* `rgba(red : Number, green : Number, blue : number, alpha : Number) : Color` -* `hsl(hue : Number, saturation : Number, lightness : Number) : Color` -* `hsla(hue : Number, saturation : Number, lightness : Number, alpha : Number) : Color` +* `color()` +* `color(keyword : String, [alpha : Number])` +* `color(6-digit-hex : String, [alpha : Number])` +* `color(3-digit-hex : String, [alpha : Number])` +* `rgb(red : Number, green : Number, blue : Number)` +* `rgba(red : Number, green : Number, blue : Number, alpha : Number)` +* `hsl(hue : Number, saturation : Number, lightness : Number)` +* `hsla(hue : Number, saturation : Number, lightness : Number, alpha : Number)` Calling `color()` with no arguments is the same as calling `color('#FFFFFF')`. @@ -363,13 +363,13 @@ Colors are equivalent to the `vec4` type and share the same functions, operators For example: * `color('red').x`, `color('red').r`, and `color('red')[0]` all evaluate to `1.0`. * `color('red').toString()` evaluates to `(1.0, 0.0, 0.0, 1.0)` -* `color('red') * vec4(0.5)` is equivalent to `vec4(0.5, 0.0, 0.0, 1.0)` +* `color('red') * vec4(0.5)` is equivalent to `vec4(0.5, 0.0, 0.0, 0.5)` #### RegExp Regular expressions are created with the following functions, which behave like the JavaScript [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) constructor: -* `regExp() : RegExp` -* `regExp(pattern : String, [flags : String]) : RegExp` +* `regExp()` +* `regExp(pattern : String, [flags : String])` Calling `regExp()` with no arguments is the same as calling `regExp('(?:)')`. @@ -517,7 +517,7 @@ Variables can be used anywhere a valid expression is accepted, except inside oth ${foo[${bar}]} ``` -If a feature does not have a property with specified name, the variable evaluates to `undefined`. Note that the property may also be `null` if `null` was explicitly stored for a property. +If a feature does not have a property with the specified name, the variable evaluates to `undefined`. Note that the property may also be `null` if `null` was explicitly stored for a property. Variables may be any of the supported native JavaScript types: * `Boolean` @@ -1259,14 +1259,14 @@ For example: } ``` -> Implementation Note: Point cloud styling engines may often use a shader (GLSL) implementation, however some features of the expression language are not possible in pure a GLSL implementation. Features that must account for these inconsistencies include +> Implementation Note: Point cloud styling engines may often use a shader (GLSL) implementation, however some features of the expression language are not possible in pure a GLSL implementation. Some of these features include: > * Evaluation of `isNan` and `isFinite` (GLSL 2.0+ supports `isnan` and `isinf` for these functions respectively) -> * The types `null` and `undefined` +> * The types `null` and `undefined` > * Strings, including accessing object properties (`color()['r']`) and batch table values > * Regular expressions > * Arrays of lengths other than 2, 3, or 4 -> * Mismatched type comparisons (`float` to `bool`) -> * Handling of "index out of bounds" errors +> * Mismatched type comparisons (e.g. `1.0 === false`) +> * Array index out of bounds ## File extension and MIME type diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index 7f344460a..a5f61b155 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -122,7 +122,7 @@ The following extensions can be applied to a Batch Table. ## Implementation examples -The following examples access the `"height"` ang `"geographic"` values respectively given the following Batch Table JSON with `batchLength` of 10: +The following examples access the `"height"` and `"geographic"` values respectively given the following Batch Table JSON with `batchLength` of 10: ```json { diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 48e7bb75b..4e0ff00c9 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -39,7 +39,7 @@ A tile is composed of two sections: a header immediately followed by a body. The A tile's `byteLength` must be aligned to an 8-byte boundary. The contained [Feature Table](../FeatureTable/README.md#padding) and [Batch Table](../BatchTable/README.md#padding) must conform to their respective padding requirement. -The [binary glTF](#binary-gltf) (if present) must start and end on an 8-byte alignment so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. +The [binary glTF](#binary-gltf) must start and end on an 8-byte alignment so that glTF's byte-alignment guarantees are met. This can be done by padding the Feature Table or Batch Table if they are present. ## Header @@ -139,11 +139,9 @@ When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0` ### Coordinate reference system (CRS) -3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. +By default embedded glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTF must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [tile content coordinate systems](../../README.md#tile-content-coordinate-systems) for more details. -By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [tile content coordinate systems](../../README.md#tile-content-coordinate-systems)). - -Vertex positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is defined according to a coordinate system where the _z_-axis is up. +Vertex positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position that all vertex positions are relative to after any coordinate system transformations have been applied. ## File extension and MIME type diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index cc92f0784..9897d8f5a 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -20,7 +20,7 @@ The _Composite_ tile format enables concatenating tiles of different formats into one tile. -3D Tiles and the Composite tile allow flexibility for streaming heterogeneous datasets. For example, buildings and trees could be stored either in two separate _Batched 3D Model_ and _Instanced 3D Model_ tiles or, using a Composite tile, the tiles can be combined. +3D Tiles and the Composite tile allow flexibility for streaming heterogeneous datasets. For example, buildings and trees could be stored either in two separate _Batched 3D Model_ and _Instanced 3D Model_ tiles or, using a _Composite tile, the tiles can be combined. Supporting heterogeneous datasets with both inter-tile (separate tiles of different formats that are in the same tileset) and intra-tile (different tile formats that are in the same Composite tile) options allows conversion tools to make trade-offs between number of requests, optimal type-specific subdivision, and how visible/hidden layers are streamed. @@ -49,15 +49,15 @@ The 16-byte header section contains the following fields: ## Inner tiles -Inner tile fields are stored tightly packed immediately following the header section. No additional header is added on top of the tiles' preexisting headers, e.g., b3dm or i3dm headers. However, the following information describes general characteristics of the existing contents of relevant files' headers to explain common information that a Composite tile reader might exploit to find the boundaries of the inner tiles: +Inner tile fields are stored tightly packed immediately following the header section. The following information describes general characteristics of all tile formats that a Composite tile reader might exploit to find the boundaries of the inner tiles: -* Each tile starts with a 4-byte ANSI string, `magic`, that can be used to determine the tile format for further parsing. See the [main 3D Tiles spec](../../README.md) for a list of tile formats. Composite tiles can contain Composite tiles. +* Each tile starts with a 4-byte ANSI string, `magic`, that can be used to determine the tile format for further parsing. See the [spec status](../../README.md#spec-status) for a list of tile formats. Composite tiles can contain Composite tiles. * Each tile's header contains a `uint32` `byteLength`, which defines the length of the inner tile, including its header, in bytes. This can be used to traverse the inner tiles. * For any tile format's version 1, the first 12 bytes of all tiles is the following fields: |Field name|Data type|Description| |----------|---------|-----------| -| `magic` | `uchar[4]` | Indicates the tile format | +| `magic` | 4-byte ANSI string | Indicates the tile format | | `version` | `uint32` | `1` | | `byteLength` | `uint32` | Length, in bytes, of the entire tile. | diff --git a/TileFormats/FeatureTable/README.md b/TileFormats/FeatureTable/README.md index 078a726fd..97dd151f1 100644 --- a/TileFormats/FeatureTable/README.md +++ b/TileFormats/FeatureTable/README.md @@ -50,7 +50,7 @@ Feature Table values can be represented in the JSON header in three different wa * `byteOffset` specifies a zero-based offset relative to the start of the binary body. The value of `byteOffset` must be a multiple of the size of the property's `componentType`, e.g., the `"POSITION"` property, which has the component `FLOAT`, must start at an offset of a multiple of `4`. * The semantic defines the allowed data type, e.g., when `"POSITION"` in Instanced 3D Model refers to the binary body, the component type is `FLOAT` and the number of components is `3`. * Some semantics allow for overriding the implicit `componentType`. These cases are specified in each tile format, e.g., `"BATCH_ID" : { "byteOffset" : 24, "componentType" : "UNSIGNED_BYTE"}`. -The only valid properties in the JSON header are the defined semantics by the tile format. Application-specific data should be stored in the Batch Table. +The only valid properties in the JSON header are the defined semantics by the tile format and optional `extras` and `extensions` properties. Application-specific data should be stored in the Batch Table. JSON schema Feature Table definitions can be found in [featureTable.schema.json](../../schema/featureTable.schema.json). diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index f76fced77..6f3433df3 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -125,8 +125,8 @@ Examples using these semantics can be found in the [examples section](#examples) An instance's orientation is defined by an orthonormal basis created by an `up` and `right` vector. The orientation will be transformed by the [tile transform](../../README.md#tile-transform). -The `x` vector in the standard basis maps onto the `right` vector in the transformed basis, and the `y` vector maps on to the `up` vector. -The `z` vector would map onto a `forward` vector, but it is omitted because it will always be the cross product of `right` and `up`. +The `x` vector in the standard basis maps to the `right` vector in the transformed basis, and the `y` vector maps to the `up` vector. +The `z` vector would map to a `forward` vector, but it is omitted because it will always be the cross product of `right` and `up`. A box in the standard basis: ![box standard basis](figures/box-standard-basis.png) @@ -153,27 +153,25 @@ This is suitable for instanced models such as trees whose orientation is always #### Coordinate reference system (CRS) -3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. - -By default, vertex positions of the embedded glTF are defined according to a right-handed coordinate system where the _y_-axis is up, but vertex positions may be defined in a coordinate system where the _z_axis is up by specifying the [`CESIUM_z_up` glTF extension](TODO) in the embedded glTF (see [tile content coordinate systems](../../README.md#tile-content-coordinate-systems)). +By default embedded glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTF must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [tile content coordinate systems](../../README.md#tile-content-coordinate-systems) for more details. #### RTC_CENTER -Positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is defined according to a coordinate system where the _z_-axis is up. +Positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position and all instance positions are treated as relative to this value. #### Quantized positions If `POSITION` is not defined for an instance, its position may be stored in `POSITION_QUANTIZED`, which defines the instance position relative to the quantized volume. If neither `POSITION` or `POSITION_QUANTIZED` are defined, the instance will not be created. -A quantized volume is defined by `offset` and `scale` to map quantized positions into model space, as shown in the following figure: +A quantized volume is defined by `offset` and `scale` to map quantized positions into local space, as shown in the following figure: ![quantized volume](figures/quantized-volume.png) `offset` is stored in the global semantic `QUANTIZED_VOLUME_OFFSET`, and `scale` is stored in the global semantic `QUANTIZED_VOLUME_SCALE`. If those global semantics are not defined, `POSITION_QUANTIZED` cannot be used. -Quantized positions can be mapped to model space using the following formula: +Quantized positions can be mapped to local space using the following formula: `POSITION = POSITION_QUANTIZED * QUANTIZED_VOLUME_SCALE / 65535.0 + QUANTIZED_VOLUME_OFFSET` diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 4c6cb432a..607eb8d36 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -115,7 +115,7 @@ Examples using these semantics can be found in the [examples section](#examples) ### Point positions -`POSITION` defines the position for a point before any tileset transforms are applied. +`POSITION` defines the position for a point before any tileset transforms are applied. #### Coordinate reference system (CRS) @@ -123,7 +123,7 @@ Examples using these semantics can be found in the [examples section](#examples) #### RTC_CENTER -Positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position and all vertex positions are treated as relative to this value. The center position provided for `RTC_CENTER` is defined according to a coordinate system where the _z_-axis is up. +Positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position and all point positions are treated as relative to this value. #### Quantized positions @@ -137,7 +137,7 @@ A quantized volume is defined by `offset` and `scale` to map quantized positions `offset` is stored in the global semantic `QUANTIZED_VOLUME_OFFSET`, and `scale` is stored in the global semantic `QUANTIZED_VOLUME_SCALE`. If those global semantics are not defined, `POSITION_QUANTIZED` cannot be used. -Quantized positions can be mapped to model space using the following formula: +Quantized positions can be mapped to local space using the following formula: `POSITION = POSITION_QUANTIZED * QUANTIZED_VOLUME_SCALE / 65535.0 + QUANTIZED_VOLUME_OFFSET` @@ -167,7 +167,7 @@ Points that make up distinct features of the Point Cloud may be batched together This is useful for per-object picking and storing application-specific metadata for declarative styling and application-specific use cases such as populating a UI or issuing a REST API request on a per-object instead of per-point basis. The `BATCH_ID` semantic may have a `componentType` of `UNSIGNED_BYTE`, `UNSIGNED_SHORT`, or `UNSIGNED_INT`. When `componentType` is not present, `UNSIGNED_SHORT` is used. -The global semantic `BATCH_LENGTH` defines the number of unique `batchId` values, similar to the `batchLength` field in the [Batched 3D Model](./Batched3DModel/README.md) header. +The global semantic `BATCH_LENGTH` defines the number of unique `batchId` values, similar to the `batchLength` field in the [Batched 3D Model](../Batched3DModel/README.md) header. ### Examples diff --git a/extensions/3DTILES_batch_table_hierarchy/README.md b/extensions/3DTILES_batch_table_hierarchy/README.md index 608951abe..21ab1282d 100644 --- a/extensions/3DTILES_batch_table_hierarchy/README.md +++ b/extensions/3DTILES_batch_table_hierarchy/README.md @@ -165,7 +165,7 @@ Note that this is different than a tile's `batchLength`, which is the total numb `classIds` is an array of integers of length `instancesLength`. Each value specifies the instances's class as an index in the `classes` array. -> **Implementation Note**: The Batch Table Hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. +> Implementation Note: The Batch Table Hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible. `parentCounts` is an array of integers of length `instancesLength`. Each value specifies the number of parents that instance has. If omitted, `parentCounts` is implicitly an array of length `instancesLength`, where all values are 1. diff --git a/schema/README.md b/schema/README.md index 520102819..709c4f0df 100644 --- a/schema/README.md +++ b/schema/README.md @@ -1,6 +1,6 @@ # 3D Tiles JSON Schema -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. +Parts of 3D Tiles, such as [Tileset JSON](../README.md#tileset-json), [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. ## Usage diff --git a/schema/asset.schema.json b/schema/asset.schema.json index 92a6eec52..657fb5940 100644 --- a/schema/asset.schema.json +++ b/schema/asset.schema.json @@ -13,12 +13,6 @@ "type" : "string", "description" : "Application-specific version of this tileset, e.g., for when an existing tileset is updated." }, - "gltfUpAxis" : { - "type" : "string", - "description" : "Specifies the up-axis of glTF models.", - "enum" : ["X", "Y", "Z"], - "default" : "Y" - }, "extensions" : { "$ref": "extension.schema.json" }, diff --git a/schema/boundingVolume.schema.json b/schema/boundingVolume.schema.json index ab6989767..0ba8b57e2 100644 --- a/schema/boundingVolume.schema.json +++ b/schema/boundingVolume.schema.json @@ -3,7 +3,7 @@ "id" : "boundingVolume.schema.json", "title" : "Bounding Volume", "type" : "object", - "description" : "A bounding volume that encloses a tile or its contents. Exactly one property is required.", + "description" : "A bounding volume that encloses a tile or its content. Exactly one property is required.", "properties" : { "box" : { "type" : "array", @@ -16,7 +16,7 @@ }, "region" : { "type" : "array", - "description" : "An array of six numbers that define a 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) the WGS84 ellipsoid.", + "description" : "An array of six numbers that define a bounding geographic region in 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) the WGS84 ellipsoid.", "items" : { "type" : "number" }, diff --git a/schema/tile.content.schema.json b/schema/tile.content.schema.json index 48266d968..9ed854faa 100644 --- a/schema/tile.content.schema.json +++ b/schema/tile.content.schema.json @@ -6,12 +6,12 @@ "description" : "Metadata about the tile's content and a link to the content.", "properties" : { "boundingVolume" : { - "description" : "An optional bounding volume that tightly encloses just the tile's contents. This is used for replacement refinement; tile.boundingVolume provides spatial coherence and tile.content.boundingVolume enables tight view frustum culling. When this is omitted, tile.boundingVolume is used.", + "description" : "An optional bounding volume that tightly encloses just the tile's content. tile.boundingVolume provides spatial coherence and tile.content.boundingVolume enables tight view frustum culling. When this is omitted, tile.boundingVolume is used.", "$ref" : "boundingVolume.schema.json" }, "url" : { "type" : "string", - "description" : "A string that points to the tile's contents with an absolute or relative url. When the url is relative, it is relative to the referring tileset.json. The file extension of content.url defines the tile format. The core 3D Tiles spec supports the following tile formats: Batched 3D Model (*.b3dm), Instanced 3D Model (*.i3dm), Composite (*.cmpt), and 3D Tiles TileSet (*.json)" + "description" : "A uri that points to the tile's content. When the uri is relative, it is relative to the referring tileset.json." }, "extensions" : { "$ref": "extension.schema.json" diff --git a/schema/tile.schema.json b/schema/tile.schema.json index 721e1f291..a30a6381c 100644 --- a/schema/tile.schema.json +++ b/schema/tile.schema.json @@ -25,7 +25,7 @@ }, "transform" : { "type" : "array", - "description" : "A floating-point 4x4 affine transformation matrix, stored in column-major order, that transforms the tile's content--i.e., its features as well as content.boundingVolume, boundingVolume, and viewerRequestVolume--from the tile's local coordinate system to the parent tile's coordinate system, or, in the case of a root tile, from the tile's local coordinate system to the tileset's coordinate system. transform does not apply to geometricError, nor does it apply any volume property when the volume is a region, defined in WGS84 / EPSG:4326 coordinates.", + "description" : "A floating-point 4x4 affine transformation matrix, stored in column-major order, that transforms the tile's content--i.e., its features as well as content.boundingVolume, boundingVolume, and viewerRequestVolume--from the tile's local coordinate system to the parent tile's coordinate system, or, in the case of a root tile, from the tile's local coordinate system to the tileset's coordinate system. transform does not apply to geometricError, nor does it apply any volume property when the volume is a region, defined in EPSG:4326 coordinates.", "items" : { "type": "number" }, @@ -39,7 +39,7 @@ }, "children" : { "type" : "array", - "description" : "An array of objects that define child tiles. Each child tile has a box fully enclosed by its parent tile's box 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.", + "description" : "An array of objects that define child tiles. Each child tile content is fully enclosed by its parent tile's bounding volume and, generally, has 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.", "items" : { "$ref" : "tile.schema.json" }, diff --git a/schema/tileset.schema.json b/schema/tileset.schema.json index cf2f12555..5d943cb09 100644 --- a/schema/tileset.schema.json +++ b/schema/tileset.schema.json @@ -10,10 +10,9 @@ }, "properties" : { "description": "A dictionary object of metadata about per-feature properties.", - "patternProperties" : { - ".*": { - "$ref": "properties.schema.json" - } + "properties" : {}, + "additionalProperties" : { + "$ref" : "properties.schema.json" } }, "geometricError" : { @@ -22,7 +21,7 @@ "minimum" : 0 }, "root" : { - "description" : "The root node.", + "description" : "The root tile.", "$ref" : "tile.schema.json" }, "extensionsUsed": { From fd7420454fc409d397cad5e62f91ad0a492322c2 Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Tue, 8 May 2018 18:48:54 -0400 Subject: [PATCH 28/37] Stray url to uri --- examples/tileset.json | 42 ++++++++++++++++----------------- extensions/README.md | 2 +- schema/tile.content.schema.json | 4 ++-- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/examples/tileset.json b/examples/tileset.json index d3e37b0a3..46bece7f0 100644 --- a/examples/tileset.json +++ b/examples/tileset.json @@ -39,7 +39,7 @@ 241.6 ] }, - "url": "0/0/0.b3dm" + "uri": "0/0/0.b3dm" }, "geometricError": 268.37878244706053, "refine": "ADD", @@ -66,7 +66,7 @@ 158.4 ] }, - "url": "1/0/0.b3dm" + "uri": "1/0/0.b3dm" }, "geometricError": 159.43385994848, "children": [ @@ -82,7 +82,7 @@ ] }, "content": { - "url": "2/0/0.b3dm" + "uri": "2/0/0.b3dm" }, "geometricError": 10.831613588830955 }, @@ -98,7 +98,7 @@ ] }, "content": { - "url": "2/1/0.b3dm" + "uri": "2/1/0.b3dm" }, "geometricError": 11.833855250694043 }, @@ -114,7 +114,7 @@ ] }, "content": { - "url": "2/1/1.b3dm" + "uri": "2/1/1.b3dm" }, "geometricError": 24.187299340965403 }, @@ -130,7 +130,7 @@ ] }, "content": { - "url": "2/0/1.b3dm" + "uri": "2/0/1.b3dm" }, "geometricError": 48.508446081365975 } @@ -158,7 +158,7 @@ 75.2 ] }, - "url": "1/1/0.b3dm" + "uri": "1/1/0.b3dm" }, "geometricError": 132.82048511777703, "children": [ @@ -174,7 +174,7 @@ ] }, "content": { - "url": "2/2/0.b3dm" + "uri": "2/2/0.b3dm" }, "geometricError": 4.206139430532202 }, @@ -190,7 +190,7 @@ ] }, "content": { - "url": "2/3/0.b3dm" + "uri": "2/3/0.b3dm" }, "geometricError": 0 }, @@ -206,7 +206,7 @@ ] }, "content": { - "url": "2/3/1.b3dm" + "uri": "2/3/1.b3dm" }, "geometricError": 0 }, @@ -222,7 +222,7 @@ ] }, "content": { - "url": "2/2/1.b3dm" + "uri": "2/2/1.b3dm" }, "geometricError": 0 } @@ -250,7 +250,7 @@ 158 ] }, - "url": "1/1/1.b3dm" + "uri": "1/1/1.b3dm" }, "geometricError": 156.46285780389445, "children": [ @@ -266,7 +266,7 @@ ] }, "content": { - "url": "2/2/2.b3dm" + "uri": "2/2/2.b3dm" }, "geometricError": 0 }, @@ -282,7 +282,7 @@ ] }, "content": { - "url": "2/3/2.b3dm" + "uri": "2/3/2.b3dm" }, "geometricError": 0 }, @@ -298,7 +298,7 @@ ] }, "content": { - "url": "2/3/3.b3dm" + "uri": "2/3/3.b3dm" }, "geometricError": 8.010233984367021 }, @@ -314,7 +314,7 @@ ] }, "content": { - "url": "2/2/3.b3dm" + "uri": "2/2/3.b3dm" }, "geometricError": 40.38435697163592 } @@ -342,7 +342,7 @@ 204 ] }, - "url": "1/0/1.b3dm" + "uri": "1/0/1.b3dm" }, "geometricError": 149.600454457028, "children": [ @@ -358,7 +358,7 @@ ] }, "content": { - "url": "2/0/2.b3dm" + "uri": "2/0/2.b3dm" }, "geometricError": 0 }, @@ -374,7 +374,7 @@ ] }, "content": { - "url": "2/1/2.b3dm" + "uri": "2/1/2.b3dm" }, "geometricError": 0 }, @@ -390,7 +390,7 @@ ] }, "content": { - "url": "2/1/3.b3dm" + "uri": "2/1/3.b3dm" }, "geometricError": 18.837170280352364 }, @@ -406,7 +406,7 @@ ] }, "content": { - "url": "2/0/3.b3dm" + "uri": "2/0/3.b3dm" }, "geometricError": 67.4774528507299 } diff --git a/extensions/README.md b/extensions/README.md index b22444584..02de90387 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -31,7 +31,7 @@ The following example shows a tile object with a hypothetical vendor extension w }, "geometricError": 32, "content": { - "url": "building.b3dm" + "uri": "building.b3dm" }, "extensions": { "VENDOR_collision_volume": { diff --git a/schema/tile.content.schema.json b/schema/tile.content.schema.json index 9ed854faa..834aef306 100644 --- a/schema/tile.content.schema.json +++ b/schema/tile.content.schema.json @@ -9,7 +9,7 @@ "description" : "An optional bounding volume that tightly encloses just the tile's content. tile.boundingVolume provides spatial coherence and tile.content.boundingVolume enables tight view frustum culling. When this is omitted, tile.boundingVolume is used.", "$ref" : "boundingVolume.schema.json" }, - "url" : { + "uri" : { "type" : "string", "description" : "A uri that points to the tile's content. When the uri is relative, it is relative to the referring tileset.json." }, @@ -20,6 +20,6 @@ "$ref": "extras.schema.json" } }, - "required" : ["url"], + "required" : ["uri"], "additionalProperties" : false } From c02ba37aecdd33eca62555fc4964f0e1f2ff8d71 Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Tue, 8 May 2018 18:54:11 -0400 Subject: [PATCH 29/37] Other fixes --- CONTRIBUTING.md | 2 +- README.md | 2 +- TileFormats/BatchTable/README.md | 1 - TileFormats/Batched3DModel/README.md | 2 +- TileFormats/Composite/README.md | 2 +- TileFormats/Instanced3DModel/README.md | 2 +- TileFormats/PointCloud/README.md | 2 +- 7 files changed, 6 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ee85edb31..622a2943c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ As we add more tile formats, 3D Tiles needs to stay consistent. ## Terminology * Tiles are composed of `sections` such as `header` and `body`. Sections are composed of `fields` such as `magic` and `version`. -* "Feature" - indicates one model in a batch of models (`b3dm`), one instance in a collection of instances (`i3dm`), one point in a point cloud (`pnts`), one polygon in a vector tile (`vctr`), etc. +* "Feature" - indicates one model in a batch of models (`b3dm`), one instance in a collection of instances (`i3dm`), one point in a point cloud (`pnts`), etc. ## Fields diff --git a/README.md b/README.md index a20952d73..c697ece10 100644 --- a/README.md +++ b/README.md @@ -405,7 +405,7 @@ The computed transform for each tile is: The positions and normals in a tile's content may also have tile-specific transformations applied to them _before_ the tile's `transform` (before indicates post-multiplying for affine transformations). Some examples are: * `b3dm` and `i3dm` tiles embed glTF, which defines its own node hierarchy and coordinate system. `tile.transform` is applied after these transforms are resolved. See (tile content coordinate systems)[#tile-content-coordinate-systems]. * `i3dm`'s Feature Table defines per-instance position, normals, and scales. These are used to create per-instance 4x4 affine transform matrices that are applied to each instance before `tile.transform`. -* Compressed attributes, such as `POSITION_QUANTIZED` in the Feature Tables for `i3dm`, `pnts`, and `vctr`, and `NORMAL_OCT16P` in `pnts` should be decompressed before any other transforms. +* Compressed attributes, such as `POSITION_QUANTIZED` in the Feature Tables for `i3dm` and `pnts`, and `NORMAL_OCT16P` in `pnts` should be decompressed before any other transforms. Therefore, the full computed transforms for the above example are: * `TO`: `[T0]` diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index a5f61b155..ad1b6b143 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -25,7 +25,6 @@ A Batch Table is used by the following tile formats: * [Batched 3D Model](../Batched3DModel/README.md) (b3dm) * [Instanced 3D Model](../Instanced3DModel/README.md) (i3dm) * [Point Cloud](../PointCloud/README.md) (pnts) -* [Vector](../VectorData/README.md) (vctr) ## Layout diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 4e0ff00c9..add75293a 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -47,7 +47,7 @@ The 28-byte header contains the following fields: |Field name|Data type|Description| |----------|---------|-----------| -| `magic` | 4-byte ANSI string | `"b3dm"`. This can be used to identify the arraybuffer as a Batched 3D Model tile. | +| `magic` | 4-byte ANSI string | `"b3dm"`. This can be used to identify the content as a Batched 3D Model tile. | | `version` | `uint32` | The version of the Batched 3D Model format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | | `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. | diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index 9897d8f5a..befb3169a 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -42,7 +42,7 @@ The 16-byte header section contains the following fields: |Field name|Data type|Description| |----------|---------|-----------| -| `magic` | 4-byte ANSI string | `"cmpt"`. This can be used to identify the arraybuffer as a Composite tile. | +| `magic` | 4-byte ANSI string | `"cmpt"`. This can be used to identify the content as a Composite tile. | | `version` | `uint32` | The version of the Composite format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire Composite tile, including this header and each inner tile, in bytes. | | `tilesLength` | `uint32` | The number of tiles in the Composite. | diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 6f3433df3..87011e864 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -65,7 +65,7 @@ The 32-byte header contains the following fields: | Field name | Data type | Description | | --- | --- | --- | -| `magic` | 4-byte ANSI string | `"i3dm"`. This can be used to identify the arraybuffer as an Instanced 3D Model tile. | +| `magic` | 4-byte ANSI string | `"i3dm"`. This can be used to identify the content as an Instanced 3D Model tile. | | `version` | `uint32` | The version of the Instanced 3D Model format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | | `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. | diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index 607eb8d36..b55807a09 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -59,7 +59,7 @@ The 28-byte header contains the following fields: | Field name | Data type | Description | | --- | --- | --- | -| `magic` | 4-byte ANSI string | `"pnts"`. This can be used to identify the arraybuffer as a Point Cloud tile. | +| `magic` | 4-byte ANSI string | `"pnts"`. This can be used to identify the content as a Point Cloud tile. | | `version` | `uint32` | The version of the Point Cloud format. It is currently `1`. | | `byteLength` | `uint32` | The length of the entire tile, including the header, in bytes. | | `featureTableJSONByteLength` | `uint32` | The length of the Feature Table JSON section in bytes. | From ef40a6e5d5b49d7d380754d355e83d82b3fc28ce Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Tue, 8 May 2018 22:25:08 -0400 Subject: [PATCH 30/37] Tweaks to coordinate system and i3dm glb section --- TileFormats/Batched3DModel/README.md | 8 ++++---- TileFormats/Instanced3DModel/README.md | 22 ++++++++++------------ 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index add75293a..f651df601 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -18,7 +18,7 @@ * [Global semantics](#global-semantics) * [Batch Table](#batch-table) * [Binary glTF](#binary-gltf) - * [Coordinate reference system (CRS)](#coordinate-reference-system-crs) + * [Coordinate system](#coordinate-system) * [File extension and MIME type](#file-extension-and-mime-type) ## Overview @@ -77,7 +77,7 @@ These semantics define global properties for all features. | Semantic | Data Type | Description | Required | | --- | --- | --- | --- | | `BATCH_LENGTH` | `uint32` | The number of distinguishable models, also called features, in the batch. If the Binary glTF does not have a `batchId` attribute, this field _must_ be `0`. | :white_check_mark: Yes. | -| `RTC_CENTER` | `float32[3]` | A 3-component array of numbers defining the center position when positions are defined relative-to-center, (see [Coordinate reference system (CRS)](#coordinate-reference-system-crs)). | :red_circle: No. | +| `RTC_CENTER` | `float32[3]` | A 3-component array of numbers defining the center position when positions are defined relative-to-center, (see [Coordinate system](#coordinate-system)). | :red_circle: No. | ## Batch Table @@ -137,9 +137,9 @@ The `accessor.type` must be a value of `"SCALAR"`. All other properties must con When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0`, the `_BATCHID` attribute is required; otherwise, it is not. -### Coordinate reference system (CRS) +### Coordinate system -By default embedded glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTF must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [tile content coordinate systems](../../README.md#tile-content-coordinate-systems) for more details. +By default embedded glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [tile content coordinate systems](../../README.md#tile-content-coordinate-systems) for more details. Vertex positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position that all vertex positions are relative to after any coordinate system transformations have been applied. diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 87011e864..2e788617a 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -20,7 +20,6 @@ * [Oct-encoded normal vectors](#oct-encoded-normal-vectors) * [Default orientation](#default-orientation) * [Instance position](#instance-position) - * [Coordinate reference system (CRS)](#coordinate-reference-system-crs) * [RTC_CENTER](#rtc_center) * [Quantized positions](#quantized-positions) * [Instance scaling](#instance-scaling) @@ -28,7 +27,8 @@ * [Positions only](#positions-only) * [Quantized positions and oct-encoded normals](#quantized-positions-and-oct-encoded-normals) * [Batch Table](#batch-table) -* [glTF](#gltf) +* [glTF](#gltf) + * [Coordinate system](#coordinate-system) * [File extension and MIME type](#file-extension-and-mime-type) * [Implementation examples](#implementation-examples) * [Cesium](#cesium) @@ -151,10 +151,6 @@ This is suitable for instanced models such as trees whose orientation is always `POSITION` defines the location for an instance before any tile transforms are applied. -#### Coordinate reference system (CRS) - -By default embedded glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTF must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [tile content coordinate systems](../../README.md#tile-content-coordinate-systems) for more details. - #### RTC_CENTER Positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position and all instance positions are treated as relative to this value. @@ -255,19 +251,21 @@ Contains metadata organized by `batchId` that can be used for declarative stylin ## glTF -The glTF asset to be instanced is stored after the Feature Table and Batch Table. - -Instanced 3D Models uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) for model data. +Instanced 3D Model uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) for model data. -The required [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#binary-gltf-layout) immediately follows the feature table and batch table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. +The glTF asset to be instanced is stored after the Feature Table and Batch Table. It may embed all of its geometry, texture, and animations, or it may refer to external sources for some or all of these data. `header.gltfFormat` determines the format of the glTF field -* When the value of `header.gltfFormat` is `0`, the glTF field is a UTF-8 string, which contains a uri of the glTF model content. -* When the value of `header.gltfFormat` is `1`, the glTF field is a binary blob containing binary glTF. +* When the value of `header.gltfFormat` is `0`, the glTF field is a UTF-8 string, which contains a uri of the glTF or binary glTF model content. +* When the value of `header.gltfFormat` is `1`, the glTF field is a binary blob containing [binary glTF](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#binary-gltf-layout). In either case, `header.gltfByteLength` contains the length of the glTF field in bytes. +### Coordinate system + +By default glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [tile content coordinate systems](../../README.md#tile-content-coordinate-systems) for more details. + ## File extension and MIME type Instanced 3D models tiles use the `.i3dm` extension and `application/octet-stream` MIME type. From 4f6fc6857ed74473074be07078acccc568159dc4 Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Tue, 8 May 2018 22:30:44 -0400 Subject: [PATCH 31/37] Fix sentence --- TileFormats/BatchTable/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TileFormats/BatchTable/README.md b/TileFormats/BatchTable/README.md index ad1b6b143..57ebee194 100644 --- a/TileFormats/BatchTable/README.md +++ b/TileFormats/BatchTable/README.md @@ -32,7 +32,7 @@ A Batch Table is composed of two parts: a JSON header and an optional binary bod ![batch table layout](figures/batch-table-layout.png) -When a tile format includes a Batch Table, the Batch Table immediately follows the tile's Feature Table if it exists. Otherwise, the Batch Table immediately follows the tile's header. +When a tile format includes a Batch Table, the Batch Table immediately follows the tile's Feature Table. The header will also contain `batchTableJSONByteLength` and `batchTableBinaryByteLength` `uint32` fields, which can be used to extract each respective part of the Batch Table. ### Padding From c954b2b4faaa6aecff5078ba33cd270335584338 Mon Sep 17 00:00:00 2001 From: ggetz Date: Wed, 9 May 2018 12:38:09 -0400 Subject: [PATCH 32/37] Updated figures --- README.md | 4 ++-- TileFormats/Batched3DModel/figures/layout.png | Bin 19583 -> 10955 bytes TileFormats/Composite/README.md | 1 - .../figures/header-layout.png | Bin 21339 -> 11794 bytes TileFormats/PointCloud/figures/layout.png | Bin 19362 -> 11328 bytes figures/tilesets.jpg | Bin 493781 -> 0 bytes figures/tilesets.png | Bin 0 -> 17474 bytes 7 files changed, 2 insertions(+), 3 deletions(-) delete mode 100755 figures/tilesets.jpg create mode 100644 figures/tilesets.png diff --git a/README.md b/README.md index c697ece10..7b997b734 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) 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). **Draft 1.0 Plans** - +pa Topic | Status ---|--- [Tileset JSON](#tileset-json)

      The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed @@ -585,7 +585,7 @@ See the [Q&A below](#will-a-tileset-file-be-part-of-the-final-3d-tiles-spec) for To create a tree of trees, a tile's `content.uri` can point to an external tileset (the uri of another tileset JSON file). This enables, for example, storing each city in a tileset and then having a global tileset of tilesets. -![](figures/tilesets.jpg) +![](figures/tilesets.png) When a tile points to an external tileset, the tile: diff --git a/TileFormats/Batched3DModel/figures/layout.png b/TileFormats/Batched3DModel/figures/layout.png index fe5d698bb427ba105e9d8a26e10a6e9fdfbc46d9..ebc63980f1b2891dd3628403c3ed468f21dc0dd9 100644 GIT binary patch literal 10955 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 literal 19583 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

      XBdX0B+Wk{UZqt(HBHNi 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 diff --git a/figures/tilesets.png b/figures/tilesets.png new file mode 100644 index 0000000000000000000000000000000000000000..614ba99d073d9422491eef0e73260381c284f094 GIT binary patch literal 17474 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 literal 0 HcmV?d00001 From 36dde4645a4b1f960ffe092a7ef50b085b5b752b Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Wed, 9 May 2018 14:28:46 -0400 Subject: [PATCH 33/37] Combine crs paragraphs, use some of the original wording, not completely solid yet --- README.md | 11 +++-------- TileFormats/Batched3DModel/README.md | 2 +- TileFormats/Instanced3DModel/README.md | 2 +- TileFormats/PointCloud/README.md | 2 +- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 7b997b734..262397a3d 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,6 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * [URIs](#uris) * [Units](#units) * [Coordinate reference system (CRS)](#coordinate-reference-system-crs) - * [Tile content coordinate systems](#tile-content-coordinate-systems) * [Tiles](#tiles) * [Bounding volumes](#bounding-volumes) * [Region](#region) @@ -223,15 +222,11 @@ All angles are in radians. ## Coordinate reference system (CRS) -Tile objects are specified in a coordinate system as defined by the type of [bounding volume](#bounding-volumes) used. This coordinate system will often be in a geospatial context and use the WGS 84 datum as defined in [EPSG 4326](http://nsidc.org/data/atlas/epsg_4326.html). Otherwise, the bounding volume will be defined with a right-handed 3-axis (x, y, z) Cartesian coordinate system. - -### Tile content coordinate systems - -Each tile's content uses a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. An additional [tile transform](#tile-transform) may be applied to transform a tile's local coordinate system to the parent tile's coordinate system. +3D Tiles uses a right-handed Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. An additional [tile transform](#tile-transform) may be applied to transform a tile's local coordinate system to the parent tile's coordinate system. A tileset's global coordinate system will often be [WGS 84 coordinates](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for use with a modeling tool without a geospatial context. Some tile content types such as [Batched 3D Model](TileFormats/Batched3DModel/README.md) and [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) embed glTF. The [glTF specification](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units) defines a right-handed coordinate system with the _y_ axis as up. For consistency with the _z_-up coordinate system of 3D Tiles, embedded glTFs may instead use the [`CESIUM_z_up` glTF extension](TODO). -If the `CESIUM_z_up` glTF extension is not used, the glTF model must be transformed to a _z_-up coordinate system at runtime. This is done by rotating the model about the _x_-axis by π/2 radians. Equivalently, apply the following matrix transform: +If the `CESIUM_z_up` glTF extension is not used, the glTF model is considered to by _y_-up and must be transformed to a _z_-up coordinate system at runtime. This is done by rotating the model about the _x_-axis by π/2 radians. Equivalently, apply the following matrix transform: ```json [ 1.0, 0.0, 0.0, 0.0, @@ -403,7 +398,7 @@ The computed transform for each tile is: * `T4`: `[T0][T1][T4]` The positions and normals in a tile's content may also have tile-specific transformations applied to them _before_ the tile's `transform` (before indicates post-multiplying for affine transformations). Some examples are: -* `b3dm` and `i3dm` tiles embed glTF, which defines its own node hierarchy and coordinate system. `tile.transform` is applied after these transforms are resolved. See (tile content coordinate systems)[#tile-content-coordinate-systems]. +* `b3dm` and `i3dm` tiles embed glTF, which defines its own node hierarchy and coordinate system. `tile.transform` is applied after these transforms are resolved. See (coordinate reference system)[#coordinate-reference-system-crs]. * `i3dm`'s Feature Table defines per-instance position, normals, and scales. These are used to create per-instance 4x4 affine transform matrices that are applied to each instance before `tile.transform`. * Compressed attributes, such as `POSITION_QUANTIZED` in the Feature Tables for `i3dm` and `pnts`, and `NORMAL_OCT16P` in `pnts` should be decompressed before any other transforms. diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index f651df601..95bbffb1e 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -139,7 +139,7 @@ When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0` ### Coordinate system -By default embedded glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [tile content coordinate systems](../../README.md#tile-content-coordinate-systems) for more details. +By default embedded glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [coordinate reference system](../../README.md#coordinate-reference-system-crs) for more details. Vertex positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position that all vertex positions are relative to after any coordinate system transformations have been applied. diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 2e788617a..4fdbc4961 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -264,7 +264,7 @@ In either case, `header.gltfByteLength` contains the length of the glTF field in ### Coordinate system -By default glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [tile content coordinate systems](../../README.md#tile-content-coordinate-systems) for more details. +By default glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [coordinate reference system](../../README.md#coordinate-reference-system-crs) for more details. ## File extension and MIME type diff --git a/TileFormats/PointCloud/README.md b/TileFormats/PointCloud/README.md index b55807a09..30ffc0181 100644 --- a/TileFormats/PointCloud/README.md +++ b/TileFormats/PointCloud/README.md @@ -119,7 +119,7 @@ Examples using these semantics can be found in the [examples section](#examples) #### Coordinate reference system (CRS) -3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (also see [tile content coordinate systems](../../README.md#tile-content-coordinate-systems)). +3D Tiles local coordinate systems use a right-handed 3-axis (x, y, z) Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems (also see [coordinate reference system](../../README.md#coordinate-reference-system-crs)). #### RTC_CENTER From 5ba688ccdf1a3ae92a3e361c8749a61e200a2607 Mon Sep 17 00:00:00 2001 From: ggetz Date: Wed, 9 May 2018 14:50:44 -0400 Subject: [PATCH 34/37] Formatting fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 262397a3d..792cf8d4e 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) 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). **Draft 1.0 Plans** -pa + Topic | Status ---|--- [Tileset JSON](#tileset-json)

      The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed From 384e74911c1aa716b345c85e3467e75f3d88ea85 Mon Sep 17 00:00:00 2001 From: ggetz Date: Wed, 9 May 2018 15:13:24 -0400 Subject: [PATCH 35/37] Tweaked CRS --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 792cf8d4e..cb690651d 100644 --- a/README.md +++ b/README.md @@ -222,7 +222,7 @@ All angles are in radians. ## Coordinate reference system (CRS) -3D Tiles uses a right-handed Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. An additional [tile transform](#tile-transform) may be applied to transform a tile's local coordinate system to the parent tile's coordinate system. A tileset's global coordinate system will often be [WGS 84 coordinates](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf), but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for use with a modeling tool without a geospatial context. +3D Tiles uses a right-handed Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. An additional [tile transform](#tile-transform) may be applied to transform a tile's local coordinate system to the parent tile's coordinate system. A tileset's global coordinate system will often be in a [WGS 84](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf) earth-centered, earth-fixed (ECEF) reference frame, but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for use with a modeling tool without a geospatial context. Some tile content types such as [Batched 3D Model](TileFormats/Batched3DModel/README.md) and [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) embed glTF. The [glTF specification](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units) defines a right-handed coordinate system with the _y_ axis as up. For consistency with the _z_-up coordinate system of 3D Tiles, embedded glTFs may instead use the [`CESIUM_z_up` glTF extension](TODO). @@ -240,6 +240,8 @@ Note that glTF defines its own node hierarchy, where each node has a transform. > Implementation Note: Using the `CESIUM_z_up` extension is preferred to transforming the model to a _z_-up coordinate system at runtime. +Some [bounding volumes](#bounding-volumes) may specify bounds using a geodetic coordinate system (latitude, longitude, height), in which case use the WGS 84 datum as defined in [EPSG 4326](http://nsidc.org/data/atlas/epsg_4326.html). + ## Tiles Tiles consist of content, metadata used to render the tile, and any children tiles. The following example shows one non-leaf tile. From 4bc6f90fec87487524411d3392ce3234381e6f4e Mon Sep 17 00:00:00 2001 From: ggetz Date: Wed, 9 May 2018 15:55:49 -0400 Subject: [PATCH 36/37] Add acknowledgements --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index e6b5db8f3..6ef4dc4b0 100644 --- a/README.md +++ b/README.md @@ -923,6 +923,16 @@ See [#11](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/11). * [Kevin Ring](http://www.kotachrome.com/kevin/) * [Dylan Brown](http://www.github.com/Dylan-Brown) * [Leesa Fini](http://www.github.com/LeesaFini) +* Ray Bentley +* Paul Connelly +* Jean-Philippe Pons +* Pano Voudouris +* Stan Tillman +* Frederic Houbie +* Dave Wesloh +* Claus Nagel +* Volker Coors +* Ralf Gutbell ## Data credits From 6dce1a44f98f9f0db9c489c6d421f246eec702d7 Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Wed, 9 May 2018 16:12:17 -0400 Subject: [PATCH 37/37] Edits --- README.md | 48 ++++++++----------------- Styling/README.md | 2 -- TileFormats/Batched3DModel/README.md | 2 +- TileFormats/Composite/README.md | 2 +- TileFormats/Instanced3DModel/README.md | 2 +- TileFormats/OpenStreetMap/README.md | 7 ---- TileFormats/VectorData/README.md | 19 ---------- figures/tile.png | Bin 24701 -> 25505 bytes 8 files changed, 18 insertions(+), 64 deletions(-) delete mode 100644 TileFormats/OpenStreetMap/README.md delete mode 100644 TileFormats/VectorData/README.md diff --git a/README.md b/README.md index 6ef4dc4b0..1bc807f6b 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,6 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) ## Contents * [Resources](#resources) -* [Spec status](#spec-status) * [3D Tiles Extensions](#3d-tiles-extensions) * [Introduction](#introduction) * [File extensions and MIME types](#file-extensions-and-mime-types) @@ -141,28 +140,6 @@ Also see the [3D Tiles Showcases video on YouTube](https://youtu.be/KoGc-XDWPDE) * **News** * [3D Tiles thread on the Cesium forum](https://groups.google.com/forum/#!topic/cesium-dev/tCCooBxpZFU) - get the latest 3D Tiles news and ask questions here. -**Draft 1.0 Plans** - -Topic | Status ----|--- -[Tileset JSON](#tileset-json)

      The tileset's spatial hierarchy | :white_check_mark: **Solid base**, will add features as needed -[Batched 3D Model](TileFormats/Batched3DModel/README.md) (*.b3dm)

      Textured terrain and surfaces, 3D building exteriors and interiors, massive models, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Instanced 3D Model](TileFormats/Instanced3DModel/README.md) (*.i3dm)

      Trees, windmills, bolts, ... | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Point Cloud](TileFormats/PointCloud/README.md) (*.pnts)

      Massive number of points | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Composite](TileFormats/Composite/README.md) (*.cmpt)

      Combine heterogeneous tile formats | :white_check_mark: **Solid base**, only minor, if any, changes expected -[Declarative styling](Styling/README.md)

      Style features using per-feature metadata | :white_check_mark: **Solid base**, will add features/functions as needed, [#2](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/2) - -**Post Draft 1.0 Plans** - -Topic | Status ----|--- -[Vector Data](TileFormats/VectorData/README.md) (*.vctr)

      Polygons, polylines, and placemarks | :white_circle: **In progress**, [#124](https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/124/files) -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) -[OpenStreetMap](TileFormats/OpenStreetMap/README.md) | :white_circle: **Not started** Currently folks are using [Batched 3D Model](TileFormats/Batched3DModel/README.md) -Stars | :white_circle: **Not started** - -For spec work in progress, [watch this repo](https://github.com/AnalyticalGraphicsInc/3d-tiles/subscription) and browse the [issues](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues). - ## 3D Tiles Extensions [3D Tiles extension registery](./extensions/) @@ -220,7 +197,7 @@ All angles are in radians. 3D Tiles uses a right-handed Cartesian coordinate system; that is, the cross product of _x_ and _y_ yields _z_. 3D Tiles defines the _z_ axis as up for local Cartesian coordinate systems. An additional [tile transform](#tile-transform) may be applied to transform a tile's local coordinate system to the parent tile's coordinate system. A tileset's global coordinate system will often be in a [WGS 84](http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf) earth-centered, earth-fixed (ECEF) reference frame, but it doesn't have to be, e.g., a power plant may be defined fully in its local coordinate system for use with a modeling tool without a geospatial context. -Some tile content types such as [Batched 3D Model](TileFormats/Batched3DModel/README.md) and [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) embed glTF. The [glTF specification](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units) defines a right-handed coordinate system with the _y_ axis as up. For consistency with the _z_-up coordinate system of 3D Tiles, embedded glTFs may instead use the [`CESIUM_z_up` glTF extension](TODO). +Some tile content types such as [Batched 3D Model](TileFormats/Batched3DModel/README.md) and [Instanced 3D Model](TileFormats/Instanced3DModel/README.md) embed glTF. The [glTF specification](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#coordinate-system-and-units) defines a right-handed coordinate system with the _y_ axis as up. For consistency with the _z_-up coordinate system of 3D Tiles, embedded glTFs may instead use the [`CESIUM_z_up` glTF extension](https://github.com/ggetz/glTF/tree/cesium-z-up-ext/extensions/2.0/Vendor/CESIUM_z_up). If the `CESIUM_z_up` glTF extension is not used, the glTF model is considered to by _y_-up and must be transformed to a _z_-up coordinate system at runtime. This is done by rotating the model about the _x_-axis by π/2 radians. Equivalently, apply the following matrix transform: ```json @@ -236,7 +213,7 @@ Note that glTF defines its own node hierarchy, where each node has a transform. > Implementation Note: Using the `CESIUM_z_up` extension is preferred to transforming the model to a _z_-up coordinate system at runtime. -Some [bounding volumes](#bounding-volumes) may specify bounds using a geodetic coordinate system (latitude, longitude, height), in which case use the WGS 84 datum as defined in [EPSG 4326](http://nsidc.org/data/atlas/epsg_4326.html). +Some [bounding volumes](#bounding-volumes) may specify bounds using a geographic coordinate system (latitude, longitude, height), in which case use the WGS 84 datum as defined in [EPSG 4326](http://nsidc.org/data/atlas/epsg_4326.html). ## Tiles @@ -281,7 +258,7 @@ The optional `viewerRequestVolume` property (not shown above) defines a volume, The `refine` property is a string that is either `"REPLACE"` for replacement refinement or `"ADD"` for additive refinement, see [Refinement](#refinement). It is required for the root tile of a tileset; it is optional for all other tiles. A tileset can use any combination of additive and replacement refinement. When the `refine` property is omitted, it is inherited from the parent tile. -The `content` property is an object that contains metadata about the tile's content and a link to the content. `content.url` is a uri that points to the tile's content. In the example above, the uri, `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). +The `content` property is an object that contains metadata about the tile's content and a link to the content. `content.uri` is a uri that points to the tile's content. In the example above, the uri, `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). The uri can be another tileset JSON to create a tileset of tilesets. See [External tilesets](#external-tilesets). @@ -295,7 +272,7 @@ The screenshot below shows the bounding volumes for the root tile for [Canary Wh The 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. -The `children` property is an array of objects that define child tiles. See the [tileset.json section below](#tilesetjson). +The `children` property is an array of objects that define child tiles. See the [Tileset JSON](#tileset-json) section below. ![](figures/tile.png) @@ -396,7 +373,7 @@ The computed transform for each tile is: * `T4`: `[T0][T1][T4]` The positions and normals in a tile's content may also have tile-specific transformations applied to them _before_ the tile's `transform` (before indicates post-multiplying for affine transformations). Some examples are: -* `b3dm` and `i3dm` tiles embed glTF, which defines its own node hierarchy and coordinate system. `tile.transform` is applied after these transforms are resolved. See (coordinate reference system)[#coordinate-reference-system-crs]. +* `b3dm` and `i3dm` tiles embed glTF, which defines its own node hierarchy and coordinate system. `tile.transform` is applied after these transforms are resolved. See [coordinate reference system](#coordinate-reference-system-crs). * `i3dm`'s Feature Table defines per-instance position, normals, and scales. These are used to create per-instance 4x4 affine transform matrices that are applied to each instance before `tile.transform`. * Compressed attributes, such as `POSITION_QUANTIZED` in the Feature Tables for `i3dm` and `pnts`, and `NORMAL_OCT16P` in `pnts` should be decompressed before any other transforms. @@ -486,13 +463,11 @@ The following example has a building in a `b3dm` tile and a point cloud inside t } ``` -_TODO: screenshot showing the request vs. bounding volume_ - For more on request volumes, see the [sample tileset](https://github.com/AnalyticalGraphicsInc/3d-tiles-samples/tree/master/tilesets/TilesetWithRequestVolume) and [demo video](https://www.youtube.com/watch?v=PgX756Yzjf4). ### Refinement -Refinement determines how a parent tile renders when its children are also selected to be rendered. Permitted refinement types are replacement (`"REPLACE"`) and additive (`"ADD"`). A tileset can use all refinement, all additive, or any combination of additive and replacement refinement. A refinement type is required for the root tile of a tileset; it is optional for all other tiles. When omitted, a tile inherits the refinement type of its parent. +Refinement determines how a parent tile renders when its children are selected to be rendered. Permitted refinement types are replacement (`"REPLACE"`) and additive (`"ADD"`). A tileset can use replacement refinement exclusively, additive refinement exclusively, or any combination of additive and replacement refinement. A refinement type is required for the root tile of a tileset; it is optional for all other tiles. When omitted, a tile inherits the refinement type of its parent. #### Replacement @@ -571,7 +546,7 @@ The top-level object in the tileset JSON has four properties: `asset`, `properti `root` is an object that defines the root tile using the JSON described in the [above section](#tiles). `root.geometricError` is not the same as the tileset's top-level `geometricError`. 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. -`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. +`root.children` is an array of objects that define child tiles. Each child tile's content 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. See the [Q&A below](#will-a-tileset-file-be-part-of-the-final-3d-tiles-spec) for how a tileset will scale to a massive number of tiles. @@ -685,10 +660,17 @@ The geometric error is determined when creating the tileset and based on a metri ## Tile formats -Each tile's `content.uri` property points to a tile that is one of the formats listed in the [Status section](#spec-status) above. +Each tile's `content.uri` property points to a tile that is one of the formats listed in the table below. A tileset can contain any combination of tile formats. 3D Tiles may also support different formats in the same tile using a [Composite](TileFormats/Composite/README.md) tile. +Format|Uses +---|--- +[Batched 3D Model](TileFormats/Batched3DModel/README.md)|Heterogeneous 3D models. E.g. textured terrain and surfaces, 3D building exteriors and interiors, massive models. +[Instanced 3D Model](TileFormats/Instanced3DModel/README.md)|3D model instances. E.g. trees, windmills, bolts. +[Point Cloud](TileFormats/PointCloud/README.md)|Massive number of points. +[Composite](TileFormats/Composite/README.md)|Combine tile formats. + ## Specifying extensions and application specific extras 3D Tiles defines extensions to allow the base specification to have extensibility for new features, as well as extras to allow for application specific metadata. diff --git a/Styling/README.md b/Styling/README.md index 71fc467bd..8639808e0 100644 --- a/Styling/README.md +++ b/Styling/README.md @@ -197,8 +197,6 @@ A meta property expression can evaluate to any type. For example: ## Schema reference -TODO: generate reference doc from schema - Also, see the [JSON schema](schema). ## Expressions diff --git a/TileFormats/Batched3DModel/README.md b/TileFormats/Batched3DModel/README.md index 95bbffb1e..86e7bdd28 100644 --- a/TileFormats/Batched3DModel/README.md +++ b/TileFormats/Batched3DModel/README.md @@ -139,7 +139,7 @@ When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0` ### Coordinate system -By default embedded glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [coordinate reference system](../../README.md#coordinate-reference-system-crs) for more details. +By default embedded glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](https://github.com/ggetz/glTF/tree/cesium-z-up-ext/extensions/2.0/Vendor/CESIUM_z_up). See [coordinate reference system](../../README.md#coordinate-reference-system-crs) for more details. Vertex positions may be defined relative-to-center for high-precision rendering, see [Precisions, Precisions](http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm). If defined, `RTC_CENTER` specifies the center position that all vertex positions are relative to after any coordinate system transformations have been applied. diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index ad6a7fb49..209febece 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -51,7 +51,7 @@ The 16-byte header section contains the following fields: Inner tile fields are stored tightly packed immediately following the header section. The following information describes general characteristics of all tile formats that a Composite tile reader might exploit to find the boundaries of the inner tiles: -* Each tile starts with a 4-byte ANSI string, `magic`, that can be used to determine the tile format for further parsing. See the [spec status](../../README.md#spec-status) for a list of tile formats. Composite tiles can contain Composite tiles. +* Each tile starts with a 4-byte ANSI string, `magic`, that can be used to determine the tile format for further parsing. See [tile formats](../../README.md#tile-formats) for a list of tile formats. Composite tiles can contain Composite tiles. * Each tile's header contains a `uint32` `byteLength`, which defines the length of the inner tile, including its header, in bytes. This can be used to traverse the inner tiles. * For any tile format's version 1, the first 12 bytes of all tiles is the following fields: diff --git a/TileFormats/Instanced3DModel/README.md b/TileFormats/Instanced3DModel/README.md index 4fdbc4961..faa2287f8 100644 --- a/TileFormats/Instanced3DModel/README.md +++ b/TileFormats/Instanced3DModel/README.md @@ -264,7 +264,7 @@ In either case, `header.gltfByteLength` contains the length of the glTF field in ### Coordinate system -By default glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](TODO). See [coordinate reference system](../../README.md#coordinate-reference-system-crs) for more details. +By default glTFs use a right handed coordinate system where the _y_-axis is up. For consistency with the _z_-up coordinate system of 3D Tiles, glTFs must be transformed at runtime or optionally use the [`CESIUM_z_up` glTF extension](https://github.com/ggetz/glTF/tree/cesium-z-up-ext/extensions/2.0/Vendor/CESIUM_z_up). See [coordinate reference system](../../README.md#coordinate-reference-system-crs) for more details. ## File extension and MIME type diff --git a/TileFormats/OpenStreetMap/README.md b/TileFormats/OpenStreetMap/README.md deleted file mode 100644 index 073a850d3..000000000 --- a/TileFormats/OpenStreetMap/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# OpenStreetMap - -## Notes - -**Use cases**: OSM buildings - -The [Cesium OSM NYC demo](http://cesiumjs.org/NewYork) uses `Batched 3D Model` tiles. It _could_ be a net win to use a more concise tile representation based on OSM constructs (for example, their [roofs](http://wiki.openstreetmap.org/wiki/Simple_3D_Buildings#Roof)) and then quickly generate batched geometry at runtime, in a web worker if needed. The OSM constructs may not map well—or efficiently—to Cesium geometries, in which case, we could convert them to something Cesium-friendly and use that as the tile format. This may be the `Vector Data` format, but we want to avoid creating a kitchen sink. \ No newline at end of file diff --git a/TileFormats/VectorData/README.md b/TileFormats/VectorData/README.md deleted file mode 100644 index f03ceab72..000000000 --- a/TileFormats/VectorData/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Vector Data - -* [Draft spec](https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/124/files) -* GitHub issue, [#25](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/25) - -## Notes - -**Use cases**: Traditional geospatial features: points, polylines, and polygons. Replacing KML. - -**Format** -* Combination of binary (for positions, normals, etc.) and JSON (for labels, other metadata, etc.). -* Concise representations for Cesium's [set of geometries](https://cesiumjs.org/tutorials/Geometry-and-Appearances/), including extrusions, and billboards and labels. - * Need to carefully select the representation for the best trade-off between conciseness and runtime processing. For example, polygons will likely be pre-triangulated since it only adds indices to the payload, but will be subdivided at runtime since subdivision is fast and increases the vertex payload significantly. - * RTC positions for high precision-rendering. - * Context-aware compression. - * Bounding volume may need to be adjusted at runtime for terrain clamping. -* Metadata for cracking, morphing, and perhaps label declutter. - -Could also name this a `Geometry` tile. diff --git a/figures/tile.png b/figures/tile.png index f23e3f4ff6f6f92c5cb72b358489642de59b13be..ecd757d89c166b2cd0ab77e50764d7b3852abb89 100644 GIT binary patch literal 25505 zcmce-2UJs0v^E$;ML`5ann;u0dv8(%Lhm45BE3nk0Tq!B(gdl}rGwPaRR~Iz&`W~S zLyPnhLgwQ8-}`6Qnwd54Uo!)1k;A<=_nvd^KHvWKclM6a(@`TKdPoEUfk?pWDh43X zwPg_Ky4mepz!CkFL<->JmYt@W3J8Do`>C@m6*zL|rTQ};5QrE!OH6SMl$ApR93=Dw zYdj&?~CAdW!iRi+4gC zAW+YF2%I7X;X&J<16<8V27wIK2{|m#h(O|Lzo`I+c1n1jBhk{w3Tqw98{xnKr`I&o z@lF032*sh>AkZ&KE%)mn(3ALUAP^aZ7Q#L_bTjX8{SF<39mi-Pmo!6@Dh`itJ6u`t z^4Z0H7Gl@_a1GRBQdDVp-!7h3-#OUG^5uBSy9Hsp__K~C{|{9JpjXxGa7R{c7#?@_ zje~7CWRZHFvzMa&KnHeU&q^XAG$QGV6MS1*CIEqYTc5Rb ztWY{GOs9&8%HHlu9#gIXOg)Xv#ruq%-SMM! zlB6Yi;Nfmpr@{YGg16t&uR? z^=X}pc$={+vLbb5K4f;_@f3#7&kqQ5m`)&<&0boFs^VojPB<+@tNELMvYGBPSL&a_ zfGK4=R;e;4&hVihta*}7&52CS5mq-D(!Jb$20qx`(j&18efNj}uv0PXJqXG6d9;wj zE8dxuoR~Wv9Yc4^C*l)n2tbWLMC1{@U25}Q`tZyup|wVd9>-Dy6JX?U8j(Nl3hT$C zA7;C@dkTmmD!j+q%+9^jM^@>55boJNcv91u%MXXZB;Z~f!!yY}>n3xqFd&uRr=t-I zW$)_5#?L?A|IuKd_^df*PSbQ`uzk$ixpMMya(|>cU$gEchlkF2l#0R{rER2cf8x;ee+9j7Dz0S^N>p+9oCRI*^vR2M zQ756vT%!5H?TG4_@}|0`no#b zH#7=kw}kR|53qqo1*VmP6vrQ33uyBBm!YcNj+^R>=v#e~Tu2HpY|vw9+`8#bX4i%Z z1^VGg>has~#$mhAHYKULJE*h3H^_IDX?+`tE^joVBP09F=TqdD9mbD zZZ!-`k{^ciwCKX!7e5@r$baZBI0Z|4HnNma+9!FYhi6qA8aXxf?i#-)IO5RPxmc(ZB?r-J^#)% zOCWV5NLLbJPC`?^5mwo(TiM&XkTZA6^r-?}`Lar*xbo2;UXG3;DL8SR_~NDL%VDeO z!lq-b-1TPy*DR{W#G7W^zmZT`G_+EY^wNM#HeANM;6||>#-zGtt{GEj!Q(H^+UB<6 zDV7R|toKYIH5HYZmfm9SchgiJ_$x`Gc@hgz-4-?v?FY3nZL8a{(OGjl^1d}v-2rH&e^fO z(PZ&+ABZ2s=~o0RJDp-|6^;B}n{#&!WfxgCk&*3VLu!)w<|YV4d0X(B=-0aSy~n** z{-p6ImY(~-zk)nnNl{~!Mf)1)37;R|@Pr;4qoeQEqs7k(rYSmYVeVIczd-ve)7W{! ze~Mx?h+~N3j>|Q`tpje#EqFr&V3+@c2?1{Ezuz+BXcGjO%G6gH5hmv+2xc(uPBt&N zjnnz7dHbtAG6+Dv5>D@FNH56;OxI&5!Q&oMagv_4^84}-&?{}OZ)$Ax>4z^bS_r!T z5}RVr&-V#$-9l-X81xx&QHLi)SMNVQ2aHvwX~<&Ot@7kP5BPEzqkbzs*m@9ISFo zU>X1II>rt>fvLjrSduktJuk%L@c4-G{5<%evlANGCC|~LXe17QuPaApY`JtNULhIO$4mPE@zq)CB1qASfI%MSO9dHuZ zz|=HDF3@HT-Y%jX7V)h4Jm(OT!#BRWa-kZ@muMcwrWb9zo~lL zo1-cYQg+o#49@$8zGh=FohO~Sa&mn}WHU_a={H1gyOG@x7gS{z6o#8Y;?oE3@$k6X zS2eNURgUcY^&sx4A@2iiX3iTaFO=zSy{;EloieAOQubN53ZS|?)WsiSx{j(naoZ>1 z_!9-MWq1N%ypRAbgrRxLnl*}SdDyHVFSZN6=6Si+kbgGh82F_sc|AY;lE85^4~Icc zw={n`k^W6(V@q0|i01M-KR>V8o@;XD>I%bO;`q1%G&MDGrnS~q%RvGH0w=tDd^<-b zJBf0vvX+V+Hr}XXB{!H;wbk6N(n5nz84egbSm7??(yo=MrJdj*Qq1wX)0M zZd^&50#fExc??WNSrgMr)0P12eEZfbN!b} zC0;u7<=)8$K-bMUXY9ykI)q-cMowkbncdaaBl=-BSJntE(7U@Isr3Hm3y+-OwU5+{ za>0ipwcVHJ^tXlWI%Yj8SW+0gY{GfD;*4F^%ggelQ%2VVQ2z7oFxTmto!J-F%+&rn zb7FcP+4M609T_@h0%wog!||7z?fyG$voTBN0w1+X*IWbtL{i^kMXM>CkG*2;Jf3qU z(CH=ZRXI=2R9DmfLoKHp9Gp5$i|Zom4quep+}w;+F;jGok+rRCdidy$*H5~8nhZ6I zqE?&_w8#;(LfecbkJ9}+8Ngb{(07&tda=3dM8cIuT(_4 zW?zV^#menA&hv&Vo@8{a8W{Q&*zTVxRp@cvXju$X+l#3U$0^7jpDvT)wjCAPl}o02Z*mfxyv0zcep?3(L5^$Qt|orGTm?()OeE#lYnR0uJ50M=I|v;#{A%vZ5)&al`^0 zf`8$3o`-;)ZedZO2gA@Bn9R?( z-Gtz>?C6iPv$Ih)fbri{MYQCz(%H1We7<;banVI|9Y>jAQyYvrIFv?p>#8H%q0ly{ z=|``;=9Rk{Zv&ga(uY~a-|c>~@V~2xftfWb*4suXk!ALnjq;e#n5Sw`eorT#;}=(9 z{W~T^9BHS=OQpqZbDQYQnDlHs|H5eZ;?Q?jt+wM!e@XazL=;WH{jwD?T}a|wjD)V| zyRJzMrETtJLl2dsqVQwK@Z(6*@YC6)rt^!4vM7*kVWIya~_`RL*gip zSLv9}cYO#0-gk=iW{r_bW49EYg%p`z4v#lK0QEkkn-kQEWLKv&ee78sTmQm+LpO#9 zFnBJiSjDdQ0Vpr@K~4Lv<)vx&lX`b&VgKmp7;6f%s}Dxs6` zcwkKQ>℞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

      n#Va;R6n{4v=yZ_LRsA;O$VU)mv`Lfdkfx zE<@f<(0<>Mlof@@g{&A^RQXZR)a&JbcsKaqknzxbM#Ngt10}l^h7qi|lH5I?hUHwi z1{D3^-5r)T`dRDVXxV-_=CSl@rOqG-;n66v@*XpSPC>rZDIAS6)nbFyR2p_DB+Q7| zyQX`=)8hQUxnGp~lqR_#{!A^{Kj-=p_gh-ES(xr1vE#SdmYk#e5eMqgv!zE#mFD0%b6N9;e?xi4wI!+LEeO;Nz{UWccKbAQPn1(qoSyOXs1a=>SL+AymW2Q5i zZ}|r_C4YI~@0F6Wy4g34u8r#+DjUGQq+N{8A2Lso zFjZBW)R>h`Ny+AOmrd+QsN&CsjvU7t#(t{xaJdbmqSv;ms3&x0rJbGfgj?n^%po0d zt)N-FW8${Dc%B{?ddD=LaqPQYg}AKu2DmcqllTP_&~T@hiNr)RVR;!%cTdD)qXs)> z^Up>{0YP{2{iDrHI%$@no67cID3K2hrt?>aM*?9mfsECLcc=asi3=V0#?9jPID=xo z+`-0Oi~H7g$z(^u5LJZ+AAz{XuUe-PJGKoIUc(h8buzgWf9R0kt=f!2LKIGj|9tGj z@q&Wzw8G3c(dMWsH8Zg7WsKzuJMFmxX#eHZ%vh6N#0YxMt)2h)K@!}WmJR84M%69k9_I6 zP8be!3o5BkkZwd?CJ9;fje*ONXU4C8iy(?b3}0_~+X}p$iMQ%|$*`X8ljd|0^7`5L z=Z8x*m65SDcYBHg2<8R7&p9}*0FE%TxJA||(UjvQls_^dX;eQti8}&bPD}9ST=12O z#OeEPL#q@UdL#Jy`2}SA z?u+CU)A-Y&xO!wkk~)HBu8c?M#}E(W*Q3j%10y#+HE3|Xx@wxPn?C|w-k#s08_SG3 z=i`{mGP7OJ(G(zBNGjG`sCVM|f-I4;#TTtj{`DHO$jQ~2M{Kw~?%j^X>$VTg+}Jve z9bbeP#r!n?5w11f{)T?@=u;V1mxnj9@N@2sx>Y}L+0k=<2;+(yabmG9$P!y0!qr`| z#&id(*BATrQ5I9Qpk{cyOeqH*k3|GMnw%B>qat}u7s6fKP*M~IjW9`@X-HPK9;Ts< znfdC3@}(%v5v$`I#Dw{*6t7~c^Sc5TM??9JtXUmH%H@SU`Fhd^@QLfZVBEtUk9F_P& zmER4+g$GHy%bLdxe0E2sH!Mrs?fFBtS?-vuux#(7vN@Zp6Pz)0qs|v;la3;{AqQjT ze{KfnMfLNQK0HIi=^Q2K%*^w^yVW3}BJ+k9Rwv9=-SH%ZM+C;PU({B>PcPT`TD*ov zrJHDaHDBbC4(M&J{(O6IUzbm?;~*(qT&(Vs!jMDvuil>aNdx~arUhSpa{iWWQXJi3 zdsf$5dH)z=)EnWdBADVp^9n;cSJi4v82c<%0lKtKTo~^l@VayI~4!?&!Q(j5P zY^5~FmAA%Eju>Q}a;o&@J2D^j*`jDgJqh_2boe=4#CaQXTyxt?tfoftOGgqrq|lY` z)-d&!qj^P7tQV!?7`I9`S&L2kU)V)YguYBw$BuN#mkoj5kc+zcAGL7eQ=ze9 z$o<*e*)rEhtz%@!`ZBC6Xl@dH6`uUP=FObq;%tG|RTDouw}PVW`>O-`8J!s~(<+;| zKYzF=as_8)cbcKzl)GIP0v36)+dHY#n;l0E9xrc&b zRh<{hj^hyBs-*ltDLBm|S zI(BR(Wm{Hjf-8ZIER{z--m#*7Z^Y->xSTHmPq8 z%Q$p;e<&b8a|Vy6!LKTf4r1%xS|t?xN^yAZy?n0FW3MCyo|vERJiA4~+*x1h3-hJS z>SGr43~dM~yFGU@93e)>@5*BdUefi=SidcyO>?A3dnq#Y#b?T4&Ide7s2HiyWBFC#Om?*V?C}Xhkd3(qSNXP;KozSgF#uiIZk4quS18 z<>zj;sEpcx@@)6HMdK#^T@Fc@dC{tlQ5Iy>$L(S?7dF)%VRFLMkg5~q#pWIQh2l@+ z%h!nFMgjO^a6A7UVkD`xg}rP$%;gtt@c85B%n_AM8A1+EC8C1 z>DW`r(wtXreYbj5Seg)&VSHXj>n*jT@+^hgQWEAo9=b7^=G3(EII6?<649tukWcvL zC37|djZ(S_yr8(wfVYn1vGJNiA31-S#kgIszcvcL?W?WBKK>&*^s1Y1pU)p_9yw^x z1*wU{_^(MZbsV}_g$ZpN1vTC4G`~1uJi>>OVAcmuI%^_lMu0j>ys4{9wxWXM^0G9R zEqezVjs_x%MFIcf52x=AhM$nYNco!HL(T(D`e{hK9&nJv+^c1;PfO2aW@&sAdF(5= zYdnz`jYGBbd$QY1U=IPh^I6>fJjiETS)Y* zJ2@+9X6-j)GY$P&e*ff%oNvISXpyL#WpZU#cU5-ErumpqpG-%`qLBZdjq*;o3+JXI zp`!t7g)jrA`ki>4Wjf60!Zl#53_3tD+Fa2{-S z;ZkhLWg&|KW{F?po`53!!@cXmY8_^FG!~h%t!M`BjTGjss5&c+V zAQixj|C9Qk5cBWUe+2vsfc_=m9{>vbmw^9^c&u(zPhTg}BW(r{-E%LdBC6?5f-LAt z*YXmgyqOik6Vqd&Y^?l_{0)kul0G3@*3?W26SwmPw?(r!Fyu<|vN-hSySP#QPOA3sN?&Koebh(L6j=~63-^687|Y&!#;Js^Wn~-+r9uE#^GAU+eVn1S z13R9(G&xe_93uEaI?;`JRCK7pc0QF{{ZZ!S^JhVX9F;fpCy=3CqP1S%j~M{X?|CpP z(uRn#@yvoi1h=oh5kTnyYBC&kfdu9i15+1r@L^jNUx>gnuh_1=y253VQSjE2P@v_J@@1YxSJGV?D^Z2YEe{x-veaw!P z9%3PZSeLT+eQQ}Uq|b}4*pE4E>U>5fTjn)Vm$E*(SeL_s>qQokw@`%@vN|jeLNjM4 ziSd}}Q+YR@@FlG|?CYPdU_h2A71qb`c*DiXh#@i)QXO1!tbRwQT8SaEYvP97t0eRk zidneiMHlz?v}bG}Tr_O{$;b?tXu1A=G^J8jBLl|#Pf*tUfg~hw+(;(mtEF-)KGge5@9IV(F6- zzivAnV5Q|j75i~>DB>UI<)yIsyV6D`6HCaQp9pC5eq^lJhhly#dX;Ip+Dbgj%r4fhtdz#R} zc;D-7!9>h%1tnq1^CX z*A21{qB!<7IVfX)PqU}!B?v~IWZb>5|86v-NyLt$;V3?p!eg@tu~rY8ydb?D*2C2H zweLcvivrNBzqJsFdU#s|8opVIk#Dh{f3q&@7)N!zquE#cD?{;R-}3H-N_jgHZ(;_} vc7bH@gbomg1z5l7=DYhp4NmkwuJ9Ha)E=(ahX5Z{0D&}Abd}4Lo`w7u_5`Ik literal 24701 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í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 F`Y)lZx!M2#

      A7OMkXwf;ISZ?~X}S*8DcbIQ0` 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 J%Q~loCICSY37G%@ diff --git a/TileFormats/Composite/README.md b/TileFormats/Composite/README.md index befb3169a..ad6a7fb49 100644 --- a/TileFormats/Composite/README.md +++ b/TileFormats/Composite/README.md @@ -79,4 +79,3 @@ An explicit file extension is optional. Valid implementations may ignore it and * Code for reading the header can be found in [`Composite3DTileContent.js`](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Composite3DTileContent.js) in the Cesium implementation of 3D Tiles. - diff --git a/TileFormats/Instanced3DModel/figures/header-layout.png b/TileFormats/Instanced3DModel/figures/header-layout.png index 4aee532a84c0ea03229e536887506a0504a2eebc..26b73f748ba4c72cd157e51b1ca239996620286e 100644 GIT binary patch literal 11794 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 Iv%D9^|Jcy-9AvSb^QE=`@*R^f{M@m6Nh_ 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 diff --git a/TileFormats/PointCloud/figures/layout.png b/TileFormats/PointCloud/figures/layout.png index a8a12b52461f6e18d64b367480374ce48b67e5e2..2768977a535671ba15c3ed09c1c8ea4470f08fc7 100644 GIT binary patch literal 11328 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 F{|gvey%7Ka literal 19362 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