About the I3S Spec
A new version of the Indexed 3D Scene Layer (I3S) specification for Scene Layers was released this week on the Esri GitHub. I3S specification version 1.7 is supported by ArcGIS Pro 2.4 and ArcGIS Online. More support of I3S 1.7 across the ArcGIS platform will roll out in upcoming releases.
In specification version 1.6, released March 2019, we reorganized the documentation to be by profile type. This allows us to upgrade each profile individually, so you can get the benefits of the updated versions without having to wait for all profiles to be ready. So, if you’re an Integrated Mesh content creator, you don’t have to wait for the Building Scene Layer to catch up to reap the benefits of 1.7! As of July 2019, specification version 1.7 supports 3D Objects and Integrated Mesh profiles. Specification version 1.7 does not have any breaking changes and is therefore backwards compatible with 1.6. More profiles will be upgraded to support version 1.7 in upcoming releases.
Integrated Mesh Scene Layer
First thing’s first – we now provide a tool for upgrading existing Scene Layer Packages (SLPK) to specification version 1.7. This standalone executable is available on the Esri GitHub. It validates existing SLPK, upgrades to 1.7, can compress textures when upgrading, and more. Another great feature is the “-i” option, which that provides basic SLPK info. This allows you to determine your scene layer profile type and version without having to decompress the package. Check out the converter on GitHub!
Now for the details.
The first major improvement is node paging. Previously, clients received one node per request. Because of this, to load the full layer, clients had to request all the nodes. Now, the nodes are grouped into pages. Clients can determine which node pages they need, and request only the necessary pages. This significantly reduces server-client traffic and improves performance. For more details, check out the node paging section in the specification format document.
Because of the addition of node pages, the shared resources have been deprecated. The texture and material information are available in the layer file. However, since 1.7 is backwards compatible with 1.6, the shared resources are still included in the specification, even though they aren’t used for 1.7 components.
The next great update is support for Draco geometry compression. Draco is an open source library for compressing 3D geometries. This allows us to create compact nodes, which in turn provides a smaller payload, increasing performance even more!
A side note: the most recent update to the specification includes 1.7, and expanded notes and details for specification version 1.6 and 2.0. One section I want to highlight are the API overview in the ReadMe for each profile. Check out the integrated mesh and 3D object overviews.
If you have any questions or comments about the specification, please feel free to open an issue on the I3S specification GitHub.