Skip to content

Latest commit

 

History

History
110 lines (73 loc) · 6.02 KB

README.adoc

File metadata and controls

110 lines (73 loc) · 6.02 KB

glTF

Overview

glTF 2.0 is the primary tile format for 3D Tiles. glTF is an open specification designed for the efficient transmission and loading of 3D content. A glTF asset includes geometry and texture information for a single tile, and may be extended to include metadata, model instancing, and compression. glTF may be used for a wide variety of 3D content including:

  • Heterogeneous 3D models. E.g. textured terrain and surfaces, 3D building exteriors and interiors, massive models

  • Massive point clouds

  • 3D model instances. E.g. trees, windmills, bolts

Use Cases

3D Models

glTF provides flexibility for a wide range of mesh and material configurations, and is well suited for photogrammetry as well as stylized 3D models.

Table 1. Different types of models based on glTF
Photogrammetry 3D Buildings

glTF photogrammetry
San Francisco photogrammetry model from Aerometrex in O3DE

glTF 3d buildings
3D buildings from swisstopo in CesiumJS

Point Clouds

glTF supports point clouds with the 0 (POINTS) primitive mode. Points can have positions, colors, normals, and custom attributes as specified in the primitive.attributes field.

point-cloud
Figure 1. 40 billion point cloud from the City of Montreal with ASPRS classification codes (CC-BY 4.0)

When using the EXT_mesh_features extension points can be assigned feature IDs and these features can have associated metadata.

Point Cloud Features
Figure 2. A point cloud with two property tables, one storing metadata for groups of points and the other storing metadata for individual points

Instancing

glTF can leverage GPU instancing with the EXT_mesh_gpu_instancing extension. Instances can be given unique translations, rotations, scales, and other per-instance attributes.

instancing
Figure 3. Instanced tree models in Philadelphia from OpenTreeMap

When using the EXT_instance_features extension instances can be assigned feature IDs and these features can have associated metadata.

Model Instance Features
Figure 4. Instanced tree models where trees are assigned to groups with a per-instance feature ID attribute. One feature table stores per-group metadata and the other stores per-tree metadata

Feature Identification

EXT_mesh_features provides a means of assigning identifiers to geometry and subcomponents of geometry within a glTF 2.0 asset. Feature IDs can be assigned to vertices or texels. EXT_instance_features allows feature IDs to be assigned to individual instances.

Per-texel features
Figure 5. Street level photogrammetry of San Francisco Ferry Building from Aerometrex. Left: per-texel colors showing the feature classification, e.g., roof, sky roof, windows, window frames, and AC units . Right: classification is used to determine rendering material properties, e.g., make the windows translucent

Metadata

EXT_structural_metadata stores metadata at per-vertex, per-texel, and per-feature granularity and uses the type system defined in the 3D Metadata Specification. This metadata can be used for visualization and analysis.

metadata
Figure 6. An example of metadata associated with glTF models

Compression

glTF has several extensions for geometry and texture compression. These extensions can help reduce file sizes and GPU memory usage.

Texture Compression

File Extensions and Media Types

An explicit file extension is optional. Valid implementations may ignore it and identify a content’s format through other means, such as the magic field in the binary glTF header or the presence of an asset field in JSON glTF.