Scene Services and the Open Indexed 3D Scene Format Thorsten Reitz (Esri R&D Center Zurich) Chris Andrews (Esri Inc.) Agenda An in-depth view at the Scene Services REST API and the Indexed 3D Scene Format 1. Web 3D as part of the ArcGIS Platform 2. Indexed 3D Scenes (i3s) & Scene Services REST API 3. i3s Persistence options 4. The i3s developer’s toolkit 5. Partner implementations Web 3D A new Capability across the ArcGIS platform A New Way of Working in 3D Desktop Web Device 3D across the platform Web Scenes The 3D Component of the ArcGIS Platform End Users ArcGIS Online/On Premise Portal Web Scene Elevation Service Scene Service Pro Web Scene Layers Web Scene Viewer Explorer Symbols Developers Map/Feature Service Camera, Slides, Tours Runtime SDK JavaScript API How to create Scene Services? ArcGIS PRO ArcGIS Server *.obj, CityGML ArcGIS Online/Portal ArcGIS Server Other Formats 3rd Party Software ArcGIS Server ArcGIS Online/On Premise Portal Geodatabase Detailed Publishing Workflow: ArcGIS Pro + Server Feature Layer Scene Layer Publish Feature Service Scene Service Geodatabase CouchDB/FS/Package Publishing from ArcGIS Pro Scene Services in Web Scenes Demonstration Publishing & Using Scene Services Indexed 3D Scenes A new open format for multiscale geospatial 3D data Requirements for a 3D GI visualization format io ... m erat ing «e nu er eOrd Fe atur la ye r Store fo ayerIn eneL 3dSc r :In te ge cter + id on :Cha ra er rsi 0..* + ve e :Cha ra ct m cter + na :Cha ra ha ra cter s ia n :C cter + al scrip tio xt :Cha ra [1 ..3 ] de Te + ili tie s pyrig ht s :Cap ab co + ie pa bi lit + ca 1 1. Web friendly: JSON + Typed Arrays in gS ch +i nd ex 1 2. Mobile friendly: Works good with varying bandwidth 3. Extensible: Support different types of content id in en ce prom cter :Cha ra :URI + id cter otNo de cter + ro on :Cha ra :Cha ra rsi Type :URI + ve ry et re om S +sto + ge ra ph icCR RI og RS :U ] + ge dC te [4 ec 1 r oj + pr nt :Num be cter te :Cha ra ra cter + ex ncod in g g :Cha dE cter + ni ncod in ng :Cha ra di atureE er + fe ryEn co ha ra ct et :C g om ] + ge ncod in pe [0 ..1 ] g [1 ..3 eE ur rd erin xt Ty tu re O + te e :L od g :Fea dT yp + lo rd erin atureO + fe fo ayerIn eneL 3dSc clas s CimDr Web3D +d ra wi ng In fo gInfo aw in 0..* +fie ld em e io ... m erat «e nu s bilitie Ca pa vi ew qu ery ed it io ... m erat «e nu e LodTyp yram id M eshP re e eT Fe atur 1 Inde xS e chem er ha ra ct m e :C le an + na e :B oo :In te ge r r [2 ] cl usiv na lity + in :In te ge r [2 ] m en sio ardi na lity di + :In te ge al ity ild re nC + ch hb orCa rd in ig ne + s Field er ha ra ct m e :C ra cter + na ha er pe :C + ty ha ra ct ia s :C al + rce dResou +sha re 4. 5. Declarative: Efficient: Node Doc um ndex NodeI clas s +p aren ce eferen NodeR Reduce required implicit knowledge +fea tu ent :lo ng + id l :in t ve + le :u ui d rra y) rsio n [4 ] (A + ve ou bl e ta m p bs :d m + :ti m es mp ta ea te d cr es + :ti m 6] bl e [1 pi re s + ex fo rm :d ou ns + tra tNod e 0..1 re n :lo ng +chi ld + id :u ui d rsio n r y) + ve 0..* ef :cha bl e [4 ] (A rra + hr ou bo rs :d t ei bs :in +n gh + m ou nt atureC + fe 0..* Provide Level of Detail Support 7. Protected: Ensure that content is protected from theft Open: 0..* Lod edRe Shar rra y) :lo ng rra y) [4 ] (A + id ou bl e ng [0 ..*] (A bs :d + m re n :lo ] dChi ld rt [0 ..1 + lo ho :s nk ..1 ] + ra ng [0 ot :lo + ro s source bo +sym Full Specification publicly accessible rDef +sha de +textu +m at efin iti eria lD etric + m V ax + m gV + av in + m e Fe atur er ia m et atureD eter ed Fe re m ov Fa ce Dia m e ed re m ov erge Dista nc e iv xM Rel at ve rte S pa ce ute scre en pa ce A bsol S scre en s source edRe Shar clas s 8. 1..* a re Dat 0..* io n» m erat «e nu cType M etri Scalable: m et +textu 1 Use spatial indexing for quick delivery 6. +g eo 1 + href a + la y a + fe 1..* + m a ryDat re Dat .* on s 0. ia l M ater ha r ] m e :c r [1 ..* + na ha r lu eP ai pe :c + ty :K eyVa ra m s + pa iti on re De fin s in iti on s er Shad + na m e :cha r 0..* Te xtur e :cha r co di ng r [2 ] + en ha = fa lse ap :c + wr oo le an b la s :b :cha r = rg + at ne ls 0 an r = uv + ch t :cha Se + uv +g eo .* es 1. e Imag :lo ng ..1 ] + id oa t [0 t its :fl e :in + siz lIn World Un xe + pi :cha r ef t + hr Offset :in te + by th :in t ng + le e ha r :d ou bl pe :c atio n + ty nsfo rm + tra 0..* Re gion :in t io n + id m ag eReg bi + su s 1..* metry :Geo eData: m etrie Fe atur ns +reg io +i m ag ls 0..* l Symbo 0..* [4 ] :fl oa t Content Profiles Support different geometry types through subsetting i3s • Individual Features - Points - Lines - Polygons - Multipatches • Integrated Meshes • Analytics • Pointclouds • Symbols The Key to Scalability: Indexing • • 3 Adapt Index type to data - R-Tree - Quadtree, Octtree - Standard Tiling Schemes Load-Balanced - 9 3-0 1 2 Near-Constant Data Volume per Node 3-1 3-2 8 7 3-1-0 3 3 Node ID 3-1-1 4 5 5 Representation Object ID 6 Legend Level of Detail • Feature Switching LoD - Sparse Tree with Feature-based Replacement - Use for: - Capacity-driven texture & geometry reduction DE 1MB AB 2MB Authored LoD (CityGML) 2 • Node Switching LoD - Full Representation Pyramid with Node-based Replacement Use for: - Homogeneous contextual data (Integrated Meshes) A 100KB 2-1 B 4MB C 50KB D 50KB 2-2 E 2MB Scene Services Resources & REST API 1 Node Index Document 1 Feature Data • Service - Layer 1..* Geometry Files 0..* Texture Files 1 Shared Resource /SceneServer SceneServiceInfo.json /SceneServer/layers 3dSceneLayer.json - Symbols /SceneServer/layers/0/symbols/0 FeatureData.json - Node - Features - Geometry - Texture - Shared Resource …layers/0/nodes/0 …layers/0/nodes/0/features/0 …layers/0/nodes/0/geometry/0 …layers/0/nodes/0/textures/1_2 …layers/0/nodes/0/shared NodeIndexDocument.json FeatureData.json Geometry Typed Array Image with Texture LoD sharedResource.json „Streaming“-friendly resource structure Node 3-3-4-1, 10 MB capacity Contains a subset (1..*) of all features belonging to the node. Bundle n , <1MB Bundle 0, <1MB Bundle 1 , <1MB Feature Data Doc. 0 Feature Data Doc. 1 Feature Data Doc. n EXAMPLE Size: 40KB Geometry Data TypedArray 0 Geometry Data TypedArray 1 Geometry Data TypedArray n EXAMPLE Size: 140KB Shared Resources Set of 1..* Textures for LOD 0 (Full resolution). Texture Set 0_0 Texture Set 1_0 Texture Set n_0 EXAMPLE Size: 250KB Texture LOD 1 (Half resolution). Texture Set 0_1 Texture Set 1_1 Texture Set n_1 EXAMPLE Size: 70KB Declarative: Geometry buffer metadata Header Body vertexCount vertexAttributes faceAttributes featureAttributes faceCount position position id featureCount uv0 uv0 faceRange normal normal color i3s persistence options Storing and serving i3s resources File System Folder Layout Direct mapping of the REST API • All resources reside in the file system as individual files. • These files are organised in folders in the following schema: /3dSceneLayer.json /nodes/root/3dNodeIndexDocument.json /nodes/root/features/0.json ...n.json /nodes/root/geometries/0.bin ...n.bin /nodes/root/shared/SharedResource.json /nodes/root/textures/0_0.bin ...n_m.bin CouchDB – JSON Object Storage Apply liberally with IndexedDB or other KV-Stores Documents Attachments Layer Textures (base64) Node Geometries (base64) Features i3p – the i3s package format Best for single-file exchange and portability of i3s stores Archive.i3p metadata.json 3dScenelayer.json Zip64 container /nodes/ /nodes/root/ 3dNodeIndexDocument.json features/* geometries/* textures/* shared/* /nodes/1-4-2-0/ 3dNodeIndexDocument.json features/* geometries/* textures/* shared/* gzip‘ed resources The i3s toolkit Basic tools to build i3s-based services and apps Scene Service & i3s Specifications License: Creative Commons – Attribution – No Derivatives 3.0 Profiles (8x) Scene Service REST API Specification Indexed 3D Scene Format Specification Validation Rules Documentation Examples I3s Rulesets Formal Definition of the specification • Modularity • Structure - Type - Pattern - Cardinality - Nullable • Domain Restrictions • Dependencies - „Apply a rule only if this set of conditions is met“ Validators Structure + content validation for JSON documents • Standalone web application • Node.js application • Embedded into grunt build process • Single Resource Validator - • Schema validation of a single file Store Validator - Consistency validation of a full or partial store Node.js Utilities Helpful tools to create the specification and work with i3s content • Working with services: harvest.js: Download a published Scene Service from its‘ REST API and store on disc - packi3p.js: Create an i3p file form a cache on disc - - • unpacki3p.js: Unpack an i3p file to disc Working with i3s rulesets: - schemagen.js: Generate a ruleset from an example multischemamerge.js: Perform an additive ruleset merge on a folder of ruleset files - difftool.js: Find differences between two rulesets - - docgen.js: HTML documentation from ruleset Partner Implementations How to become part of ArcGIS Web Scenes Vision An Open Specification for the Geospatial Community • „The“ visualisation format for any kind of Geospatial 3D Data - Scalable - Web friendly - Declarative - Full feature data - Visualisation friendly • i3s satisfies a basic infrastructure need of the GIS community • Most valuable if implemented everywhere • Lower possible hurdles to implementation Roadmap for working with Partners Current & planned process • • • Phase 1 - Rapid spec evolution with small set of partners - Performance Optimization - Clean Up Phase 2 - Slower spec evolution with full public participation - New Format Features Collaboration through Github - „caniuse“ of features of each known implementation i3s spec Webscene ArcGIS viewer Pro Runtime Get Involved with Scene Services! Implement Encoders, Services, Clients • Specification License: Creative Commons-Attribution-No Derivatives 3.0 • Toolkit License: Apache • Specification and Toolkit available upon request for early adopters - Ask us at - [email protected] - [email protected] Thank you… Any Questions? Ideas? Comments? Esri.com/RateMyDevSummitSession Scene
© Copyright 2026 Paperzz