REVISION_HISTORY.md
June 5, 2023 ยท View on GitHub
This is the revision history for the extensions that have been developed as part of the "3D Tiles Next" effort, leading to the final release of 3D Tiles 1.1, and including the proposed glTF extensions.
November 2020
- Added 3D Metadata Specification (draft version
0.0.0) - Added
3DTILES_metadataextension (draft version0.0.0) - Added
3DTILES_content_gltfextension (draft version0.0.0) - Added
EXT_feature_metadataglTF extension (draft version0.0.0)
February 2021
- Added 3D Metadata Semantic Reference (draft version
1.0.0) - Added
3DTILES_implicit_tilingextension (draft version0.0.0) - Added
3DTILES_multiple_contentsextension (draft version0.0.0) - Updated 3D Metadata Specification
- Updated to draft version
1.0.0 - The specification has been revised to focus on the core concepts of schemas (including classes, enums, and properties) and formats for encoding metadata. It is now language independent. The JSON schema has been removed.
- Added schemas which contain classes and enums
- Updated to draft version
- Updated schema definition
- Removed
FLOAT16type - Removed
BLOBtype andblobByteLengthproperty - Removed
stringByteLengthproperty - Added
semanticproperty - Added
ENUMto the list of supported types and component types and addedenumTypeto refer to the chosen enum minandmaxare now numbers instead of single-element arrays for non-ARRAYproperties
- Removed
- Updated property table definition
- Removed
offsetBufferViews, replaced witharrayOffsetBufferViewandstringOffsetBufferView - Removed
nameanddescription - Removed
elementCountand redefinedcountto mean the element count
- Removed
- Updated
3DTILES_metadataextension- Updated to draft version
1.0.0 - Updated schema definition. See notes above.
- Updated to draft version
- Updated
EXT_feature_metadataextension- Updated to draft version
1.0.0 - Updated schema definition. See notes above.
- Updated property table definition. See notes above.
- Removed
classesdictionary. Classes and enums are now contained in theschemaobject. - Added
schemaandschemaUri. The schema object contains class and enum definitions.schemaUrirefers to an external schema JSON file.schemaandschemaUriare mutually exclusive. - Added optional
statisticsobject which provides aggregate information about select properties within the model - Added
EXT_feature_metadataextension to theEXT_mesh_gpu_instancingextension for assigning metadata to instances - Removed
vertexStrideandinstanceStride - Added
divisorfor incrementing feature IDs at fixed intervals, e.g. per-triangle or per-quad
- Updated to draft version
October 2021
- Added
3DTILES_bounding_volume_s2extension (draft version0.0.0) - Updated 3D Metadata Specification
- Updated to draft version
2.0.0 - Removed raster encoding. Storing metadata in texture channels remains a valid implementation of this specification, but is not within the scope of this document.
- Removed table layout from the JSON encoding; each entity is encoded as a single JSON object.
- Updated to draft version
- Updated 3D Metadata Semantic Reference
- Updated to draft version
2.0.0 - Reorganize document to distinguish general and 3D Tiles-specific semantics
- Added clarification for units of distance and angles
- Added
DESCRIPTIONsemantic - Changed
TILE_HORIZON_OCCLUSION_POINTandCONTENT_HORIZON_OCCLUSION_POINTtype fromARRAYtoVEC3
- Updated to draft version
- Updated schema definition
- Removed
optionaland addedrequired. Properties are now assumed to be optional unlessrequiredis true. - Added
noDatafor specifying a sentinel value that indicates missing data - Removed
default NaNandInfinityare now explicitly disallowed as property values- Added vector and matrix types:
VEC2,VEC3,VEC4,MAT2,MAT3,MAT4 - Refactored
typeandcomponentTypeto avoid overlap. Properties that store a single value now have atypeofSINGLEand acomponentTypeof the desired type (e.g.type: "SINGLE", componentType: "UINT8") - Class IDs, enum IDs, and property IDs must now contain only alphanumeric and underscore characters
- Add
nameanddescriptionto schema, class, and enum definitions - Add
idto schema definitions
- Removed
- Updated property table definition
- Split
offsetTypeintoarrayOffsetTypeandstringOffsetType - Relaxed buffer view alignment to component size, rather than strict 8-byte boundaries
- Split
- Updated
3DTILES_metadataextension- Updated to draft version
2.0.0 - Updated schema definition. See notes above.
- Group IDs must now contain only alphanumeric and underscore characters
- Removed incomplete styling section
- Recommend
_*prefix for application-specific summary statistics - Removed
nameanddescriptionfrom entity schemas. Entities should use properties with equivalent semantics instead. - The
groupsthat are defined in a tileset are now given as an array. Each group has a unique identifier.
- Updated to draft version
- Updated
3DTILES_implicit_tilingextension- Updated to draft version
1.0.0 - Updated property table definition. See notes above.
- Updated to draft version
- Renamed
EXT_feature_metadatatoEXT_mesh_features, including the following updates:- Updated to draft version
2.0.0 - Updated schema definition. See notes above.
- Updated property table definition. See notes above.
- Renamed
constanttooffset, anddivisortorepeat - Removed
statisticsproperty, to be considered as a future extension - Renamed
featureTabletopropertyTableandfeatureTexturetopropertyTexture - Removed
featureIdAttributesandfeatureIdTextures, replaced withfeatureIds - Primitives and nodes may now have feature IDs without associated property tables
- Removed string ID references to property tables and textures, replaced with integer IDs
- Feature ID values outside the range
[0, count - 1]now indicate "no associated feature" - Byte offsets for buffer views in a GLB-stored BIN chunk are no longer different from the core glTF specification
- Renamed
_FEATURE_ID_#toFEATURE_ID_# - Clarified that nodes with GPU instancing cannot reference property textures
- For GPU instance metadata, the
EXT_mesh_featuresextension is now scoped to thenodeextensions instead of nesting inside theEXT_mesh_gpu_instancingextension. - Refactored the property texture schema so it is now a glTF
textureInfoobject. All property values must be packed into a single texture. - Property textures are now assumed to be in linear space, and must use nearest or linear filtering
- Updated to draft version
February 2022
- Updated 3D Metadata Specification
- Updated to draft version
3.0.0 - Updated schema definition. See notes below.
- Updated to draft version
- Updated 3D Metadata Semantic Reference
- Updated to draft version
3.0.0 CONTENT_*semantics should now be assigned to content metadata properties instead of tile metadata properties- Added
ATTRIBUTION_IDSandATTRIBUTION_STRINGSsemantics for providing data attribution at multiple levels of granularity - Added
TILESET_FEATURE_ID_LABELSsemantic to list the feature ID labels present in glTF content referenced by the tileset - Added
TILESET_CRS_GEOCENTRICsemantic to describe the geocentric coordinate reference system of the tileset - Added
TILESET_CRS_COORDINATE_EPOCHsemantic to describe the coordinate epoch of vertex data - Added
TILE_BOUNDING_S2_CELLsemantic - Added
TILE_REFINEsemantic - Added
TILE_TRANSFORMsemantic - Added
CONTENT_BOUNDING_S2_CELLsemantics - Added
CONTENT_URIsemantic - Added
CONTENT_GROUP_IDsemantic
- Updated to draft version
- Updated schema definition
typeis required and must be one of the following:SCALAR,VEC2,VEC3,VEC4,MAT2,MAT3,MAT4,STRING,BOOLEAN,ENUMcomponentTypeis required for scalar, vector, and matrix types and must be one of the following:INT8,UINT8,INT16,UINT16,INT32,UINT32,INT64,UINT64,FLOAT32,FLOAT64- Arrays are now distinct from the type system
- Removed
ARRAYtype andcomponentCountproperty; replaced witharrayandcountproperties.arrayis a boolean that indicates whether the property is an array. Whencountis defined the property is a fixed-length array. Otherwise the property is a variable-length array. - Arrays of vectors and matrices are now supported
- Removed
- Added
offsetandscalewhich are used to transform property values into a different range. Useful for quantized property values. - Added back
default - Schema
idproperty is now required
- Updated property table definition
- Renamed
bufferViewtovalues - Renamed
stringOffsetBufferViewtostringOffsets - Renamed
arrayOffsetBufferViewtoarrayOffsets - Added
offsetandscalewhich are used to transform property values into a different range. When present, these override the class property'soffsetandscale. - Added
minandmaxwhich store the minimum and maximum property values.
- Renamed
- Updated
3DTILES_metadataextension- Updated to draft version
3.0.0 - Updated schema definition. See notes above.
- Added content metadata. A content may specify its class and property values with the
3DTILES_metadatacontent extension object. - Removed the implicit tiling
3DTILES_metadataextension. Tile metadata is now provided by thetileMetadatasubtree property.
- Updated to draft version
- Updated
3DTILES_implicit_tilingextension- Updated to draft version
2.0.0 - Updated property table definition. See notes above.
- Changed
maximumLeveltoavailableLevelsfor consistency withsubtreeLevels. Note thatmaximumLevelis an index whereasavailableLevelsis a length:availableLevelsis equivalent tomaximumLevel + 1. - Content availability for multiple contents is now provided by the
contentAvailabilityproperty instead of a separate3DTILES_multiple_contentsextension.contentAvailabilityis now an array of availability objects. - Added top-level
propertyTablesarray to subtree format. - Tile metadata is now provided by the
tileMetadataproperty instead of a separate3DTILES_metadataextension.tileMetadatarefers to a property table containing metadata about available tiles. - Content metadata is now provided by the
contentMetadataproperty. Each array element refers to a property table containing metadata about available content. - Subtree metadata is now provided by the
subtreeMetadataobject. Subtree metadata is encoded in JSON, similar to tileset metadata. - Renamed availability
bufferViewtobitstream - Added JSON subtree format as an alternative to the binary subtree format
- Updated to draft version
- Updated
3DTILES_multiple_contentsextension- Updated to draft version
1.0.0 - Renamed
contenttocontents - Removed the implicit tiling
3DTILES_multiple_contentsextension. Content availability for multiple contents is now provided by thecontentAvailabilitysubtree property.
- Updated to draft version
- Split the
EXT_mesh_featuresextension into three separate extensions:EXT_mesh_featuresthat only defines the concept of feature IDsEXT_structural_metadatathat allows associating the features with metadataEXT_instance_featuresthat supports GPU instance feature IDs.
- Updated
EXT_mesh_featuresextension- Updated to draft version
3.0.0 - Removed the "Implicit Feature IDs" concept. There have not been enough practical use-cases that could justify including them.
- Renamed
FEATURE_ID_#back to_FEATURE_ID_#: The underscore is required for custom attributes, according to the glTF specification, and without it, the assets do not pass validation. - The
featureIdsand thepropertyTableshad been stored as parallel arrays, and the connection between them had been established implicitly, by them appearing at the same index in their respective array. Now each feature ID set can explicitly containpropertyTable, which is the index of the property table that it refers to. - Added optional
labelproperty to identify feature ID sets across different glTF primitives and assets. - Instead of having dedicated classes for "Attribute Feature IDs" and "Texture Feature IDs", there is one common "Feature ID" class that either stores the
attributeor thetexture, respectively. - Added
featureId.nullFeatureId, which can be used as a value indicating that a certain element is not associated with a feature ID. - Added
featureId.featureCount, which is the number of distinct, non-nullfeature ID values. - Changed the
channelfor feature ID textures to be achannelsarray, so that multiple channels can be combined into one feature ID, allowing for more than 256 feature ID values in feature ID textures.
- Updated to draft version
- Added
EXT_structural_metadataextension (draft version0.0.0)- Updated property table definition. See notes above.
- Update schema definition. See notes above.
- Updated property texture definition
- Properties are no longer required to be packed into the same texture. The number of class properties is no longer constrained by the number of texture channels.
- Each item in the
propertiesdictionary is now atextureInfoobject - Added
offsetandscalewhich are used to transform property values into a different range. When present, these override the class property'soffsetandscale. - Added
minandmaxwhich store the minimum and maximum property values in the texture.
- Added
propertyAttributes, and additional metadata encoding for vertex data, in particular point clouds
- Added
EXT_instance_featuresextension (draft version0.0.0)