SlideShare una empresa de Scribd logo
1 de 42
Realtà aumentata ed
Azure, un binomio
imbattibile
Realtà aumentata ed Azure, un binomio imbattibile
Alessio Iafrate
Microsoft MVP, Freelance
developer
Founder DotNetAbruzzo
A
G
E
N
D
A
Why is mobile AR relevant?
• By 2020, 100 million consumers will
shop in AR online and in-store,
according to Gartner, Inc.
DatafromSeptember2018by
https://pages.arm.com/arvr-report.html
A
G
E
N
D
A
Why does the cloud play a role here?
• The cloud provides the secure
storage and scalable
processing for a digital copy of
the real world which can be
accessed by any user at any
time on any device for shared
AR content.
A
G
E
N
D
A
What is a Spatial Anchor?
x
y
z
A
G
E
N
D
A
What is a Spatial Anchor?
x
y
z
A
G
E
N
D
A
What is a Cloud Spatial Anchor?
x
y
z
x
y
z x
y
z
A
G
E
N
D
A
What is a Cloud Spatial Anchor?
x
y
z
x
y
z
A
G
E
N
D
A
Collaborative design reviews
Real-time IoT digital twin data on
actual equipment
Training guidance
Persistent multi-user virtual content
A
G
E
N
D
A
Wayfinding
• Empowering firstline
workers to navigate large
facilities
• Guiding the way to IoT
sensors or failing equipment
• Navigating warehouses
Consumer Scenarios
A
G
E
N
D
A
Wayfinding
• Guiding the way through a
store following a spatial
grocery list
• Empowering people who are
blind or low vision with
spatial sound anchors
• Navigating large areas like
theme parks, museums,
festivals
A
G
E
N
D
A
A
G
E
N
D
A
Persistent multi-user virtual content
• Urban murals
and digital art
• Architecture
visualization
A
G
E
N
D
A
Persistent multi-user virtual content
• Urban murals and digital art
• Architecture visualization
• Marketing and ads
• Points of interest
• Games
Azure Spatial Anchors
A
G
E
N
D
A
What is a Cloud Spatial Anchor?
x
y
z
x
y
z x
y
z
A
G
E
N
D
A
A
G
E
N
D
A
A
G
E
N
D
A
• 1) Collaboration • 2) Wayfinding • 3) UX Considerations
A
G
E
N
D
A
HoloLens iOS (ARKit) Android (ARCore)
Unity
C++/WinRT
Xamarin
Unity
Objective-C
Swift
Xamarin
Unity
Java
C++/NDK
A
G
E
N
D
A
Demo
http://bit.ly/2VlLcOA
A
G
E
N
D
A
A
G
E
N
D
A
Mobile
HoloLens
Client
Place notes in the real world
Persistent virtual content
Azure Spatial
Anchors
Azure
App Service
Azure
Cosmos DB
Sharing Service
iOS – Swift, ARKit, SceneKit
Android – Java, ARCore, SceneForm
SOLUTION ARCHITECTURE
A
G
E
N
D
A
API Key Concepts
• CloudSpatialAnchorSession
• Provides core services (Ex. Create, locate, update, delete CloudSpatialAnchor’s)
• Captures data about the environment
• CloudSpatialAnchor
• Links to the underlying AR platform Anchor (WorldAnchor on HoloLens, ARAnchor on iOS, Anchor on Android)
• Holds an ID, Expiration, and Properties (Dictionary<String, String>)
• CreateAnchorAsync(CloudSpatialAnchor anchor) { … }
• Save a CloudSpatialAnchor to Azure Spatial Anchors
• Returns the CloudSpatialAnchor with an ID assigned
• CreateWatcher(AnchorLocateCriteria criteria)
• Begins to watch for anchors that meet the specified criteria
• Returns located CloudSpatialAnchor’s through a delegate
• AnchorLocateCriteria
• Assign it an array of CloudSpatialAnchor IDs
A
G
E
N
D
A
Mobile
HoloLens
Client
Persistent virtual content
Azure Spatial
Anchors
Azure
App Service
Azure
Cosmos DB
Sharing Service
SOLUTION ARCHITECTURE
A
G
E
N
D
A
Mobile
HoloLens
Client
Persistent virtual content
Azure Spatial
Anchors
Sharing
Service
1) Initialize session
2) Create anchor
3) Locate anchors
1. Save anchor
2. Get anchor ID back
3. Save anchor ID in database
4. Get IDs from database
5. Locate anchors by ID
6. Get anchors back
SOLUTION ARCHITECTURE
A
G
E
N
D
A
protected void init() {
// Set up ARCore & SceneForm.
this.sceneView = ...
Scene scene = ...
...
// Initialize the CloudSpatialAnchorSession.
this.spatialAnchorsSession = new CloudSpatialAnchorSession();
this.spatialAnchorsSession.Configuration.AccountKey = “xxxxxxxxx”;
this.spatialAnchorsSession.Configuration.AccountId = “xxxxxxxxx”;
...
// Give frames to the CloudSpatialAnchorSession.
scene.Update += (_, args) =>
{
// Pass frames to Spatial Anchors for processing.
this.spatialAnchorsSession?.ProcessFrame(this.sceneView.ArFrame);
};
// Add a callback that tells us how much information about the environment we have.
this.spatialAnchorsSession.OnSessionUpdated += (_, sessionUpdateArgs) =>{
this.sessionUpdated = sessionUpdateArgs.Args.Status.RecommendedForCreateProgress;
}
// Register handleTap() as a callback to be invoked when the user taps to place a sphere.
this.arFragment.TapArPlane += ArFragment_TapArPlane;
...
}
Initialize session
A
G
E
N
D
A
Private async void ArFragment_TapArPlane (HitResult hitResult, Plane plane, MotionEvent motionEvent) {
// Create the ARCore Anchor.
Anchor localAnchor = hitResult.createAnchor();
// Render a white sphere at the localAnchor position.
...
// Set the previously created ARCore Anchor as the localAnchor of the CloudSpatialAnchor.
CloudSpatialAnchor cloudAnchor = new CloudSpatialAnchor();
cloudAnchor.LocalAnchor=localAnchor;
// Prompt the user to input a note, set it as a property on the CloudSpatialAnchor.
...
// Wait until we have enough data about the environment
while (this.sessionUpdated < 1) { ... wait ... }
// Save the CloudSpatialAnchor to Azure Spatial Anchors.
this.spatialAnchorsSession.CreateAnchorAsync(cloudAnchor)
.ContinueWith(async cloudAnchorTask =>{
// Save CloudSpatialAnchor ID to the Sharing Service.
PostAnchor(cloudAnchor.getIdentifier());
}
});
Azure Spatial
Anchors
Sharing
Service
Create anchor
A
G
E
N
D
A
public void LocateAnchors(String[] identifiers) {
AnchorLocateCriteria criteria = new AnchorLocateCriteria();
criteria.setIdentifiers(identifiers);
this.spatialAnchorsSession.createWatcher(criteria);
}
String[] identifiers = GET https://<foo>.azurewebsites.net/api/anchors
LocateAnchors(identifiers); Azure Spatial
Anchors
Sharing
Service
Locate anchor
A
G
E
N
D
A
private void initializeSession() {
// Initialize the CloudSpatialAnchorSession.
this.cloudSession = new CloudSpatialAnchorSession();
...
this.cloudAnchorManager.OnAnchorLocated += CloudAnchorManager_OnAnchorLocated;
}
private void CloudAnchorManager_OnAnchorLocated(object sender, AnchorLocatedEventArgs args)
{
if (args.Args.Status == LocateAnchorStatus.Located) {
// Get the ARCore Anchor from the CloudSpatialAnchor.
Anchor localAnchor = args.Args.Anchor.LocalAnchor;
// Render object at the ARCore Anchor location.
...
}
});
Azure Spatial
Anchors
Locate anchor
A
G
E
N
D
A
Azure Spatial Anchors | Wayfinding
A
G
E
N
D
A
Wayfinding
public void LocateAnchors(String[] identifiers) {
AnchorLocateCriteria criteria = new AnchorLocateCriteria();
criteria.setIdentifiers(identifiers);
cloudSession.createWatcher(criteria);
}
public void LocateNearbyAnchors(CloudSpatialAnchor anchor) {
NearAnchorCriteria nearAnchorCriteria = new NearAnchorCriteria();
nearAnchorCriteria.setSourceAnchor(anchor);
AnchorLocateCriteria criteria = new AnchorLocateCriteria();
criteria.setNearAnchor(nearAnchorCriteria);
cloudSession.createWatcher(criteria);
}
A
G
E
N
D
A
Azure Spatial Anchors | Wayfinding
DCA
B
Azure Spatial Anchors | UX Considerations
A
G
E
N
D
A
A
G
E
N
D
A
Placing anchors
Target interesting visual features
• Avoid blank surfaces or surfaces
without details.
Record from perspectives where
you want the next person to
discover from
• Think about those who will come
after you.
A
G
E
N
D
A
Finding anchors
A
G
E
N
D
A
References
Thank You!!!
Thanks to
Question Time

Más contenido relacionado

La actualidad más candente

Augmented reality
Augmented reality Augmented reality
Augmented reality vivekuniyal
 
Introduction to Augmented Reality
Introduction to Augmented RealityIntroduction to Augmented Reality
Introduction to Augmented RealityMark Billinghurst
 
Intermediate: 5G and Extended Reality (XR)
Intermediate: 5G and Extended Reality (XR)Intermediate: 5G and Extended Reality (XR)
Intermediate: 5G and Extended Reality (XR)3G4G
 
Comp4010 Lecture9 VR Input and Systems
Comp4010 Lecture9 VR Input and SystemsComp4010 Lecture9 VR Input and Systems
Comp4010 Lecture9 VR Input and SystemsMark Billinghurst
 
COMP 4010 Lecture10: AR Tracking
COMP 4010 Lecture10: AR TrackingCOMP 4010 Lecture10: AR Tracking
COMP 4010 Lecture10: AR TrackingMark Billinghurst
 
Lecture 6 Interaction Design for VR
Lecture 6 Interaction Design for VRLecture 6 Interaction Design for VR
Lecture 6 Interaction Design for VRMark Billinghurst
 
Comp4010 Lecture5 Interaction and Prototyping
Comp4010 Lecture5 Interaction and PrototypingComp4010 Lecture5 Interaction and Prototyping
Comp4010 Lecture5 Interaction and PrototypingMark Billinghurst
 
Comp4010 Lecture7 Designing AR Systems
Comp4010 Lecture7 Designing AR SystemsComp4010 Lecture7 Designing AR Systems
Comp4010 Lecture7 Designing AR SystemsMark Billinghurst
 
virtual reality Barkha manral seminar on augmented reality.ppt
virtual reality Barkha manral seminar on augmented reality.pptvirtual reality Barkha manral seminar on augmented reality.ppt
virtual reality Barkha manral seminar on augmented reality.pptBarkha Manral
 
Lecture 8 Introduction to Augmented Reality
Lecture 8 Introduction to Augmented RealityLecture 8 Introduction to Augmented Reality
Lecture 8 Introduction to Augmented RealityMark Billinghurst
 
2022 COMP4010 Lecture5: AR Prototyping
2022 COMP4010 Lecture5: AR Prototyping2022 COMP4010 Lecture5: AR Prototyping
2022 COMP4010 Lecture5: AR PrototypingMark Billinghurst
 
Augmented Reality
Augmented RealityAugmented Reality
Augmented RealityAnkit Raj
 
Augmented reality ppt
Augmented reality pptAugmented reality ppt
Augmented reality pptDark Side
 
Augmented reality technical presentation
 Augmented reality technical presentation Augmented reality technical presentation
Augmented reality technical presentationsairamgoud16
 
Virtual reality (vr)
Virtual  reality (vr)Virtual  reality (vr)
Virtual reality (vr)MiteshGupta15
 
Company presentation Strivr
Company presentation StrivrCompany presentation Strivr
Company presentation StrivrJungwoo Chang
 

La actualidad más candente (20)

Augmented reality
Augmented reality Augmented reality
Augmented reality
 
Virtual reality
Virtual realityVirtual reality
Virtual reality
 
Introduction to Augmented Reality
Introduction to Augmented RealityIntroduction to Augmented Reality
Introduction to Augmented Reality
 
Intermediate: 5G and Extended Reality (XR)
Intermediate: 5G and Extended Reality (XR)Intermediate: 5G and Extended Reality (XR)
Intermediate: 5G and Extended Reality (XR)
 
Lecture 4: VR Systems
Lecture 4: VR SystemsLecture 4: VR Systems
Lecture 4: VR Systems
 
Comp4010 Lecture9 VR Input and Systems
Comp4010 Lecture9 VR Input and SystemsComp4010 Lecture9 VR Input and Systems
Comp4010 Lecture9 VR Input and Systems
 
Virtual Reality
Virtual RealityVirtual Reality
Virtual Reality
 
COMP 4010 Lecture10: AR Tracking
COMP 4010 Lecture10: AR TrackingCOMP 4010 Lecture10: AR Tracking
COMP 4010 Lecture10: AR Tracking
 
Lecture 6 Interaction Design for VR
Lecture 6 Interaction Design for VRLecture 6 Interaction Design for VR
Lecture 6 Interaction Design for VR
 
Comp4010 Lecture5 Interaction and Prototyping
Comp4010 Lecture5 Interaction and PrototypingComp4010 Lecture5 Interaction and Prototyping
Comp4010 Lecture5 Interaction and Prototyping
 
Comp4010 Lecture7 Designing AR Systems
Comp4010 Lecture7 Designing AR SystemsComp4010 Lecture7 Designing AR Systems
Comp4010 Lecture7 Designing AR Systems
 
Augmented Reality
Augmented RealityAugmented Reality
Augmented Reality
 
virtual reality Barkha manral seminar on augmented reality.ppt
virtual reality Barkha manral seminar on augmented reality.pptvirtual reality Barkha manral seminar on augmented reality.ppt
virtual reality Barkha manral seminar on augmented reality.ppt
 
Lecture 8 Introduction to Augmented Reality
Lecture 8 Introduction to Augmented RealityLecture 8 Introduction to Augmented Reality
Lecture 8 Introduction to Augmented Reality
 
2022 COMP4010 Lecture5: AR Prototyping
2022 COMP4010 Lecture5: AR Prototyping2022 COMP4010 Lecture5: AR Prototyping
2022 COMP4010 Lecture5: AR Prototyping
 
Augmented Reality
Augmented RealityAugmented Reality
Augmented Reality
 
Augmented reality ppt
Augmented reality pptAugmented reality ppt
Augmented reality ppt
 
Augmented reality technical presentation
 Augmented reality technical presentation Augmented reality technical presentation
Augmented reality technical presentation
 
Virtual reality (vr)
Virtual  reality (vr)Virtual  reality (vr)
Virtual reality (vr)
 
Company presentation Strivr
Company presentation StrivrCompany presentation Strivr
Company presentation Strivr
 

Similar a Workshop sulle spatial anchors

Realtà aumentata ed Azure, un binomio imbattibile
Realtà aumentata ed Azure, un binomio imbattibileRealtà aumentata ed Azure, un binomio imbattibile
Realtà aumentata ed Azure, un binomio imbattibileAlessio Iafrate
 
Giovanni Laquidara - Hello ARCore - Codemotion Milan 2017
Giovanni Laquidara - Hello ARCore - Codemotion Milan 2017Giovanni Laquidara - Hello ARCore - Codemotion Milan 2017
Giovanni Laquidara - Hello ARCore - Codemotion Milan 2017Codemotion
 
apidays LIVE Paris 2021 - Using AR Cloud Anchors APIs to unleash metaverse us...
apidays LIVE Paris 2021 - Using AR Cloud Anchors APIs to unleash metaverse us...apidays LIVE Paris 2021 - Using AR Cloud Anchors APIs to unleash metaverse us...
apidays LIVE Paris 2021 - Using AR Cloud Anchors APIs to unleash metaverse us...apidays
 
Easy2park - A smarter way to find a parking lot
Easy2park - A smarter way to find a parking lotEasy2park - A smarter way to find a parking lot
Easy2park - A smarter way to find a parking lotDaniele Davoli
 
Mini project final presentation
Mini project final presentationMini project final presentation
Mini project final presentationGianlucaCapozzi1
 
Enabling Microservices Frameworks to Solve Business Problems
Enabling Microservices Frameworks to Solve  Business ProblemsEnabling Microservices Frameworks to Solve  Business Problems
Enabling Microservices Frameworks to Solve Business ProblemsKen Owens
 
Architectural solutions for the cloud
Architectural solutions for the cloudArchitectural solutions for the cloud
Architectural solutions for the cloudthreesixty
 
Lesson learns from Japan cloud trend
Lesson learns from Japan cloud trendLesson learns from Japan cloud trend
Lesson learns from Japan cloud trendKimihiko Kitase
 
Bulletproof & Xero Presentation - AWS Summit Auckland
Bulletproof  & Xero Presentation - AWS Summit AucklandBulletproof  & Xero Presentation - AWS Summit Auckland
Bulletproof & Xero Presentation - AWS Summit AucklandBulletproof
 
OpenStack Boston meetup 12 4-2014
OpenStack Boston meetup 12 4-2014OpenStack Boston meetup 12 4-2014
OpenStack Boston meetup 12 4-2014Jennifer Galvin
 
Introduction to Cloudify for OpenStack users
Introduction to Cloudify for OpenStack users Introduction to Cloudify for OpenStack users
Introduction to Cloudify for OpenStack users Nati Shalom
 
DevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
DevOps on AWS: Deep Dive on Infrastructure as Code - TorontoDevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
DevOps on AWS: Deep Dive on Infrastructure as Code - TorontoAmazon Web Services
 
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!FITC
 
Serverless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWSServerless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWSAmazon Web Services
 
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real....NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...NETFest
 
AWS Summit Auckland Sponsor presentation - Bulletproof
AWS Summit Auckland Sponsor presentation - BulletproofAWS Summit Auckland Sponsor presentation - Bulletproof
AWS Summit Auckland Sponsor presentation - BulletproofAmazon Web Services
 
Build Your Mobile App Faster with AWS Mobile Services (Part 1 - AWS)
Build Your Mobile App Faster with AWS Mobile Services (Part 1 - AWS)Build Your Mobile App Faster with AWS Mobile Services (Part 1 - AWS)
Build Your Mobile App Faster with AWS Mobile Services (Part 1 - AWS)Amazon Web Services
 
CloudStack, jclouds and Whirr!
CloudStack, jclouds and Whirr!CloudStack, jclouds and Whirr!
CloudStack, jclouds and Whirr!Andrew Bayer
 
Bending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScriptBending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScriptAll Things Open
 

Similar a Workshop sulle spatial anchors (20)

Realtà aumentata ed Azure, un binomio imbattibile
Realtà aumentata ed Azure, un binomio imbattibileRealtà aumentata ed Azure, un binomio imbattibile
Realtà aumentata ed Azure, un binomio imbattibile
 
Giovanni Laquidara - Hello ARCore - Codemotion Milan 2017
Giovanni Laquidara - Hello ARCore - Codemotion Milan 2017Giovanni Laquidara - Hello ARCore - Codemotion Milan 2017
Giovanni Laquidara - Hello ARCore - Codemotion Milan 2017
 
apidays LIVE Paris 2021 - Using AR Cloud Anchors APIs to unleash metaverse us...
apidays LIVE Paris 2021 - Using AR Cloud Anchors APIs to unleash metaverse us...apidays LIVE Paris 2021 - Using AR Cloud Anchors APIs to unleash metaverse us...
apidays LIVE Paris 2021 - Using AR Cloud Anchors APIs to unleash metaverse us...
 
Easy2park - A smarter way to find a parking lot
Easy2park - A smarter way to find a parking lotEasy2park - A smarter way to find a parking lot
Easy2park - A smarter way to find a parking lot
 
Mini project final presentation
Mini project final presentationMini project final presentation
Mini project final presentation
 
Enabling Microservices Frameworks to Solve Business Problems
Enabling Microservices Frameworks to Solve  Business ProblemsEnabling Microservices Frameworks to Solve  Business Problems
Enabling Microservices Frameworks to Solve Business Problems
 
Deep Dive on AWS IoT
Deep Dive on AWS IoTDeep Dive on AWS IoT
Deep Dive on AWS IoT
 
Architectural solutions for the cloud
Architectural solutions for the cloudArchitectural solutions for the cloud
Architectural solutions for the cloud
 
Lesson learns from Japan cloud trend
Lesson learns from Japan cloud trendLesson learns from Japan cloud trend
Lesson learns from Japan cloud trend
 
Bulletproof & Xero Presentation - AWS Summit Auckland
Bulletproof  & Xero Presentation - AWS Summit AucklandBulletproof  & Xero Presentation - AWS Summit Auckland
Bulletproof & Xero Presentation - AWS Summit Auckland
 
OpenStack Boston meetup 12 4-2014
OpenStack Boston meetup 12 4-2014OpenStack Boston meetup 12 4-2014
OpenStack Boston meetup 12 4-2014
 
Introduction to Cloudify for OpenStack users
Introduction to Cloudify for OpenStack users Introduction to Cloudify for OpenStack users
Introduction to Cloudify for OpenStack users
 
DevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
DevOps on AWS: Deep Dive on Infrastructure as Code - TorontoDevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
DevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
 
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!
 
Serverless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWSServerless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWS
 
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real....NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
 
AWS Summit Auckland Sponsor presentation - Bulletproof
AWS Summit Auckland Sponsor presentation - BulletproofAWS Summit Auckland Sponsor presentation - Bulletproof
AWS Summit Auckland Sponsor presentation - Bulletproof
 
Build Your Mobile App Faster with AWS Mobile Services (Part 1 - AWS)
Build Your Mobile App Faster with AWS Mobile Services (Part 1 - AWS)Build Your Mobile App Faster with AWS Mobile Services (Part 1 - AWS)
Build Your Mobile App Faster with AWS Mobile Services (Part 1 - AWS)
 
CloudStack, jclouds and Whirr!
CloudStack, jclouds and Whirr!CloudStack, jclouds and Whirr!
CloudStack, jclouds and Whirr!
 
Bending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScriptBending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScript
 

Más de Alessio Iafrate

Custom Vision e Win.ml per le nostre app intelligenti offline
Custom Vision e Win.ml per le nostre app intelligenti offlineCustom Vision e Win.ml per le nostre app intelligenti offline
Custom Vision e Win.ml per le nostre app intelligenti offlineAlessio Iafrate
 
What's new in Visual Studio 2019
What's new in Visual Studio 2019What's new in Visual Studio 2019
What's new in Visual Studio 2019Alessio Iafrate
 
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo nataleSanta Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo nataleAlessio Iafrate
 
Tecniche di Machine Learning per l’analisi offline dei dati aziendali
Tecniche di Machine Learning per l’analisi offline dei dati aziendaliTecniche di Machine Learning per l’analisi offline dei dati aziendali
Tecniche di Machine Learning per l’analisi offline dei dati aziendaliAlessio Iafrate
 
Come utilizzare il bot framework
Come utilizzare il bot frameworkCome utilizzare il bot framework
Come utilizzare il bot frameworkAlessio Iafrate
 
Da A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveDa A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveAlessio Iafrate
 
Windows 10 e Universal Windows Platform
Windows 10 e Universal Windows PlatformWindows 10 e Universal Windows Platform
Windows 10 e Universal Windows PlatformAlessio Iafrate
 
Introduzione alle Universal App
Introduzione alle Universal AppIntroduzione alle Universal App
Introduzione alle Universal AppAlessio Iafrate
 

Más de Alessio Iafrate (10)

Custom Vision e Win.ml per le nostre app intelligenti offline
Custom Vision e Win.ml per le nostre app intelligenti offlineCustom Vision e Win.ml per le nostre app intelligenti offline
Custom Vision e Win.ml per le nostre app intelligenti offline
 
What's new in Visual Studio 2019
What's new in Visual Studio 2019What's new in Visual Studio 2019
What's new in Visual Studio 2019
 
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo nataleSanta Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
 
Tecniche di Machine Learning per l’analisi offline dei dati aziendali
Tecniche di Machine Learning per l’analisi offline dei dati aziendaliTecniche di Machine Learning per l’analisi offline dei dati aziendali
Tecniche di Machine Learning per l’analisi offline dei dati aziendali
 
Come utilizzare il bot framework
Come utilizzare il bot frameworkCome utilizzare il bot framework
Come utilizzare il bot framework
 
Aperitech winml
Aperitech winmlAperitech winml
Aperitech winml
 
Da A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveDa A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di Cognitive
 
Xamarin forms
Xamarin formsXamarin forms
Xamarin forms
 
Windows 10 e Universal Windows Platform
Windows 10 e Universal Windows PlatformWindows 10 e Universal Windows Platform
Windows 10 e Universal Windows Platform
 
Introduzione alle Universal App
Introduzione alle Universal AppIntroduzione alle Universal App
Introduzione alle Universal App
 

Último

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 

Último (20)

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 

Workshop sulle spatial anchors

  • 1. Realtà aumentata ed Azure, un binomio imbattibile
  • 2. Realtà aumentata ed Azure, un binomio imbattibile Alessio Iafrate Microsoft MVP, Freelance developer Founder DotNetAbruzzo
  • 3. A G E N D A Why is mobile AR relevant? • By 2020, 100 million consumers will shop in AR online and in-store, according to Gartner, Inc. DatafromSeptember2018by https://pages.arm.com/arvr-report.html
  • 4. A G E N D A Why does the cloud play a role here? • The cloud provides the secure storage and scalable processing for a digital copy of the real world which can be accessed by any user at any time on any device for shared AR content.
  • 5. A G E N D A What is a Spatial Anchor? x y z
  • 6. A G E N D A What is a Spatial Anchor? x y z
  • 7. A G E N D A What is a Cloud Spatial Anchor? x y z x y z x y z
  • 8. A G E N D A What is a Cloud Spatial Anchor? x y z x y z
  • 9. A G E N D A Collaborative design reviews Real-time IoT digital twin data on actual equipment Training guidance Persistent multi-user virtual content
  • 10. A G E N D A Wayfinding • Empowering firstline workers to navigate large facilities • Guiding the way to IoT sensors or failing equipment • Navigating warehouses
  • 12. A G E N D A Wayfinding • Guiding the way through a store following a spatial grocery list • Empowering people who are blind or low vision with spatial sound anchors • Navigating large areas like theme parks, museums, festivals
  • 14. A G E N D A Persistent multi-user virtual content • Urban murals and digital art • Architecture visualization
  • 15. A G E N D A Persistent multi-user virtual content • Urban murals and digital art • Architecture visualization • Marketing and ads • Points of interest • Games
  • 17. A G E N D A What is a Cloud Spatial Anchor? x y z x y z x y z
  • 20. A G E N D A • 1) Collaboration • 2) Wayfinding • 3) UX Considerations
  • 21. A G E N D A HoloLens iOS (ARKit) Android (ARCore) Unity C++/WinRT Xamarin Unity Objective-C Swift Xamarin Unity Java C++/NDK
  • 24. A G E N D A Mobile HoloLens Client Place notes in the real world Persistent virtual content Azure Spatial Anchors Azure App Service Azure Cosmos DB Sharing Service iOS – Swift, ARKit, SceneKit Android – Java, ARCore, SceneForm SOLUTION ARCHITECTURE
  • 25. A G E N D A API Key Concepts • CloudSpatialAnchorSession • Provides core services (Ex. Create, locate, update, delete CloudSpatialAnchor’s) • Captures data about the environment • CloudSpatialAnchor • Links to the underlying AR platform Anchor (WorldAnchor on HoloLens, ARAnchor on iOS, Anchor on Android) • Holds an ID, Expiration, and Properties (Dictionary<String, String>) • CreateAnchorAsync(CloudSpatialAnchor anchor) { … } • Save a CloudSpatialAnchor to Azure Spatial Anchors • Returns the CloudSpatialAnchor with an ID assigned • CreateWatcher(AnchorLocateCriteria criteria) • Begins to watch for anchors that meet the specified criteria • Returns located CloudSpatialAnchor’s through a delegate • AnchorLocateCriteria • Assign it an array of CloudSpatialAnchor IDs
  • 26. A G E N D A Mobile HoloLens Client Persistent virtual content Azure Spatial Anchors Azure App Service Azure Cosmos DB Sharing Service SOLUTION ARCHITECTURE
  • 27. A G E N D A Mobile HoloLens Client Persistent virtual content Azure Spatial Anchors Sharing Service 1) Initialize session 2) Create anchor 3) Locate anchors 1. Save anchor 2. Get anchor ID back 3. Save anchor ID in database 4. Get IDs from database 5. Locate anchors by ID 6. Get anchors back SOLUTION ARCHITECTURE
  • 28. A G E N D A protected void init() { // Set up ARCore & SceneForm. this.sceneView = ... Scene scene = ... ... // Initialize the CloudSpatialAnchorSession. this.spatialAnchorsSession = new CloudSpatialAnchorSession(); this.spatialAnchorsSession.Configuration.AccountKey = “xxxxxxxxx”; this.spatialAnchorsSession.Configuration.AccountId = “xxxxxxxxx”; ... // Give frames to the CloudSpatialAnchorSession. scene.Update += (_, args) => { // Pass frames to Spatial Anchors for processing. this.spatialAnchorsSession?.ProcessFrame(this.sceneView.ArFrame); }; // Add a callback that tells us how much information about the environment we have. this.spatialAnchorsSession.OnSessionUpdated += (_, sessionUpdateArgs) =>{ this.sessionUpdated = sessionUpdateArgs.Args.Status.RecommendedForCreateProgress; } // Register handleTap() as a callback to be invoked when the user taps to place a sphere. this.arFragment.TapArPlane += ArFragment_TapArPlane; ... } Initialize session
  • 29. A G E N D A Private async void ArFragment_TapArPlane (HitResult hitResult, Plane plane, MotionEvent motionEvent) { // Create the ARCore Anchor. Anchor localAnchor = hitResult.createAnchor(); // Render a white sphere at the localAnchor position. ... // Set the previously created ARCore Anchor as the localAnchor of the CloudSpatialAnchor. CloudSpatialAnchor cloudAnchor = new CloudSpatialAnchor(); cloudAnchor.LocalAnchor=localAnchor; // Prompt the user to input a note, set it as a property on the CloudSpatialAnchor. ... // Wait until we have enough data about the environment while (this.sessionUpdated < 1) { ... wait ... } // Save the CloudSpatialAnchor to Azure Spatial Anchors. this.spatialAnchorsSession.CreateAnchorAsync(cloudAnchor) .ContinueWith(async cloudAnchorTask =>{ // Save CloudSpatialAnchor ID to the Sharing Service. PostAnchor(cloudAnchor.getIdentifier()); } }); Azure Spatial Anchors Sharing Service Create anchor
  • 30. A G E N D A public void LocateAnchors(String[] identifiers) { AnchorLocateCriteria criteria = new AnchorLocateCriteria(); criteria.setIdentifiers(identifiers); this.spatialAnchorsSession.createWatcher(criteria); } String[] identifiers = GET https://<foo>.azurewebsites.net/api/anchors LocateAnchors(identifiers); Azure Spatial Anchors Sharing Service Locate anchor
  • 31. A G E N D A private void initializeSession() { // Initialize the CloudSpatialAnchorSession. this.cloudSession = new CloudSpatialAnchorSession(); ... this.cloudAnchorManager.OnAnchorLocated += CloudAnchorManager_OnAnchorLocated; } private void CloudAnchorManager_OnAnchorLocated(object sender, AnchorLocatedEventArgs args) { if (args.Args.Status == LocateAnchorStatus.Located) { // Get the ARCore Anchor from the CloudSpatialAnchor. Anchor localAnchor = args.Args.Anchor.LocalAnchor; // Render object at the ARCore Anchor location. ... } }); Azure Spatial Anchors Locate anchor
  • 33. A G E N D A Wayfinding public void LocateAnchors(String[] identifiers) { AnchorLocateCriteria criteria = new AnchorLocateCriteria(); criteria.setIdentifiers(identifiers); cloudSession.createWatcher(criteria); } public void LocateNearbyAnchors(CloudSpatialAnchor anchor) { NearAnchorCriteria nearAnchorCriteria = new NearAnchorCriteria(); nearAnchorCriteria.setSourceAnchor(anchor); AnchorLocateCriteria criteria = new AnchorLocateCriteria(); criteria.setNearAnchor(nearAnchorCriteria); cloudSession.createWatcher(criteria); }
  • 34. A G E N D A Azure Spatial Anchors | Wayfinding DCA B
  • 35. Azure Spatial Anchors | UX Considerations
  • 37. A G E N D A Placing anchors Target interesting visual features • Avoid blank surfaces or surfaces without details. Record from perspectives where you want the next person to discover from • Think about those who will come after you.

Notas del editor

  1. Why mobile AR when we have next gen AR devices like HL2 Gartner quote: By 2020, 100 million consumers will shop in AR online and in-store and 5G will play a huge role says Gartner. ​ https://www.gartner.com/en/newsroom/press-releases/2019-04-01-gartner-says-100-million-consumers-will-shop-in-augme ​ Persistent content enabled by Anchors will play an important role here as well for advanced in-store experiences 26% active devices were able to use either ARKit + ARCore. September 2018  Now one third Google I/O - 400mio devices We all love the advanced features of HL but mobile AR is Low entry, wide reach  everyone has a smartphone
  2. Why Azure? Devices have their own, disconnected AR view of the world Cloud brings it together Virtual content persists and sharing across devices Relies on device’s digital view of the world How do devices view/see the world?
  3. Abstract concept  Examples and scenarios we see with our customers HL since 2015  Dozens of apps / use cases Due to NDA generalized use cases we see commonly
  4. Own coord system for location in real-world A common frame of reference to place digital content in the same physical location where it stays at the same position and orientation relative to the real-world environment.
  5. Location in real-world ensures virtual content stays at the same pos/orient even if you move Anchor is not the content, just a real-world location where content can be anchored HoloLens, ARKit, ARCore and Magic Leap (PCF) A common frame of reference to place digital content in the same physical location where it stays at the same position and orientation relative to the real-world environment.
  6. What is a Cloud Spatial Anchor - Why Cloud? Normalizes different devices anchors/mappings Multiple users. sharing across devices with persistence A common frame of reference for enabling multiple users to place digital content in the same physical location where it is persisted and can be seen on different devices at the same position and orientation relative to the real-world environment.
  7. Persistence Hot research topic, Startups as well as big players ASA is the only implementation that provides persisted, x-plat, shared anchors  Paris later tech details Here more examples: shared, x-plat + persistence A common frame of reference for enabling multiple users to place digital content in the same physical location where it is persisted and can be seen on different devices at the same position and orientation relative to the real-world environment.
  8. Real-time IoT sensor data on real-world equipment Multi-user, cross-platform Biz val: Real-time insights into data much faster than searching through pages of information on complex control room panels
  9. Dynamic warehouse navigating for fulfilling a order Biz val: Increased efficiency and less packaging errors Photo from Wikipedia: https://commons.wikimedia.org/wiki/File:Pantos_Logistics_-_Warehouse_picture.jpg
  10. Enterprise is nice but there’s a ton of fun consumer use cases as well Mobile AR market size
  11. Festival navigation like Coachella https://twitter.com/rschu/status/1117339333969817600 Theme park navigation concept video used with permission: ​ https://vimeo.com/319985238 ​ “Sure, You can use it. At the moment it's a marker based/Arkit/Core combination, but love to see what  Azure Spatial Anchors can do to further this concept” Also: holographic characters in its amusement park for guests in line to hang out with them as they’re waiting to board the ride Biz val: Engaging customers with innovative tech and improve their CX
  12. Swiss 'gabarits’ / Baugespann / Profile Show the form of a future construction with poles, Architecture vis of building before they build to get citizens involved Design reviews Biz val: making tedious, laborious and time-intensive work into a natural, intuitive and more collaborative experience. Better vis means better commitment; reduce cost First Photo from: https://upload.wikimedia.org/wikipedia/commons/4/43/Sch%C3%B6nb%C3%BChlring_in_Luzern.jpg Second photo by my friend Laurent Bugnion who lives in Siwtzerland
  13. Location-based: ASA screams games  Multi-user, cross-platform Scavenger hunt; Hide and seek games, social engaging Biz val: Democratize AR game dev – now any developer can build the next Pokémon Go, ​ Fruit hunt  dropped fruity anchors during last MVP Summit Won’t slip on virtual banana
  14. Talk about Azure Spatial Anchors, abbreviate to ASA New Azure service lets you place spatial anchors and save them to the cloud
  15. Before we begin, want to briefly touch on what a cloud spatial anchor is again – important for the rest of this talk If you place a spatial anchor, you now have a reference between your device and a point the real world. You can render a hologram there, And when you want to share this point, you save it to ASA. When the next person comes, they get that location, and they can see the hologram as well. Share a position in the real world that can be persisted and can be seen on different devices.
  16. Want to share a picture that I’m familiar with – the lobby of my building.
  17. And this video is what Azure Spatial Anchors sees when it's looking at the lobby.   In green are feature points, which are distinguishing points in the real world. Your badge would be full of feature points because there are lots of high visual contrast.   In red are camera frames, which are the pictures we took with the camera from different points in space.   As you wave your phone around, we get more and more green feature points. When you place an anchor, it gets tied to those feature points. And when you look for an anchor, we use the feature points that we've collected to know where the anchor should be placed. I want to note that all of this is done on the device, so no camera frames are leaving your device.
  18. Building an app for collaboration in the real world Building on that to do wayfinding Finally, some UX best considerations
  19. Support HL, iOS, Android. Can develop on Unity or write native apps. All platforms are first class citizens. And our KPI matrix that considers all platforms, and their relationships to each other. Today, we’re highlighting iOS Swift and Android Java. But you can also build for iOS and Android.
  20. So the app we built is a collaborative experience. Like we saw in Rene's factory floor example, where they placed training guidance on a car being assembled, this app lets you leave notes on places of interest and then later retrieve them.   Before this demo, we placed a note on the table. When we start the app, we're going to locate it. We'll then place a new note that we can later retrieve. Right now, they're collecting the camera frames and searching for anchors. We found the note! And now we'll place a note for the next person to come see. If we restart the device, we can now see that we found the new anchor again!
  21. I'm now going to give you a quick look at the architecture. We'll then look at some key concepts for the ASA API before coming back to it in more detail.   We have client code, Java and Swift in this case. It talks to two things.   ASA, which we use to save and locate anchors.   Next, an API. Using Azure App Service, we have an ASP.NET API that is connected to a CosmosDB backend. We use this to store information about our anchors which we need to retrieve them from Azure Spatial Anchors. Because it’s not really important what we use in the sharing service, I’m just going to call it the sharing service, and you can think of it as a database.   Now I'm going to look at some API key concepts, and then we'll revisit this diagram with a little more context.
  22. CloudSpatialAnchorSession – you give the session camera frames (one note – you don’t need to do this on HoloLens because we have the map) CreateAnchorAsync – no ID when you create, only when it’s been created you’ll get a callback with a CloudSpatialAnchor that has an ID assigned. CreateWatcher You get back a CloudSpatialAnchor, and it has a link to an underlying AR platform anchor. If you are on iOS, you will get back an ARAnchor, even if you are on a HoloLens. That’s one of the really cool things we do – you don’t have to do any math or conversions and you get to work with the anchor that is native to the platform you are on. So if we look at the big picture, we see that when we create an anchor we are given back an ID. And when we want to find an anchor, we need to tell ASA the ID of the anchor we want to find. That is why we need a database – we store IDs in it.
  23. I'm now going to give you a quick look at the architecture. We'll then look at some key concepts for the ASA API before coming back to it in more detail.   We have client code, Java and Swift in this case. It talks to two things.   ASA, which we use to save and locate anchors.   Next, an API. Using Azure App Service, we have an ASP.NET API that is connected to a CosmosDB backend. We use this to store information about our anchors which we need to retrieve them from Azure Spatial Anchors. Because it’s not really important what we use in the sharing service, I’m just going to call it the sharing service, and you can think of it as a database.   Now I'm going to look at some API key concepts, and then we'll revisit this diagram with a little more context.
  24. The sharing service is a way for us to store IDs. You need to share IDs because different users at different times will want to look for an anchor. I now
  25. I’m elippsis in place of code to simplify things. In this case, sceneView and scene are Sceneform concepts. All this code it on GitHub, and I’d love it if you looked into it more there. Then, we need to give the camera frames to ASA, so we add an update listener and call ProcessFrame. If you’re not familiar with this sytax, a listener is similar-ish to a delegate or callback, in that it will get called by SceneForm whenever there is a new camera frame So what this does it call session.processframe everytime there’s a new camera frame On HoloLens you don't need to do this because we have the spatial map. SessionUpdated So we use sessionUpdated to tell us about how much environmental information we have, and whether it’s enough to save an anchor Next, let’s create an anchor. To do so, we need to add a callback that will be invoked when you tap on the screen. TapArPlaneListener is a ARCore concept that lets us register a method to be called when you tap on a plane. Let’s write the handle tap method to place an anchor
  26. First, we create the local anchor – creating this Anchor object is an ARCore concept, and we do it by using the HitResult, i.e. the place in the real world we tapped.
  27. We’ll now add another listener that will get called when we locate an anchor. Now that we’ve located an anchor, we can get its location. We get in back as an ARCore Anchor, even if it was created on HoloLens or iOS. So that’s our app – I hope you can now initialize a session, create an anchor, and then locate anchors. All this code is on GitHub, and I’ll share the Url at the end of the session.
  28. You’ve seen how to locate an anchor by ID. You initialize the criteria, set an array of IDs, and create a watcher. But you can also locate anchors that are connected to, and nearby, an anchor you have already located. We’ll write LocateNearbyAnchors to do so. It’s passed in a CloudSpatialAnchor that has already been located. Then create NearAnchorCriteria, and set the anchor as the source anchor. Then we’ll create the AnchorLocateCriteria we’ve seen before, but this time set the NearAnchor as the nearAnchorCriteria object. Let’s look at what this will do.
  29. I want to first touch briefly on feature points again.
  30. Well, first, you want to try to get feature points. A white wall will have less of those green dots, so it will be harder to locate an anchor that was placed without capturing many feature points.   Second, you want to consider the scenario, because it will lead your UX design.   Are you placing a note at the top of a hiking trail to tell people about the route? If so, you'll want to make sure you capture from 360 so that the next person coming along doesn't need to be in the same place you were   Or are you displaying a data visualization on a conference room table? Maybe you should encourage users to place the anchor sitting down, or in an accessible and central spot.   Are you leaving notes around a museum? Maybe it doesn’t matter if the user captures a 360, and instead they should focus on the painting and panning around it.
  31. When you’re finding anchors, I also encourage you to design based on the scenario. Internally, we’ve seen two patterns for finding anchors emerge. One is the target scenario – where you’re able to show the user a picture of the area they should aim at. Let’s give an example - If you were designing an app for a museum, you might have an admin mode, where only certain people get to place anchors. In that case, you might be able to get them to take a picture of each painting to help guide users to find the anchor later. Another thing we’ve seen is the room scenario, where the anchor could be anywhere. An example of this is ap escape the room app we built, where anchors could be all over. In that case, you want to give UX that will encourage the user to pan all around.
  32. So, with that, I want to say that we’re live! We launched at the end of February, and our team is so happy and thankful to be here. We’ve loved watching what people are building – and we hope to continue seeing Rene’s amazing videos, as well as all of yours!