DepthLab: Real-time 3D Interaction with Depth Maps for Mobile Augmented Reality
Ruofei Du, Eric Turner, Maksym Dzitsiuk, Luca Prasso, Ivo Duarte,
Jason Dourgarian, Joao Afonso, Jose Pascoal, Josh Gladstone, Nuno Cruces,
Shahram Izadi, Adarsh Kowdle, Konstantine Tsotsos, David Kim
Google | ACM UIST 2020
Introduction
Mobile Augmented Reality
Introduction
Google's ARCore
Introduction
Google's ARCore
Introduction
Mobile Augmented Reality
Introduction
Motivation
Is direct placement and rendering of 3D objects sufficient for realistic AR experiences?
Introduction
Depth Lab
Not always!
Introduction
Depth Lab
Virtual content looks like it’s “pasted on the screen” rather than “in the world”!
Introduction
Motivation
Introduction
Motivation
Introduction
Depth Lab
How can we bring these advanced
features to mobile AR experiences without relying on dedicated sensors or the need for computationally expensive surface reconstruction?
Introduction
Depth Map
Introduction
Depth Lab
•Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 3a, Pixel 3a XL, Pixel 4, Pixel 4 XL | |
Huawei | •Honor 10, Honor V20, Mate 20 Lite, Mate 20, Mate 20 X, Nova 3, Nova 4, P20, P30, P30 Pro |
LG | •G8X ThinQ, V35 ThinQ, V50S ThinQ, V60 ThinQ 5G |
OnePlus | •OnePlus 6, OnePlus 6T, OnePlus 7, OnePlus 7 Pro, OnePlus 7 Pro 5G, OnePlus 7T, OnePlus 7T Pro |
Oppo | •Reno Ace |
Samsung | •Galaxy A80, Galaxy Note8, Galaxy Note9, Galaxy Note10, Galaxy Note10 5G, Galaxy Note10+, Galaxy Note10+ 5G, Galaxy S8, Galaxy S8+, Galaxy S9, Galaxy S9+, Galaxy S10e, Galaxy S10, Galaxy S10+, Galaxy S10 5G, Galaxy S20, Galaxy S20+ 5G, Galaxy S20 Ultra 5G |
Sony | •Xperia XZ2, Xperia XZ2 Compact, Xperia XZ2 Premium, Xperia XZ3 |
Xiaomi | •Pocophone F1 |
|
Introduction
Depth Lab
Is there more to realism than occlusion?
Introduction
Depth Lab
Surface interaction?
Introduction
Depth Lab
Realistic Physics?
Introduction
Depth Lab
Path Planning?
Introduction
Depth Lab
Related Work
Valentin et al.
Introduction
Depth Lab
Introduction
Depth Lab
Introduction
Depth Generation
Introduction
Depth Lab
Related Work
Valentin et al.
Introduction
Depth Lab
Introduction
Depth Lab
Up to 8 meters, with
the best within 0.5m to 5m
Motivation
Gap from raw depth to applications
Introduction
Depth Lab
ARCore
Depth API
DepthLab
Mobile AR developers
Design Process
3 Brainstorming Sessions
3 brainstorming sessions
18 participants
39 aggregated ideas
Design Process
3 Brainstorming Sessions
System
Architecture overview
Data Structure
Depth Array
2D array (160x120 and above) of 16-bit integers
Data Structure
Depth Mesh
Data Structure
Depth Texture
System
Architecture
Localized Depth
Coordinate System Conversion
Localized Depth
Normal Estimation
Localized Depth
Normal Estimation
Localized Depth
Normal Estimation
Localized Depth
Avatar Path Planning
Localized Depth
Rain and Snow
Surface Depth
Use Cases
Surface Depth
Physics collider
Physics with depth mesh.
Surface Depth
Texture decals
Texture decals with depth mesh.
Surface Depth
3D Photo
Projection mapping with depth mesh.
Dense Depth
Depth Texture - Antialiasing
Dense Depth
Real-time relighting
θ
N
L
Dense Depth
Why normal map does not work?
Dense Depth
Real-time relighting
Dense Depth
Real-time relighting
Dense Depth
Real-time relighting
go/realtime-relighting, go/relit
Dense Depth
Wide-aperture effect
Dense Depth
Occlusion-based rendering
Experiments
DepthLab minimum viable application
Experiments
General Profiling of MVP
Experiments
Relighting
Experiments
Aperture effects
Discussion
Deployment with partners
Discussion
Deployment with partners
Discussion
Deployment with partners
Limitations
Design space of dynamic depth
Dynamic Depth? HoloDesk, HyperDepth, Digits, Holoportation for mobile AR?
Envision
Design space of dynamic depth
GitHub
Please feel free to fork!
Play Store
Try it yourself!
DepthLab: Real-time 3D Interaction with Depth Maps for Mobile Augmented Reality
Ruofei Du, Eric Turner, Maksym Dzitsiuk, Luca Prasso, Ivo Duarte,
Jason Dourgarian, Joao Afonso, Jose Pascoal, Josh Gladstone, Nuno Cruces,
Shahram Izadi, Adarsh Kowdle, Konstantine Tsotsos, David Kim
Google | ACM UIST 2020
Thank you!
DepthLab | UIST 2020
Demo
DepthLab | UIST 2020
Introduction
Depth Map
Introduction
Depth Map
Introduction
Depth Lab
Thank you!
www.duruofei.com
Introduction
Depth Lab
Occlusion is a critical component for AR realism!
Correct occlusion helps ground content in reality, and makes virtual objects feel as if they are actually in your space.
Introduction
Motivation
Depth Mesh
Generation
Localized Depth
Avatar Path Planning
Dense Depth
Depth Texture
Introduction
Depth Map
Taxonomy
Depth Usage
Introduction
Depth Map
Introduction
Depth Map
What is ARCore?
02 ARCore Depth API
01 AR Realism: Occlusion, Immersion, & Interaction
03 New Depth Capabilities!
83
02 ARCore Depth API
01 AR Realism: Occlusion, Immersion, & Interaction
03 New Depth Capabilities!
Blend the virtual
with the real
AR in Search animals
Blend the virtual
with the real
Enable AR Realism using �the ARCore Depth API
Occlusion
Immersion
Interaction
Create
occlusion effects
Without occlusion
With occlusion
Transform
your scene
Interact �with
your world
AR Realism
In TikTok
AR Realism
Built into Lens Studio for Snapchat Lenses
Kevaid
Saving Chelon
Quixotical�The Seed: World of Anthrotopia
Snap�Dancing Hotdog
92
02 ARCore Depth API
01 AR Realism: Occlusion, Immersion, & Interaction
03 New Depth Capabilities!
Depth Maps
94
Depth �from Motion
Depth From a Single Camera
No Depth Yet
Depth �from Motion
Depth From a Single Camera
Best Practices
Depth From a Single Camera
Use depth-certified ARCore devices
Minimal movement in the scene
Encourage users to move the device
Depth from 0 to 8 meters
Best accuracy 0.5 to 5 meters
97
try {
Image depthImage
= frame.acquireDepthImage();
doSomething(depthImage);
} catch (NotYetAvailableException e) {
// Depth is not available yet. This is
// normal at the beginning of a session
// before the user has moved around.
}
98
Session session = new Session(/* context= */ this);
Config config = session.getConfig();
if (session.isDepthModeSupported(Config.DepthMode.AUTOMATIC)) {
config.setDepthMode(Config.DepthMode.AUTOMATIC);
} else {
config.setDepthMode(Config.DepthMode.DISABLED);
}
session.configure(config);
More than 360 million devices support the ARCore Depth API
Enhancing Depth
Optimized to give you the best depth
Depth from Motion is fused with state-of-the-art Machine Learning
Depth leverages specialized hardware like a Time-of-Flight sensor when available
02 ARCore Depth API
01 AR Realism: Occlusion, Immersion & Interaction
03 New Depth Capabilities!
Camera Image
3D Point Cloud
Provides a more detailed representation of the geometry of the objects in the scene.
Raw Depth API
New depth capabilities
Camera Image
Raw Depth Image
Depth Image
Confidence Image
New depth capabilities
Raw Depth API
Provides a more detailed representation of the geometry of the objects in the scene.
104
try {
Image rawDepthImage
= frame.acquireRawDepthImage();
Image confidenceImage
= frame.acquireRawDepthConfidenceImage();
doSomething(rawDepthImage, confidenceImage);
} catch (NotYetAvailableException e) {
// Depth is not available yet.
}
3D Live Scanner App
Try it yourself!
PHORIA�ARConnect App
Jam3�
Raw Depth API
New depth capabilities
Uses depth to augment hitTest results and works just like existing hit tests.
Hit Results with Planes
Works best on horizontal, planar surfaces with
good texture
Hit Results with Depth
Gives more results, even �on non-planar or�low-texture areas
Depth �Hit Test
New depth capabilities
107
List<HitResult> hitResultList = frame.hitTest(tap);
for (HitResult hit : hitResultList) {
Trackable trackable = hit.getTrackable();
if (trackable instanceof Plane
|| trackable instanceof Point
|| trackable instanceof DepthPoint) {
doSomething(hit.createAnchor());
}
}
Try it yourself!
TeamViewer�LifeAR App
ARCore�Depth Lab App
Depth �Hit Test
New depth capabilities
ARCore�Depth Lab App
Depth API�Codelab
Raw Depth API�Codelab