Skip to content

Commit 6c4bde9

Browse files
authored
Merge pull request #360 from AnalyticalGraphicsInc/1.0-revisions
1.0 revisions
2 parents f27d3aa + 322769a commit 6c4bde9

File tree

10 files changed

+118
-124
lines changed

10 files changed

+118
-124
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ To add any schema or markdown updates to the 3D Tiles Specification PDF, take th
88

99
1. Generate a `.docx` file for each section.
1010
* Run [pandoc](https://pandoc.org/demos.html) to generate a formatted `.docx` file from markdown. Run the following command in the directory that contains the input file to preserve images.
11-
* `pandoc ./README.md -o README.docx -f github_markdown`
11+
* `pandoc ./README.md -o README.docx -f markdown_github`
1212
* Generate a `.docx` for each of the following files:
1313
* `specification/README.md`
1414
* `specification/TileFormats/BatchTable/README.md`

Q-and-A.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 3D Tiles Q&A
22

3-
## Contents
3+
## Contents
44

55
* [General Q&A](#general-qa)
66
* [Is 3D Tiles specific to Cesium?](#is-3d-tiles-specific-to-cesium)
@@ -93,7 +93,7 @@ See [#15](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/15).
9393

9494
#### How are cracks between tiles with vector data handled?
9595

96-
Unlike 2D, in 3D, we expect adjacent tiles to be from different LODs so, for example, in the distance, lower resolution tiles are used. Adjacent tiles from different LODs can lead to an artifact called _cracking_ where there are gaps between tiles. For terrain, this is generally handled by dropping _skirts_ slightly angled outward around each tile to fill the gap. For 3D buildings, this is handled by extending the tile boundary to fully include buildings on the edge; [see Quadtrees](./specification/README.md#Quadtrees). For vector data, this is an open research problem that we need to solve. This could involve boundary-aware simplification or runtime stitching.
96+
Unlike 2D, in 3D, we expect adjacent tiles to be from different LODs so, for example, in the distance, lower resolution tiles are used. Adjacent tiles from different LODs can lead to an artifact called _cracking_ where there are gaps between tiles. For terrain, this is generally handled by dropping _skirts_ slightly angled outward around each tile to fill the gap. For 3D buildings, this is handled by extending the tile boundary to fully include buildings on the edge; [see Quadtrees](./specification/README.md#Quadtrees). For vector data, this is an open research problem that we need to solve. This could involve boundary-aware simplification or runtime stitching.
9797

9898
#### When using replacement refinement, can multiple children be combined into one request?
9999

@@ -113,4 +113,4 @@ See [#11](https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/11).
113113

114114
#### What compressed texture formats does 3D Tiles use?
115115

116-
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.
116+
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.

specification/README.md

Lines changed: 96 additions & 88 deletions
Large diffs are not rendered by default.

specification/Styling/README.md

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
* [String conversion](#string-conversions)
2424
* [Constants](#constants)
2525
* [Variables](#variables)
26-
* [Built-in variables](#built-in-variables)
2726
* [Built-in functions](#built-in-functions)
2827
* [Notes](#notes)
2928
* [Point Cloud](#point-cloud)
@@ -34,6 +33,8 @@
3433

3534
3D Tiles styles provide concise declarative styling of tileset features. A style defines expressions to evaluate the display of a feature, for example `color` (RGB and translucency) and `show` properties, often based on the feature's properties stored in the tile's [Batch Table](../TileFormats/BatchTable/README.md).
3635

36+
A style may be applied to a tile that doesn't contain features, in which case the tile is treated as an implicit single feature without properties.
37+
3738
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.
3839

3940
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.
@@ -633,22 +634,6 @@ ${temperatures.values[0]} === 70
633634
${temperatures['values'][0]} === 70 // Same as (temperatures[values])[0] and temperatures.values[0]
634635
```
635636

636-
### Built-in variables
637-
638-
The prefix `tiles3d_` is reserved for built-in variables. The following built-in variables are supported by the styling language:
639-
640-
* [`tiles3d_tileset_time`](#tiles3d_tileset_time)
641-
642-
#### tiles3d_tileset_time
643-
644-
Gets the time, in milliseconds, since the tileset was first loaded. This is useful for creating dynamic styles that change with time.
645-
646-
```json
647-
{
648-
"color" : "color() * abs(cos(${Temperature} + ${tiles3d_tileset_time}))"
649-
}
650-
```
651-
652637
### Built-in functions
653638

654639
The following built-in functions are supported by the styling language:
@@ -1260,13 +1245,13 @@ For example:
12601245
> * Evaluation of `isNan` and `isFinite` (GLSL 2.0+ supports `isnan` and `isinf` for these functions respectively)
12611246
> * The types `null` and `undefined`
12621247
> * Strings, including accessing object properties (`color()['r']`) and batch table values
1263-
> * Regular expressions
1248+
> * Regular expressions
12641249
> * Arrays of lengths other than 2, 3, or 4
12651250
> * Mismatched type comparisons (e.g. `1.0 === false`)
12661251
> * Array index out of bounds
12671252
12681253
## File extension and MIME type
1269-
1254+
12701255
Tileset styles use the `.json` extension and the `application/json` mime type.
12711256

12721257
## Property reference

specification/TileFormats/BatchTable/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
## Overview
1515

16-
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.
16+
A _Batch Table_ is a component of a tile's binary body and contains per-feature application-specific properties in a tile. These properties are queried at runtime for declarative styling and any 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.
1717

1818
A Batch Table is used by the following tile formats:
1919
* [Batched 3D Model](../Batched3DModel/README.md) (b3dm)
@@ -49,7 +49,7 @@ Batch Table values can be represented in the JSON header in two different ways:
4949
* `componentType` is the datatype of components in the attribute. Allowed values are `"BYTE"`, `"UNSIGNED_BYTE"`, `"SHORT"`, `"UNSIGNED_SHORT"`, `"INT"`, `"UNSIGNED_INT"`, `"FLOAT"`, and `"DOUBLE"`.
5050
* `type` specifies if the property is a scalar or vector. Allowed values are `"SCALAR"`, `"VEC2"`, `"VEC3"`, and `"VEC4"`.
5151

52-
The Batch Table JSON is a `UTF-8` string containing JSON.
52+
The Batch Table JSON is a `UTF-8` string containing JSON.
5353

5454
> **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`.
5555
@@ -222,15 +222,15 @@ An object defining the reference to a section of the binary body of the batch ta
222222

223223
Additional properties are allowed.
224224

225-
#### BinaryBodyReference.byteOffset :white_check_mark:
225+
#### BinaryBodyReference.byteOffset :white_check_mark:
226226

227227
The offset into the buffer in bytes.
228228

229229
* **Type**: `number`
230230
* **Required**: Yes
231231
* **Minimum**: ` >= 0`
232232

233-
#### BinaryBodyReference.componentType :white_check_mark:
233+
#### BinaryBodyReference.componentType :white_check_mark:
234234

235235
The datatype of components in the property.
236236

@@ -246,7 +246,7 @@ The datatype of components in the property.
246246
* `"FLOAT"`
247247
* `"DOUBLE"`
248248

249-
#### BinaryBodyReference.type :white_check_mark:
249+
#### BinaryBodyReference.type :white_check_mark:
250250

251251
Specifies if the property is a scalar or vector.
252252

specification/TileFormats/Batched3DModel/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ These semantics define global properties for all features.
7878

7979
## Batch Table
8080

81-
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.
81+
The _Batch Table_ contains per-model application-specific properties, 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 a 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.
8282

8383
See the [Batch Table](../BatchTable/README.md) reference for more information.
8484

8585
## Binary glTF
8686

87-
Batched 3D Model uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) to embed model data.
87+
Batched 3D Model embeds [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) containing model geometry and texture information.
8888

8989
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.
9090

@@ -136,7 +136,7 @@ When a Batch Table is present or the `BATCH_LENGTH` property is greater than `0`
136136

137137
### Coordinate system
138138

139-
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. See [coordinate reference system](../../README.md#gltf) for more details.
139+
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. See [glTF transforms](../../README.md#gltf-transforms) for more details.
140140

141141
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 the coordinate system transform and glTF node hierarchy transforms have been applied.
142142

specification/TileFormats/FeatureTable/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
## Overview
1414

15-
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.
15+
A _Feature Table_ is a component of a tile's binary body and describes position and appearance properties required to render each feature in a tile. The [Batch Table](../BatchTable/README.md), on the other hand, contains per-feature application-specific properties not necessarily used for rendering.
1616

1717
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.
1818

@@ -128,7 +128,7 @@ An object defining the reference to a section of the binary body of the features
128128

129129
Additional properties are allowed.
130130

131-
#### BinaryBodyReference.byteOffset :white_check_mark:
131+
#### BinaryBodyReference.byteOffset :white_check_mark:
132132

133133
The offset into the buffer in bytes.
134134

specification/TileFormats/Instanced3DModel/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ Examples using these semantics can be found in the [examples section](#examples)
118118

119119
### Instance orientation
120120

121-
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).
121+
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-transforms).
122122

123123
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.
124124
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`.
@@ -246,7 +246,7 @@ Contains metadata organized by `batchId` that can be used for declarative stylin
246246

247247
## glTF
248248

249-
Instanced 3D Model uses [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) for model data.
249+
Instanced 3D Model embeds [glTF 2.0](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0) containing model geometry and texture information.
250250

251251
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.
252252

@@ -259,7 +259,8 @@ In either case, `header.gltfByteLength` contains the length of the glTF field in
259259

260260
### Coordinate system
261261

262-
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. See [coordinate reference system](../../README.md#gltf) for more details.
262+
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. See [glTF transforms
263+
](../../README.md#gltf-transforms) for more details.
263264

264265
## File extension and MIME type
265266

specification/specification.docx

3.55 KB
Binary file not shown.

specification/specification.pdf

23.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)