Indexed 3D Scene Layers (I3S) adopted as the first OGC Community Standard in the summer of 2017, is a format for streaming, distributing and packaging large volumes of 3D geospatial content across enterprise systems. These systems can include server components, cloud hosted components, and a variety of client software from desktop to web to mobile applications. The standard has been evolving ever since its first introduction, the latest of which is now adopted as I3S Community Standard Version 1.1, by OGC in Jan 2020.
I3S is supported in various ArcGIS family of applications including ArcGIS API for JavaScript as well as in open frameworks such as loaders.gl/deck.gl.
The I3S format is declarative and extendable and can be used to represent different types of 3D data.
This topic is a request to support two of the popular I3S layer types, 3D Object and Integrated Mesh in CesiumJS framework.
A 3D object scene layer is used to visualize 3D objects. 3D object scene layers are often created from GIS data with attributes and explicitly modeled in 3D. These attributes allow definition queries to specify symbology and other properties in lieu of setting properties for each object individually, allowing attribute driven dynamic styling. A 3D object scene layer can efficiently create and share just a few buildings or an entire city.
Integrated Mesh scene layers are generally created for citywide 3D mapping. An Integrated Mesh layer type is typically used to represent and visualize geographic data captured as ‘3D Image’ representing the landscape in a seamless, highly scalable, textured mesh. Such ‘3D Image’ can integrate within its content a multitude of landscape elements including terrain surface, ground imagery, vegetation, man-made objects and structures, and water surfaces. This type of data is typically produced by automated extraction solutions operating on input data from satellite, aerial and/or drone imagery.
Support for 3D Object and IntegratedMesh Scene Layers in CeisumJS should have at minimum capability for reading and viewing I3S, leveraging CesiumJS framework and can be modeled along the ArcGISTiledElevationTerrainProvider that was contributed by Esri in collaboration with AGI. Such a module (I3SDatasrouce) and the accompanying sandbox example could help further advance I3S adoption in open source community solutions, as OGC is now once again in the review process to adopt the latest community version of I3S (I3S 1.7).
Providing consumption of I3S layers in CesiumJS will bring to the Cesium community further access to the rich data sets available in the geospatial community. This module at a minimum will bring to CesiumJS the following features:
-
Ability to read current I3S GitHub community spec version, 1.7 (proposed OGC I3S 1.2 equivalent) for Integrated Mesh and 3D Object scene layers.
-
Allow the CesiumJS client app to efficiently load and consume the above-mentioned layer types, via their RESTful APIs.
-
Should be able to connect and display I3S content served in WGS84 global coordinate system (I3S content based on non WGS84 (wkt id: 4326) CRS will not be supported).
-
Take advantage of paged node access pattern introduced at I3S GitHub community version 1.7 – which significantly reduces the client-server traffic by bundling individual node metadata resources into compact pages of nodes.
-
Efficiently trans-encode node (tile) Lod selection metrics/criteria to its equivalent geometric error as well as consumption of the bounding volume hierarchy (BVH) now standardized on Oriented Bounding Boxes (OBBs)
-
Pop-up to display attribute of selected features for 3D Object scene layers
-
Support the compact binary geometry layout payloads of 3D Object and IntegratedMesh layers that are now using Draco encoding.
-
Should be able to support I3S advanced material definition property that brings support for physically based materials.