SlideShare a Scribd company logo
1 of 46
#azuresatpn
Azure Saturday 2019
Realtà aumentata ed Azure, un binomio
imbattibile
Alessio Iafrate
Microsoft MVP, Freelance developer
Founder DotNetAbruzzo
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
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.
x
y
z
x
y
z
x
y
z
x
y
z x
y
z
x
y
z
x
y
z
Persistent multi-user virtual content
Collaborative design reviews
Persistent multi-user virtual content
Collaborative design reviews
Real-time IoT digital twin data on
actual equipment
Collaborative design reviews
Real-time IoT digital twin data on
actual equipment
Training guidance
Persistent multi-user virtual content
Wayfinding
Empowering firstline workers
to navigate large facilities
Wayfinding
Empowering firstline workers
to navigate large facilities
Guiding the way to IoT sensors
or failing equipment
Wayfinding
Empowering firstline workers
to navigate large facilities
Guiding the way to IoT sensors
or failing equipment
Navigating warehouses
Wayfinding
Guiding the way through a store
following a spatial grocery list
Guiding the way through a store
following a spatial grocery list
Empowering people who are blind or
low vision with spatial sound anchors
Wayfinding
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
Persistent multi-user virtual content
Urban murals and digital art
Persistent multi-user virtual content
Urban murals and digital art
Architecture visualization
Urban murals and digital art
Architecture visualization
Marketing and ads
Points of interest
Games
1) Collaboration 2) Wayfinding 3) UX Considerations
#azuresatpn
HoloLens iOS (ARKit) Android (ARCore)
Unity
C++/WinRT
Xamarin
Unity
Objective-C
Swift
Xamarin
Unity
Java
C++/NDK
http://bit.ly/2VlLcOA
#azuresatpn
Mobile
HoloLens
Client
Place notes in the real world
Persistent virtual content
SOLUTION ARCHITECTURE
Azure Spatial
Anchors
Azure
App Service
Azure
Cosmos DB
Sharing Service
iOS – Swift, ARKit, SceneKit
Android – Java, ARCore, SceneForm
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
Mobile
HoloLens
Client
Place notes in the real world
Persistent virtual content
SOLUTION ARCHITECTURE
Azure Spatial
Anchors
Azure
App Service
Azure
Cosmos DB
Sharing Service
Mobile
HoloLens
Client
Place notes in the real world
Persistent virtual content
SOLUTION ARCHITECTURE
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
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;
...
}
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
#azuresatpn
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
#azuresatpn
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
#azuresatpn
Connected anchors
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);
}
#azuresatpn
Connected anchors
DCA
B
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.
Finding anchors
Target Scenario Room Scenario
#azuresatpn
#azuresatpn
Azure Saturday 2019
Grazie a tutti!!!
#azuresatpn
Azure Saturday 2019
Question time

More Related Content

What's hot

Monitoring Containerized Micro-Services In Azure
Monitoring Containerized Micro-Services In AzureMonitoring Containerized Micro-Services In Azure
Monitoring Containerized Micro-Services In AzureAlex Bulankou
 
Debugging and Interacting with Production Applications - MS Online Tech Forum
Debugging and Interacting with Production Applications - MS Online Tech ForumDebugging and Interacting with Production Applications - MS Online Tech Forum
Debugging and Interacting with Production Applications - MS Online Tech ForumDavide Benvegnù
 
Container orchestration k8s azure kubernetes services
Container orchestration  k8s azure kubernetes servicesContainer orchestration  k8s azure kubernetes services
Container orchestration k8s azure kubernetes servicesRajesh Kolla
 
AWS Webcast - Splunk and Autodesk
AWS Webcast - Splunk and AutodeskAWS Webcast - Splunk and Autodesk
AWS Webcast - Splunk and AutodeskAmazon Web Services
 
Azure Container Instance
Azure Container InstanceAzure Container Instance
Azure Container InstanceBishoy Demian
 
Deploying Cloud Use Cases
Deploying Cloud Use CasesDeploying Cloud Use Cases
Deploying Cloud Use CasesJason Singh
 
Splunk Cloud
Splunk CloudSplunk Cloud
Splunk CloudSplunk
 
Intro to docker and kubernetes
Intro to docker and kubernetesIntro to docker and kubernetes
Intro to docker and kubernetesMohit Chhabra
 
DotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsDotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsSajeetharan
 
Cloud Use Cases And Standards
Cloud Use Cases And StandardsCloud Use Cases And Standards
Cloud Use Cases And StandardsGovCloud Network
 
Service Fabric and Azure Service Fabric Mesh introduction
Service Fabric and Azure Service Fabric Mesh introductionService Fabric and Azure Service Fabric Mesh introduction
Service Fabric and Azure Service Fabric Mesh introductionMikkel Mørk Hegnhøj
 
Aws serverless multi-tier_architectures
Aws serverless multi-tier_architecturesAws serverless multi-tier_architectures
Aws serverless multi-tier_architecturesDevthilina Abayaratne
 
Microsoft Azure News - 2018 June
Microsoft Azure News - 2018 JuneMicrosoft Azure News - 2018 June
Microsoft Azure News - 2018 JuneDaniel Toomey
 
Migrating SSIS to the cloud
Migrating SSIS to the cloudMigrating SSIS to the cloud
Migrating SSIS to the cloudKoenVerbeeck
 
Overview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled KubernetesOverview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled KubernetesPieter de Bruin
 
Microsoft Azure Stack
Microsoft Azure StackMicrosoft Azure Stack
Microsoft Azure StackTudor Damian
 

What's hot (20)

Monitoring Containerized Micro-Services In Azure
Monitoring Containerized Micro-Services In AzureMonitoring Containerized Micro-Services In Azure
Monitoring Containerized Micro-Services In Azure
 
Debugging and Interacting with Production Applications - MS Online Tech Forum
Debugging and Interacting with Production Applications - MS Online Tech ForumDebugging and Interacting with Production Applications - MS Online Tech Forum
Debugging and Interacting with Production Applications - MS Online Tech Forum
 
Container orchestration k8s azure kubernetes services
Container orchestration  k8s azure kubernetes servicesContainer orchestration  k8s azure kubernetes services
Container orchestration k8s azure kubernetes services
 
Introduction to windows azure
Introduction to windows azureIntroduction to windows azure
Introduction to windows azure
 
AWS Webcast - Splunk and Autodesk
AWS Webcast - Splunk and AutodeskAWS Webcast - Splunk and Autodesk
AWS Webcast - Splunk and Autodesk
 
Azure Container Instance
Azure Container InstanceAzure Container Instance
Azure Container Instance
 
Deploying Cloud Use Cases
Deploying Cloud Use CasesDeploying Cloud Use Cases
Deploying Cloud Use Cases
 
Splunk Cloud
Splunk CloudSplunk Cloud
Splunk Cloud
 
Intro to docker and kubernetes
Intro to docker and kubernetesIntro to docker and kubernetes
Intro to docker and kubernetes
 
DotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsDotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcements
 
Cloud Use Cases And Standards
Cloud Use Cases And StandardsCloud Use Cases And Standards
Cloud Use Cases And Standards
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Service Fabric and Azure Service Fabric Mesh introduction
Service Fabric and Azure Service Fabric Mesh introductionService Fabric and Azure Service Fabric Mesh introduction
Service Fabric and Azure Service Fabric Mesh introduction
 
Monitor Cloud Resources using Alerts & Insights
Monitor Cloud Resources using Alerts & InsightsMonitor Cloud Resources using Alerts & Insights
Monitor Cloud Resources using Alerts & Insights
 
Aws serverless multi-tier_architectures
Aws serverless multi-tier_architecturesAws serverless multi-tier_architectures
Aws serverless multi-tier_architectures
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
 
Microsoft Azure News - 2018 June
Microsoft Azure News - 2018 JuneMicrosoft Azure News - 2018 June
Microsoft Azure News - 2018 June
 
Migrating SSIS to the cloud
Migrating SSIS to the cloudMigrating SSIS to the cloud
Migrating SSIS to the cloud
 
Overview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled KubernetesOverview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled Kubernetes
 
Microsoft Azure Stack
Microsoft Azure StackMicrosoft Azure Stack
Microsoft Azure Stack
 

Similar to Realtà aumentata ed Azure, un binomio imbattibile

Workshop sulle spatial anchors
Workshop sulle spatial anchorsWorkshop sulle spatial anchors
Workshop sulle spatial anchorsAlessio 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
 
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
 
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
 
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
 
Mini project final presentation
Mini project final presentationMini project final presentation
Mini project final presentationGianlucaCapozzi1
 
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for DevicesAmazon Web Services
 
Prancer is announcing security scan of azure service operator for kubernetes ...
Prancer is announcing security scan of azure service operator for kubernetes ...Prancer is announcing security scan of azure service operator for kubernetes ...
Prancer is announcing security scan of azure service operator for kubernetes ...Prancer Io
 
Habitat & Amazon's ECS
Habitat & Amazon's ECSHabitat & Amazon's ECS
Habitat & Amazon's ECSMatt Ray
 
Lesson learns from Japan cloud trend
Lesson learns from Japan cloud trendLesson learns from Japan cloud trend
Lesson learns from Japan cloud trendKimihiko Kitase
 
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
 
Spring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud FoundrySpring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud FoundryJoshua Long
 
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
 
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
 
Writing Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web TechnologyWriting Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web TechnologyMichaela Lehr
 
Writing Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web TechnologyWriting Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web TechnologyGeilDanke
 
Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...
Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...
Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...Yoichi Kawasaki
 
OpenStack Boston meetup 12 4-2014
OpenStack Boston meetup 12 4-2014OpenStack Boston meetup 12 4-2014
OpenStack Boston meetup 12 4-2014Jennifer Galvin
 

Similar to Realtà aumentata ed Azure, un binomio imbattibile (20)

Workshop sulle spatial anchors
Workshop sulle spatial anchorsWorkshop sulle spatial anchors
Workshop sulle spatial anchors
 
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
 
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
 
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
 
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...
 
Mini project final presentation
Mini project final presentationMini project final presentation
Mini project final presentation
 
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
 
Prancer is announcing security scan of azure service operator for kubernetes ...
Prancer is announcing security scan of azure service operator for kubernetes ...Prancer is announcing security scan of azure service operator for kubernetes ...
Prancer is announcing security scan of azure service operator for kubernetes ...
 
Deep Dive on AWS IoT
Deep Dive on AWS IoTDeep Dive on AWS IoT
Deep Dive on AWS IoT
 
Habitat & Amazon's ECS
Habitat & Amazon's ECSHabitat & Amazon's ECS
Habitat & Amazon's ECS
 
Lesson learns from Japan cloud trend
Lesson learns from Japan cloud trendLesson learns from Japan cloud trend
Lesson learns from Japan cloud trend
 
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
 
Spring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud FoundrySpring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud Foundry
 
Serverless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWSServerless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWS
 
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
 
Writing Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web TechnologyWriting Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web Technology
 
Writing Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web TechnologyWriting Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web Technology
 
Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...
Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...
Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...
 
SRV408 Deep Dive on AWS IoT
SRV408 Deep Dive on AWS IoTSRV408 Deep Dive on AWS IoT
SRV408 Deep Dive on AWS IoT
 
OpenStack Boston meetup 12 4-2014
OpenStack Boston meetup 12 4-2014OpenStack Boston meetup 12 4-2014
OpenStack Boston meetup 12 4-2014
 

More from 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
 

More from 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
 

Recently uploaded

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?Watsoo Telematics
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Recently uploaded (20)

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

Realtà aumentata ed Azure, un binomio imbattibile

  • 1. #azuresatpn Azure Saturday 2019 Realtà aumentata ed Azure, un binomio imbattibile Alessio Iafrate Microsoft MVP, Freelance developer Founder DotNetAbruzzo
  • 2. 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
  • 3. 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.
  • 8.
  • 9. Persistent multi-user virtual content Collaborative design reviews
  • 10. Persistent multi-user virtual content Collaborative design reviews Real-time IoT digital twin data on actual equipment
  • 11. Collaborative design reviews Real-time IoT digital twin data on actual equipment Training guidance Persistent multi-user virtual content
  • 12. Wayfinding Empowering firstline workers to navigate large facilities
  • 13. Wayfinding Empowering firstline workers to navigate large facilities Guiding the way to IoT sensors or failing equipment
  • 14. Wayfinding Empowering firstline workers to navigate large facilities Guiding the way to IoT sensors or failing equipment Navigating warehouses
  • 15.
  • 16. Wayfinding Guiding the way through a store following a spatial grocery list
  • 17. Guiding the way through a store following a spatial grocery list Empowering people who are blind or low vision with spatial sound anchors Wayfinding
  • 18. 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
  • 19. Persistent multi-user virtual content Urban murals and digital art
  • 20. Persistent multi-user virtual content Urban murals and digital art Architecture visualization
  • 21. Urban murals and digital art Architecture visualization Marketing and ads Points of interest Games
  • 22.
  • 23.
  • 24.
  • 25. 1) Collaboration 2) Wayfinding 3) UX Considerations
  • 26. #azuresatpn HoloLens iOS (ARKit) Android (ARCore) Unity C++/WinRT Xamarin Unity Objective-C Swift Xamarin Unity Java C++/NDK
  • 29. Mobile HoloLens Client Place notes in the real world Persistent virtual content SOLUTION ARCHITECTURE Azure Spatial Anchors Azure App Service Azure Cosmos DB Sharing Service iOS – Swift, ARKit, SceneKit Android – Java, ARCore, SceneForm
  • 30. 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
  • 31. Mobile HoloLens Client Place notes in the real world Persistent virtual content SOLUTION ARCHITECTURE Azure Spatial Anchors Azure App Service Azure Cosmos DB Sharing Service
  • 32. Mobile HoloLens Client Place notes in the real world Persistent virtual content SOLUTION ARCHITECTURE 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
  • 33. 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; ... }
  • 34. 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
  • 35. #azuresatpn 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
  • 36. #azuresatpn 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
  • 37.
  • 39. 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); }
  • 41.
  • 42. 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.