Presentation

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