SlideShare a Scribd company logo
Getting started with Unity and
AR/VR for the .NET developer…
Reloaded!
Davide Zordan
B: https://davide.dev
E: mail@davide.dev
T: @DavideZordan
Davide Zordan
Senior software engineer
MCSD, MCSA, MS, MCP
Microsoft MVP (2009-2014)
Agenda
Introduction to Mixed Reality
VR interactions and locomotion using Unity and SteamVR
Enabling Oculus Quest passthrough
Telepresence using points cloud
Hand-tracking
What is Mixed Reality?
The state of things as they “actually
exist” through our human senses
without any technology.
Artificially created sensory experiences of
people, environments and objects, which can
include sight, touch, hearing, and smell.
PHYSICAL REALITY VIRTUAL REALITY
MIXED REALITY
VIRTUAL REALITY
PHYSICAL REALITY
PHYSICAL
REALITY
DIGITAL
REALITY
MIXED REALITY (MR)
Windows Mixed Reality Holographic Devices (see-through) / Magic Leap / Nreal Light
/ RealWare HMT-1 / LYNX-R / Meta Project Aria, Project Cambria / Varjo
Oculus Quest 2 / HTC VIVE - Cosmos / Valve Index / Windows Mixed
Reality Immersive Devices (Opaque) / Varjo
AR
TODAY
VR
TODAY
Physical - Digital Reality Spectrum
*The term mixed reality was originally introduced in a 1994 paper by Paul Milgram and Fumio Kishino, "A Taxonomy of Mixed Reality Visual Displays."
How can we design for AR/VR?
Designing great VR experiences
Place illusion
Plausibility illusion
Embodiment illusion
Source: https://www.coursera.org/lecture/introduction-virtual-reality/introduction-to-plausibility-illusion-psi-K5PGj
A new way to interact
Gaze
Gesture
Voice
Motion control
World coordinates
Spatial audio
Spatial mapping
Hand-tracking
Eye-tracking
VR interactions
Pointing
Selecting
Grabbing
VR Locomotion
Eye gazing
Teleportation
Continuous walk
DEMO
VR locomotion and custom interactions
1 – Using the SteamVR controllers bindings
Rotate the player
Targeting multiple headsets
1 – Creating a VR headset manager
2 – Initialising device-specific settings
Adding vocal commands:
• Unity KeywordRecognizer
• Natural Language Understanding
… available online at https://davide.dev/blog
DEMO
Basic selection and interactions
Performance tips
1 - Mark not
moving
objects as
static
2 – Reduce
the number
of draw calls -
baked lights
3 – Reduce
the number
of draw calls
• Combine meshes and materials
• Some Unity plugins available in the asset store
can help
4 – Avoid not
performant
code at
runtime
5 – Reduce
max polys
count in
scenes
• Mobile devices: ~200,000
• Desktop VR: ~1,000,000
• Do not draw polys that cannot be seen by the
user
6 – Optimise
garbage
collection
• Try to avoid the GC
while a scene is
running
• Unity now allows
incremental
garbage collection
7 – Use object
pooling
• Try to not
instantiate objects
at runtime but
reuse instanced
using object pooling
https://github.com/davidezordan/PerformanceBounceback/blob/master/PerformanceBounceback
Using Oculus Quest passthrough APIs
Image source: www.oculus.com/quest
What are
passthrough
APIs?
https://developer.oculus.com/experimental/passthrough-api/
• Passthrough APIs must be enabled using experimental features using
adb:
adb shell setprop
debug.oculus.experimentalEnabled 1
• Must be enabled in the OVR Manager script of the OVRCameraRig:
• Require additional passthrough script:
• Enable
development of
pass-through
experiences using
Quest
• New SDKs recently
announced (Voice,
Hands
manipulations)
Collaboration in AR/VR
Telepresence using point clouds
Collaboration
• Facebook Horizon Worlds
Social experience
https://www.oculus.com/facebook-horizon/
• Facebook Horizon Workrooms
Collaboration experience for meetings
https://about.fb.com/news/2021/08/introducing-horizon-
workrooms-remote-collaboration-reimagined/
• Microsoft Mesh
Virtual collaboration / Holoportation
https://www.microsoft.com/en-us/mesh
Source: https://techcommunity.microsoft.com/t5/mixed-reality-blog/microsoft-mesh-app-august-2021-update-new-features/ba-p/2746856
Telepresence
• Requires a sensor like Kinect for capturing colors and depth data from
cameras.
• Captured data (e.g., arrays of Vector3[] / Color[]) can be transmitted
over the network via sockets.
• Requires a PC to act as a server.
• A full implementation is available here:
Kowalski, M.; Naruniec, J.; Daniluk, M.: "LiveScan3D: A Fast and
Inexpensive 3D Data Acquisition System for Multiple Kinect v2 Sensors". in
3D Vision (3DV), 2015 International Conference on, Lyon, France, 2015
https://github.com/MarekKowalski/LiveScan3D
• Further improvements could include audio streaming, usage of other
protocols (e.g. WebRTC)
• Streaming point
clouds to AR/VR
devices
LiveScan 3D project: https://github.com/MarekKowalski/LiveScan3D
Adapted from LiveScan 3D HoloLens project: https://github.com/MarekKowalski/LiveScan3D-Hololens
Adapted from LiveScan 3D HoloLens project:
https://github.com/MarekKowalski/LiveScan3D-Hololens
Implementing Hand tracking
Mixed Reality Toolkit for Unity
• https://aka.ms/MRTK
MRTK extensions for Oculus Quest
• https://github.com/HoloLabInc/MRTKExtensionForOculu
sQuest
• https://github.com/provencher/MRTK-Quest
Interactions SDK for Oculus Quest (available 2022)
Source: Facebook Connect 2021 - https://www.facebookconnect.com/en-gb/
DEMO
Hand tracking using Oculus Quest and
Mixed Reality Toolkit
Enhancing the experience
using Mixed Reality services
HoloLens 2
Source: https://news.microsoft.com/microsoft-at-mwc19/
Microsoft Azure mixed reality services:
• Remote rendering
• Spatial anchors
• Object anchors
Summary
What is Mixed Reality
Why Mixed Reality
How to develop for AR/VR
VR Interactions / Locomotion
Performance considerations
Using Oculus passthrough mode
Telepresence
Developing for AR
Mixed Reality Services
Key takeaways:
Check performance early and often to avoid motion sickness
Design properly the experience for maximising the user immersion
Use cloud services to enhance the user experience (speech, vision, anchors)
Collaboration using AR/VR is an important topic which requires research
“Any sufficiently advanced technology is
indistinguishable from magic”
Arthur C. Clark, Profiles of the future, 1961
References
AR / VR / Mixed Reality samples
https://github.com/davidezordan
SteamVR Unity plugin
https://github.com/ValveSoftware/steamvr_unity_plugin
Mixed Reality Toolkit
https://aka.ms/MRTK
Unity XR Interaction Toolkit
https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@0.9/manual/index.html
Unity XR Interaction Toolkit examples
https://github.com/Unity-Technologies/XR-Interaction-Toolkit-Examples
Goldman Sachs VR/AR report
https://www.goldmansachs.com/insights/pages/virtual-and-augmented-reality-report.html
References
Coursera “Introduction to Virtual Reality”
https://www.coursera.org/lecture/introduction-virtual-reality/introduction-to-plausibility-illusion-psi-K5PGj
Cognitive Services
https://azure.microsoft.com/en-us/services/cognitive-services
Oculus VR performance optimization guide
https://developer.oculus.com/documentation/pcsdk/latest/concepts/dg-performance-opt-guide
Mixed Reality Academy and Azure Services tutorial
https://docs.microsoft.com/en-us/windows/mixed-reality/tutorials
Unity: the most common mistakes to avoid
https://unity3d.com/how-to/unity-common-mistakes-to-avoid
Microsoft Ignite
https://8gportalvhdsf9v440s15hrt.blob.core.windows.net/ignite2017/session-presentations/BRK2404.PPTX
References
Oculus passthrough APIs
https://developer.oculus.com/experimental/passthrough-api/
Kowalski, M.; Naruniec, J.; Daniluk, M.: "LiveScan3D: A Fast and Inexpensive 3D Data Acquisition System
for Multiple Kinect v2 Sensors". in 3D Vision (3DV), 2015 International Conference on, Lyon, France, 2015
https://github.com/MarekKowalski/LiveScan3D
Displaying a Point Cloud Using Scene Depth
https://developer.apple.com/documentation/arkit/environmental_analysis/displaying_a_point_cloud_usin
g_scene_depth
iPad LiDAR Depth Sample for Unity
https://github.com/TakashiYoshinaga/iPad-LiDAR-Depth-Sample-for-Unity
Prof. Mark Billinghurst - COMP 4010: Virtual Reality lectures – Introduction to XR
https://www.slideshare.net/marknb00/comp-4010-2010-lecture1introduction-to-xr
References
Prof. Mark Billinghurst - COMP 4010: Virtual Reality lectures – Research directions
https://www.slideshare.net/marknb00/comp4010-lecture12-research-directions
Thanks
Davide Zordan
B: https://davide.dev
E: mail@davide.dev
T: @DavideZordan

More Related Content

What's hot

3D in Android
3D in Android3D in Android
3D in Android
Wen Jiun Yap
 
Mobile Augmented Reality Development tools
Mobile Augmented Reality Development toolsMobile Augmented Reality Development tools
Mobile Augmented Reality Development tools
Thiwanka Makumburage
 
Easy Virtual Reality
Easy Virtual RealityEasy Virtual Reality
Easy Virtual Reality
Mark Billinghurst
 
Building VR Applications For Google Cardboard
Building VR Applications For Google CardboardBuilding VR Applications For Google Cardboard
Building VR Applications For Google Cardboard
Mark Billinghurst
 
Immerge yourself in a new Reality
Immerge yourself in a new RealityImmerge yourself in a new Reality
Immerge yourself in a new Reality
Matteo Valoriani
 
Immerge yourself in a new Reality - Alessandro Pozone - Codemotion Rome 2018
Immerge yourself in a new Reality - Alessandro Pozone - Codemotion Rome 2018Immerge yourself in a new Reality - Alessandro Pozone - Codemotion Rome 2018
Immerge yourself in a new Reality - Alessandro Pozone - Codemotion Rome 2018
Codemotion
 
Mobile AR SDK Tutorial - Augmented World Expo New York 2014
Mobile AR SDK Tutorial - Augmented World Expo New York 2014Mobile AR SDK Tutorial - Augmented World Expo New York 2014
Mobile AR SDK Tutorial - Augmented World Expo New York 2014
Patrick O'Shaughnessey
 
Mobile AR Lecture 7 - Introduction to Vuforia
Mobile AR Lecture 7 - Introduction to VuforiaMobile AR Lecture 7 - Introduction to Vuforia
Mobile AR Lecture 7 - Introduction to Vuforia
Mark Billinghurst
 
2016 AR Summer School - Lecture 5
2016 AR Summer School - Lecture 52016 AR Summer School - Lecture 5
2016 AR Summer School - Lecture 5
Mark Billinghurst
 
Market Based Analysis of Virtual Reality Products - IT Strategy
Market Based Analysis of Virtual Reality Products - IT StrategyMarket Based Analysis of Virtual Reality Products - IT Strategy
Market Based Analysis of Virtual Reality Products - IT Strategy
MohitMhapuskar
 
REALITY: We can be whoever we want - Avatar driven metaverse service and UX R...
REALITY: We can be whoever we want - Avatar driven metaverse service and UX R...REALITY: We can be whoever we want - Avatar driven metaverse service and UX R...
REALITY: We can be whoever we want - Avatar driven metaverse service and UX R...
GREE VR Studio Lab
 
Introduction to development
Introduction to developmentIntroduction to development
Introduction to development
Matteo Valoriani
 
VR - Creating the ultimate reality
VR - Creating the ultimate realityVR - Creating the ultimate reality
VR - Creating the ultimate reality
Sebastien Kuntz
 
Handout: 'Future of Augmented & Virtual Reality' (BDPA Cincinnati, Oct 2015)
Handout: 'Future of Augmented & Virtual Reality' (BDPA Cincinnati, Oct 2015)Handout: 'Future of Augmented & Virtual Reality' (BDPA Cincinnati, Oct 2015)
Handout: 'Future of Augmented & Virtual Reality' (BDPA Cincinnati, Oct 2015)
BDPA Education and Technology Foundation
 
Storytelling using Immersive Technologies
Storytelling using Immersive TechnologiesStorytelling using Immersive Technologies
Storytelling using Immersive Technologies
Kumar Ahir
 
Mobile AR Lecture1-introduction
Mobile AR Lecture1-introductionMobile AR Lecture1-introduction
Mobile AR Lecture1-introduction
Mark Billinghurst
 
426 lecture2: AR Technology
426 lecture2: AR Technology426 lecture2: AR Technology
426 lecture2: AR Technology
Mark Billinghurst
 

What's hot (18)

3D in Android
3D in Android3D in Android
3D in Android
 
Mobile Augmented Reality Development tools
Mobile Augmented Reality Development toolsMobile Augmented Reality Development tools
Mobile Augmented Reality Development tools
 
Easy Virtual Reality
Easy Virtual RealityEasy Virtual Reality
Easy Virtual Reality
 
Building VR Applications For Google Cardboard
Building VR Applications For Google CardboardBuilding VR Applications For Google Cardboard
Building VR Applications For Google Cardboard
 
Immerge yourself in a new Reality
Immerge yourself in a new RealityImmerge yourself in a new Reality
Immerge yourself in a new Reality
 
Immerge yourself in a new Reality - Alessandro Pozone - Codemotion Rome 2018
Immerge yourself in a new Reality - Alessandro Pozone - Codemotion Rome 2018Immerge yourself in a new Reality - Alessandro Pozone - Codemotion Rome 2018
Immerge yourself in a new Reality - Alessandro Pozone - Codemotion Rome 2018
 
Mobile AR SDK Tutorial - Augmented World Expo New York 2014
Mobile AR SDK Tutorial - Augmented World Expo New York 2014Mobile AR SDK Tutorial - Augmented World Expo New York 2014
Mobile AR SDK Tutorial - Augmented World Expo New York 2014
 
virtual_chess
virtual_chessvirtual_chess
virtual_chess
 
Mobile AR Lecture 7 - Introduction to Vuforia
Mobile AR Lecture 7 - Introduction to VuforiaMobile AR Lecture 7 - Introduction to Vuforia
Mobile AR Lecture 7 - Introduction to Vuforia
 
2016 AR Summer School - Lecture 5
2016 AR Summer School - Lecture 52016 AR Summer School - Lecture 5
2016 AR Summer School - Lecture 5
 
Market Based Analysis of Virtual Reality Products - IT Strategy
Market Based Analysis of Virtual Reality Products - IT StrategyMarket Based Analysis of Virtual Reality Products - IT Strategy
Market Based Analysis of Virtual Reality Products - IT Strategy
 
REALITY: We can be whoever we want - Avatar driven metaverse service and UX R...
REALITY: We can be whoever we want - Avatar driven metaverse service and UX R...REALITY: We can be whoever we want - Avatar driven metaverse service and UX R...
REALITY: We can be whoever we want - Avatar driven metaverse service and UX R...
 
Introduction to development
Introduction to developmentIntroduction to development
Introduction to development
 
VR - Creating the ultimate reality
VR - Creating the ultimate realityVR - Creating the ultimate reality
VR - Creating the ultimate reality
 
Handout: 'Future of Augmented & Virtual Reality' (BDPA Cincinnati, Oct 2015)
Handout: 'Future of Augmented & Virtual Reality' (BDPA Cincinnati, Oct 2015)Handout: 'Future of Augmented & Virtual Reality' (BDPA Cincinnati, Oct 2015)
Handout: 'Future of Augmented & Virtual Reality' (BDPA Cincinnati, Oct 2015)
 
Storytelling using Immersive Technologies
Storytelling using Immersive TechnologiesStorytelling using Immersive Technologies
Storytelling using Immersive Technologies
 
Mobile AR Lecture1-introduction
Mobile AR Lecture1-introductionMobile AR Lecture1-introduction
Mobile AR Lecture1-introduction
 
426 lecture2: AR Technology
426 lecture2: AR Technology426 lecture2: AR Technology
426 lecture2: AR Technology
 

Similar to Getting started with Unity and AR/VR for the .NET developer... Reloaded!

Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
azuredayit
 
Getting Started with Point Clouds Visualisation and AR/VR
Getting Started with Point Clouds Visualisation and AR/VRGetting Started with Point Clouds Visualisation and AR/VR
Getting Started with Point Clouds Visualisation and AR/VR
Davide Zordan
 
Let’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and moreLet’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and more
Unity Technologies
 
Augmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real worldAugmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real world
Unity Technologies
 
VR/AR introduction & state-of-the-art VR/AR prototyping
VR/AR introduction & state-of-the-art VR/AR prototypingVR/AR introduction & state-of-the-art VR/AR prototyping
VR/AR introduction & state-of-the-art VR/AR prototyping
Valentijn Destoop
 
HoloLens.pdf
HoloLens.pdfHoloLens.pdf
HoloLens.pdf
Vishwas N
 
Create Your Own VR Experience
Create Your Own VR ExperienceCreate Your Own VR Experience
Create Your Own VR Experience
Mark Billinghurst
 
AR and VR development tools and platforms
AR and VR development tools and platformsAR and VR development tools and platforms
AR and VR development tools and platforms
Sushmita Chatterjee
 
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
Unity Technologies
 
Building AR and VR Experiences for Web Apps with JavaScript
Building AR and VR Experiences for Web Apps with JavaScriptBuilding AR and VR Experiences for Web Apps with JavaScript
Building AR and VR Experiences for Web Apps with JavaScript
FITC
 
SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
SEARIS 2014 Keynote - MiddleVR - Philosophy and architectureSEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
Sebastien Kuntz
 
Making Augmented Reality Applications with Android NDK
Making Augmented Reality Applications with Android NDKMaking Augmented Reality Applications with Android NDK
Making Augmented Reality Applications with Android NDK
Evren Coşkun
 
The Wikitude SDK and the Wikitude Studio
The Wikitude SDK and the Wikitude StudioThe Wikitude SDK and the Wikitude Studio
The Wikitude SDK and the Wikitude Studio
Martin Lechner
 
Building the Matrix: Your First VR App (SVCC 2016)
Building the Matrix: Your First VR App (SVCC 2016)Building the Matrix: Your First VR App (SVCC 2016)
Building the Matrix: Your First VR App (SVCC 2016)
Liv Erickson
 
Augmented Reality Games
Augmented Reality GamesAugmented Reality Games
Augmented Reality Games
Game Developer Arek Suroboyo
 
Synthetic environment
Synthetic environmentSynthetic environment
Synthetic environment
Ullas Gupta
 
EoT slides presented at the Road2CPS “Smart-Cyber-Physical Systems Clustering...
EoT slides presented at the Road2CPS “Smart-Cyber-Physical Systems Clustering...EoT slides presented at the Road2CPS “Smart-Cyber-Physical Systems Clustering...
EoT slides presented at the Road2CPS “Smart-Cyber-Physical Systems Clustering...
Eyes of Things
 
Virtual, Augmented, and Hybrid Reality
Virtual, Augmented, and Hybrid RealityVirtual, Augmented, and Hybrid Reality
Virtual, Augmented, and Hybrid RealityCathleen Galas
 
2022 COMP4010 Lecture 6: Designing AR Systems
2022 COMP4010 Lecture 6: Designing AR Systems2022 COMP4010 Lecture 6: Designing AR Systems
2022 COMP4010 Lecture 6: Designing AR Systems
Mark Billinghurst
 
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for UnityBuilding Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
Nick Landry
 

Similar to Getting started with Unity and AR/VR for the .NET developer... Reloaded! (20)

Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
 
Getting Started with Point Clouds Visualisation and AR/VR
Getting Started with Point Clouds Visualisation and AR/VRGetting Started with Point Clouds Visualisation and AR/VR
Getting Started with Point Clouds Visualisation and AR/VR
 
Let’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and moreLet’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and more
 
Augmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real worldAugmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real world
 
VR/AR introduction & state-of-the-art VR/AR prototyping
VR/AR introduction & state-of-the-art VR/AR prototypingVR/AR introduction & state-of-the-art VR/AR prototyping
VR/AR introduction & state-of-the-art VR/AR prototyping
 
HoloLens.pdf
HoloLens.pdfHoloLens.pdf
HoloLens.pdf
 
Create Your Own VR Experience
Create Your Own VR ExperienceCreate Your Own VR Experience
Create Your Own VR Experience
 
AR and VR development tools and platforms
AR and VR development tools and platformsAR and VR development tools and platforms
AR and VR development tools and platforms
 
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
 
Building AR and VR Experiences for Web Apps with JavaScript
Building AR and VR Experiences for Web Apps with JavaScriptBuilding AR and VR Experiences for Web Apps with JavaScript
Building AR and VR Experiences for Web Apps with JavaScript
 
SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
SEARIS 2014 Keynote - MiddleVR - Philosophy and architectureSEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
 
Making Augmented Reality Applications with Android NDK
Making Augmented Reality Applications with Android NDKMaking Augmented Reality Applications with Android NDK
Making Augmented Reality Applications with Android NDK
 
The Wikitude SDK and the Wikitude Studio
The Wikitude SDK and the Wikitude StudioThe Wikitude SDK and the Wikitude Studio
The Wikitude SDK and the Wikitude Studio
 
Building the Matrix: Your First VR App (SVCC 2016)
Building the Matrix: Your First VR App (SVCC 2016)Building the Matrix: Your First VR App (SVCC 2016)
Building the Matrix: Your First VR App (SVCC 2016)
 
Augmented Reality Games
Augmented Reality GamesAugmented Reality Games
Augmented Reality Games
 
Synthetic environment
Synthetic environmentSynthetic environment
Synthetic environment
 
EoT slides presented at the Road2CPS “Smart-Cyber-Physical Systems Clustering...
EoT slides presented at the Road2CPS “Smart-Cyber-Physical Systems Clustering...EoT slides presented at the Road2CPS “Smart-Cyber-Physical Systems Clustering...
EoT slides presented at the Road2CPS “Smart-Cyber-Physical Systems Clustering...
 
Virtual, Augmented, and Hybrid Reality
Virtual, Augmented, and Hybrid RealityVirtual, Augmented, and Hybrid Reality
Virtual, Augmented, and Hybrid Reality
 
2022 COMP4010 Lecture 6: Designing AR Systems
2022 COMP4010 Lecture 6: Designing AR Systems2022 COMP4010 Lecture 6: Designing AR Systems
2022 COMP4010 Lecture 6: Designing AR Systems
 
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for UnityBuilding Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
 

Recently uploaded

Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 

Recently uploaded (20)

Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 

Getting started with Unity and AR/VR for the .NET developer... Reloaded!

  • 1. Getting started with Unity and AR/VR for the .NET developer… Reloaded! Davide Zordan B: https://davide.dev E: mail@davide.dev T: @DavideZordan
  • 2. Davide Zordan Senior software engineer MCSD, MCSA, MS, MCP Microsoft MVP (2009-2014)
  • 3. Agenda Introduction to Mixed Reality VR interactions and locomotion using Unity and SteamVR Enabling Oculus Quest passthrough Telepresence using points cloud Hand-tracking
  • 4. What is Mixed Reality?
  • 5. The state of things as they “actually exist” through our human senses without any technology. Artificially created sensory experiences of people, environments and objects, which can include sight, touch, hearing, and smell. PHYSICAL REALITY VIRTUAL REALITY
  • 7. PHYSICAL REALITY DIGITAL REALITY MIXED REALITY (MR) Windows Mixed Reality Holographic Devices (see-through) / Magic Leap / Nreal Light / RealWare HMT-1 / LYNX-R / Meta Project Aria, Project Cambria / Varjo Oculus Quest 2 / HTC VIVE - Cosmos / Valve Index / Windows Mixed Reality Immersive Devices (Opaque) / Varjo AR TODAY VR TODAY Physical - Digital Reality Spectrum *The term mixed reality was originally introduced in a 1994 paper by Paul Milgram and Fumio Kishino, "A Taxonomy of Mixed Reality Visual Displays."
  • 8. How can we design for AR/VR?
  • 9. Designing great VR experiences Place illusion Plausibility illusion Embodiment illusion Source: https://www.coursera.org/lecture/introduction-virtual-reality/introduction-to-plausibility-illusion-psi-K5PGj
  • 10.
  • 11. A new way to interact
  • 12. Gaze Gesture Voice Motion control World coordinates Spatial audio Spatial mapping Hand-tracking Eye-tracking
  • 15. DEMO VR locomotion and custom interactions
  • 16.
  • 17. 1 – Using the SteamVR controllers bindings
  • 20. 1 – Creating a VR headset manager
  • 21. 2 – Initialising device-specific settings
  • 22. Adding vocal commands: • Unity KeywordRecognizer • Natural Language Understanding … available online at https://davide.dev/blog
  • 23. DEMO Basic selection and interactions
  • 24.
  • 26. 1 - Mark not moving objects as static
  • 27. 2 – Reduce the number of draw calls - baked lights
  • 28. 3 – Reduce the number of draw calls • Combine meshes and materials • Some Unity plugins available in the asset store can help
  • 29. 4 – Avoid not performant code at runtime
  • 30. 5 – Reduce max polys count in scenes • Mobile devices: ~200,000 • Desktop VR: ~1,000,000 • Do not draw polys that cannot be seen by the user
  • 31. 6 – Optimise garbage collection • Try to avoid the GC while a scene is running • Unity now allows incremental garbage collection
  • 32. 7 – Use object pooling • Try to not instantiate objects at runtime but reuse instanced using object pooling https://github.com/davidezordan/PerformanceBounceback/blob/master/PerformanceBounceback
  • 33. Using Oculus Quest passthrough APIs
  • 35. What are passthrough APIs? https://developer.oculus.com/experimental/passthrough-api/ • Passthrough APIs must be enabled using experimental features using adb: adb shell setprop debug.oculus.experimentalEnabled 1 • Must be enabled in the OVR Manager script of the OVRCameraRig: • Require additional passthrough script: • Enable development of pass-through experiences using Quest • New SDKs recently announced (Voice, Hands manipulations)
  • 36.
  • 38. Collaboration • Facebook Horizon Worlds Social experience https://www.oculus.com/facebook-horizon/ • Facebook Horizon Workrooms Collaboration experience for meetings https://about.fb.com/news/2021/08/introducing-horizon- workrooms-remote-collaboration-reimagined/ • Microsoft Mesh Virtual collaboration / Holoportation https://www.microsoft.com/en-us/mesh Source: https://techcommunity.microsoft.com/t5/mixed-reality-blog/microsoft-mesh-app-august-2021-update-new-features/ba-p/2746856
  • 39. Telepresence • Requires a sensor like Kinect for capturing colors and depth data from cameras. • Captured data (e.g., arrays of Vector3[] / Color[]) can be transmitted over the network via sockets. • Requires a PC to act as a server. • A full implementation is available here: Kowalski, M.; Naruniec, J.; Daniluk, M.: "LiveScan3D: A Fast and Inexpensive 3D Data Acquisition System for Multiple Kinect v2 Sensors". in 3D Vision (3DV), 2015 International Conference on, Lyon, France, 2015 https://github.com/MarekKowalski/LiveScan3D • Further improvements could include audio streaming, usage of other protocols (e.g. WebRTC) • Streaming point clouds to AR/VR devices
  • 40. LiveScan 3D project: https://github.com/MarekKowalski/LiveScan3D
  • 41. Adapted from LiveScan 3D HoloLens project: https://github.com/MarekKowalski/LiveScan3D-Hololens
  • 42. Adapted from LiveScan 3D HoloLens project: https://github.com/MarekKowalski/LiveScan3D-Hololens
  • 43.
  • 45. Mixed Reality Toolkit for Unity • https://aka.ms/MRTK MRTK extensions for Oculus Quest • https://github.com/HoloLabInc/MRTKExtensionForOculu sQuest • https://github.com/provencher/MRTK-Quest
  • 46. Interactions SDK for Oculus Quest (available 2022) Source: Facebook Connect 2021 - https://www.facebookconnect.com/en-gb/
  • 47. DEMO Hand tracking using Oculus Quest and Mixed Reality Toolkit
  • 48.
  • 49. Enhancing the experience using Mixed Reality services
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56. Microsoft Azure mixed reality services: • Remote rendering • Spatial anchors • Object anchors
  • 57. Summary What is Mixed Reality Why Mixed Reality How to develop for AR/VR VR Interactions / Locomotion Performance considerations Using Oculus passthrough mode Telepresence Developing for AR Mixed Reality Services
  • 58. Key takeaways: Check performance early and often to avoid motion sickness Design properly the experience for maximising the user immersion Use cloud services to enhance the user experience (speech, vision, anchors) Collaboration using AR/VR is an important topic which requires research
  • 59. “Any sufficiently advanced technology is indistinguishable from magic” Arthur C. Clark, Profiles of the future, 1961
  • 60. References AR / VR / Mixed Reality samples https://github.com/davidezordan SteamVR Unity plugin https://github.com/ValveSoftware/steamvr_unity_plugin Mixed Reality Toolkit https://aka.ms/MRTK Unity XR Interaction Toolkit https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@0.9/manual/index.html Unity XR Interaction Toolkit examples https://github.com/Unity-Technologies/XR-Interaction-Toolkit-Examples Goldman Sachs VR/AR report https://www.goldmansachs.com/insights/pages/virtual-and-augmented-reality-report.html
  • 61. References Coursera “Introduction to Virtual Reality” https://www.coursera.org/lecture/introduction-virtual-reality/introduction-to-plausibility-illusion-psi-K5PGj Cognitive Services https://azure.microsoft.com/en-us/services/cognitive-services Oculus VR performance optimization guide https://developer.oculus.com/documentation/pcsdk/latest/concepts/dg-performance-opt-guide Mixed Reality Academy and Azure Services tutorial https://docs.microsoft.com/en-us/windows/mixed-reality/tutorials Unity: the most common mistakes to avoid https://unity3d.com/how-to/unity-common-mistakes-to-avoid Microsoft Ignite https://8gportalvhdsf9v440s15hrt.blob.core.windows.net/ignite2017/session-presentations/BRK2404.PPTX
  • 62. References Oculus passthrough APIs https://developer.oculus.com/experimental/passthrough-api/ Kowalski, M.; Naruniec, J.; Daniluk, M.: "LiveScan3D: A Fast and Inexpensive 3D Data Acquisition System for Multiple Kinect v2 Sensors". in 3D Vision (3DV), 2015 International Conference on, Lyon, France, 2015 https://github.com/MarekKowalski/LiveScan3D Displaying a Point Cloud Using Scene Depth https://developer.apple.com/documentation/arkit/environmental_analysis/displaying_a_point_cloud_usin g_scene_depth iPad LiDAR Depth Sample for Unity https://github.com/TakashiYoshinaga/iPad-LiDAR-Depth-Sample-for-Unity Prof. Mark Billinghurst - COMP 4010: Virtual Reality lectures – Introduction to XR https://www.slideshare.net/marknb00/comp-4010-2010-lecture1introduction-to-xr
  • 63. References Prof. Mark Billinghurst - COMP 4010: Virtual Reality lectures – Research directions https://www.slideshare.net/marknb00/comp4010-lecture12-research-directions
  • 64. Thanks Davide Zordan B: https://davide.dev E: mail@davide.dev T: @DavideZordan