SlideShare a Scribd company logo
Mario Bodemann
Android and Java Evangelist
@mariobodemann
@contentful
Virtual Reality in Android
API driven CMS, emphasis on content creation and delivery.
Virtual Reality in Android
Using Cardboard
What is
Cardboard?
● Easy to produce
● Available from
different companies
and in different
shapes
● can have a
button/lever/hole for
interaction
● only needs a smart
phone (Android/ios)
and an App
How does it work?
● Use 3D data and
movement to draw
two images: left and
right eye
● Distort images for
lenses
● Combine image to
scene in brain
Programming Cardboard
How do I program Cardboard?
https://developers.google.com/cardboard/android/
● SDKs available for
● Java
○ OpenGL
○ Pure Android
● Unity Plugin
○ Unity Engine (C# /JS)
○ Platform independent
○ No reliable linux development available
● Demo app
○ Find a box and
press the button
○ On github
● Library
○ jar distributed
with demo
repository
○ no maven
repository
How To: Android
Demo
https://github.com/googlesamples/cardboard-java
Setup of the demo
Activity
Model
Repository
OpenGL
Interaction
● All code in one
Activity
○ OpenGL code
○ Model creation
● Hard to expand on
Expanding on the demo
● App using above
code as base
● Expanding it to new
use cases
● Having fun exploring
Contentful
Cardboard Idea
https://github.com/contentful-labs/contentful-cardboard
https://play.google.com/apps/testing/com.contentful.cardboard
MVPR
Presenter
Model
Repository
OpenGL
Interaction
Interactor
Activity
(View)
VR
Renderer
● Split Activity into
several parts
● Improve modularity
● Improve testability
● Improve readability
● Improve line number
count ;)
Interactor
● Repository
abstraction
● Uses registered
Listener to inform
Presenter
● Live time of the
Presenter
public interface Interactor {
interface Listener {
void onModelReceived(ProtoModel model);
void onError(Throwable throwable);
}
void setListener(Listener listener);
void requestModels();
}
Presenter
● Coordinates
Interactor and View
● Enriches data from
Interactor
● Tells View to update
its models
public class Presenter implements
Interactor.Listener {
// … setup
private int received = 0;
@Override public void onModelReceived
(ProtoModel model) {
model.position[0] += received * 4.0f;
received++;
view.addProtoModel(model);
}
View
● Connects Renderer
and Presenter
● Takes models and
enqueues them in
the renderer
● Startup point for
Android app
● Deals with
interaction
public class MainActivity
extends CardboardActivity
implements CardboardView.StereoRenderer,
View {
@Override
public void onCreate(…) {
renderer = new CardboardRenderer(
getApplicationContext());
presenter = new Presenter(
new ContentfulInteractor(this));
presenter.bind(this);
}
@Override
public void onCardboardTrigger() {
vibrator.vibrate(25);
userInteracted();
View (cont.)
● Listens to Cardboard
Library callbacks
● For setup of a frame
● And rendering every
eye, redirecting it to
the renderer
@Override
public void onSurfaceCreated(…) {
renderer.surfaceCreated();
}
@Override
public void onNewFrame(
HeadTransform headTransform) {
renderer.prepare();
}
@Override
public void onDrawEye(Eye eye) {
float[] perspective = eye.getPerspective
(Z_NEAR, Z_FAR);
float[] eyeView = eye.getEyeView();
renderer.render(perspective, eyeView);
}
Renderer public class CardboardRenderer implements
Renderer {
@Override public void surfaceCreated() {
addFloorAndCeiling();
}
@Override public void prepare() {
addPendingModels();
glEnable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
// … More gl* calls
}
● Abstracts from
OpenGL rendering
● Generates OpenGL
GPU Models
● Listens to View
@Override
public void render(float[] perspective,
float[] eyeView) {
multiplyMM(view, 0, eyeView, 0, camera,
0);
for (final Model model :
backgroundModels) {
renderModel(perspective, model);
}
for (final Model model :
foregroundModels) {
renderModel(perspective, model);
}
}
Renderer (cont.)
● Render all models
added
● Starting with
background objects,
since foreground
objects contain
transparency
Advantage of new system
Sample Challenge: How to change a texture?
● Change file
● Rerun tooling
● Re releasing new version in store
● Convince user to update
● Need technical person
● Potentially through several iterations
Purposal:
Using A CMS
● Change a asset
online
● Restart app to resync
data (done at
startup?)
● User only needs
network
● Can be done by non
technical person
Using A CMS
● Everything except for
the grid comes from
CMS
● Changing it with drag
and drop
● Changing VR content
from outside
Future
● Unit tests?
● Provide different Renderer VR/classic/engine code?
● CMS for Shader?
● A/B testing of in assets?
● Your ideas?
Future
Recap
Recap
● Cardboard is relatively easy to program and use
● Expanding from Google Demo is the key to success
● Using a CMS for VR
Questions and Answers

More Related Content

Viewers also liked

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
 
Как развить компанию, развивая себя (RU)
Как развить компанию, развивая себя (RU)Как развить компанию, развивая себя (RU)
Как развить компанию, развивая себя (RU)
Elena Lobova
 
COMP 4026 Lecture2: Design and Prototype
COMP 4026 Lecture2: Design and PrototypeCOMP 4026 Lecture2: Design and Prototype
COMP 4026 Lecture2: Design and Prototype
Mark Billinghurst
 
Royal Institution CS Materclass - Mobile/VR development
Royal Institution CS Materclass - Mobile/VR developmentRoyal Institution CS Materclass - Mobile/VR development
Royal Institution CS Materclass - Mobile/VR development
David Bell
 
Google cardboard
Google cardboardGoogle cardboard
Google cardboard
malunegivinu
 
Virtual reality startup in practice
Virtual reality startup in practiceVirtual reality startup in practice
Virtual reality startup in practice
marineverse
 
VR hardware & development
VR hardware & developmentVR hardware & development
VR hardware & development
Casper Fabricius
 
The Top 10 Lessons We Learned Moving Our Mobile Game to VR | Guy Bendov
The Top 10 Lessons We Learned Moving Our Mobile Game to VR | Guy BendovThe Top 10 Lessons We Learned Moving Our Mobile Game to VR | Guy Bendov
The Top 10 Lessons We Learned Moving Our Mobile Game to VR | Guy Bendov
Jessica Tams
 
VR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部ver
VR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部verVR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部ver
VR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部ver
Yuuki Ogino
 
Build HTML5 VR Apps using Intel® XDK
Build HTML5 VR Apps using Intel® XDKBuild HTML5 VR Apps using Intel® XDK
Build HTML5 VR Apps using Intel® XDK
Intel® Software
 
Developing Your First Mobile VR App by NJ Realubit
Developing Your First Mobile VR App by NJ RealubitDeveloping Your First Mobile VR App by NJ Realubit
Developing Your First Mobile VR App by NJ Realubit
DEVCON
 
COMP 4010 Lecture5 VR Audio and Tracking
COMP 4010 Lecture5 VR Audio and TrackingCOMP 4010 Lecture5 VR Audio and Tracking
COMP 4010 Lecture5 VR Audio and Tracking
Mark Billinghurst
 
Designing Outstanding AR Experiences
Designing Outstanding AR ExperiencesDesigning Outstanding AR Experiences
Designing Outstanding AR Experiences
Mark Billinghurst
 
Google Daydream VR
Google Daydream VRGoogle Daydream VR
VR, AI & The Future of Mobile
VR, AI & The Future of Mobile VR, AI & The Future of Mobile
VR, AI & The Future of Mobile
Helen Keegan
 
VR: The Future Is Now?
VR: The Future Is Now?VR: The Future Is Now?
VR: The Future Is Now?
Elena Lobova
 
AR-VR Workshop
AR-VR WorkshopAR-VR Workshop
AR-VR Workshop
Mark Billinghurst
 
Virtual Reality 2.0
Virtual Reality 2.0Virtual Reality 2.0
Virtual Reality 2.0
Mark Billinghurst
 

Viewers also liked (20)

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)
 
Как развить компанию, развивая себя (RU)
Как развить компанию, развивая себя (RU)Как развить компанию, развивая себя (RU)
Как развить компанию, развивая себя (RU)
 
อ้างอิง
อ้างอิงอ้างอิง
อ้างอิง
 
COMP 4026 Lecture2: Design and Prototype
COMP 4026 Lecture2: Design and PrototypeCOMP 4026 Lecture2: Design and Prototype
COMP 4026 Lecture2: Design and Prototype
 
Royal Institution CS Materclass - Mobile/VR development
Royal Institution CS Materclass - Mobile/VR developmentRoyal Institution CS Materclass - Mobile/VR development
Royal Institution CS Materclass - Mobile/VR development
 
Google cardboard
Google cardboardGoogle cardboard
Google cardboard
 
Virtual reality startup in practice
Virtual reality startup in practiceVirtual reality startup in practice
Virtual reality startup in practice
 
VR hardware & development
VR hardware & developmentVR hardware & development
VR hardware & development
 
Relaciones funciones
Relaciones funciones Relaciones funciones
Relaciones funciones
 
The Top 10 Lessons We Learned Moving Our Mobile Game to VR | Guy Bendov
The Top 10 Lessons We Learned Moving Our Mobile Game to VR | Guy BendovThe Top 10 Lessons We Learned Moving Our Mobile Game to VR | Guy Bendov
The Top 10 Lessons We Learned Moving Our Mobile Game to VR | Guy Bendov
 
VR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部ver
VR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部verVR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部ver
VR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部ver
 
Build HTML5 VR Apps using Intel® XDK
Build HTML5 VR Apps using Intel® XDKBuild HTML5 VR Apps using Intel® XDK
Build HTML5 VR Apps using Intel® XDK
 
Developing Your First Mobile VR App by NJ Realubit
Developing Your First Mobile VR App by NJ RealubitDeveloping Your First Mobile VR App by NJ Realubit
Developing Your First Mobile VR App by NJ Realubit
 
COMP 4010 Lecture5 VR Audio and Tracking
COMP 4010 Lecture5 VR Audio and TrackingCOMP 4010 Lecture5 VR Audio and Tracking
COMP 4010 Lecture5 VR Audio and Tracking
 
Designing Outstanding AR Experiences
Designing Outstanding AR ExperiencesDesigning Outstanding AR Experiences
Designing Outstanding AR Experiences
 
Google Daydream VR
Google Daydream VRGoogle Daydream VR
Google Daydream VR
 
VR, AI & The Future of Mobile
VR, AI & The Future of Mobile VR, AI & The Future of Mobile
VR, AI & The Future of Mobile
 
VR: The Future Is Now?
VR: The Future Is Now?VR: The Future Is Now?
VR: The Future Is Now?
 
AR-VR Workshop
AR-VR WorkshopAR-VR Workshop
AR-VR Workshop
 
Virtual Reality 2.0
Virtual Reality 2.0Virtual Reality 2.0
Virtual Reality 2.0
 

Similar to Virtual Reality in Android

Virtual Reality Application Development on Android using Google Cardboard
Virtual Reality Application Development on Android using Google CardboardVirtual Reality Application Development on Android using Google Cardboard
Virtual Reality Application Development on Android using Google Cardboard
Apurv Nigam
 
Developing Virtual Reality Application using Google Cardboard
Developing Virtual Reality Application using Google CardboardDeveloping Virtual Reality Application using Google Cardboard
Developing Virtual Reality Application using Google Cardboard
apurvmmmec
 
Getting Started With Material Design
Getting Started With Material DesignGetting Started With Material Design
Getting Started With Material Design
Yasin Yildirim
 
Lecture 6 introduction to open gl and glut
Lecture 6   introduction to open gl and glutLecture 6   introduction to open gl and glut
Lecture 6 introduction to open gl and glut
simpleok
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGL
Globant
 
Android Made Simple
Android Made SimpleAndroid Made Simple
Android Made Simple
Gabriel Dogaru
 
Google Glass Development Kit - Developer Zone
Google Glass Development Kit - Developer ZoneGoogle Glass Development Kit - Developer Zone
Google Glass Development Kit - Developer Zone
Utpal Betai
 
Tools for developing Android Games
 Tools for developing Android Games Tools for developing Android Games
Tools for developing Android Games
Platty Soft
 
Getting started with Verold and Three.js
Getting started with Verold and Three.jsGetting started with Verold and Three.js
Getting started with Verold and Three.jsVerold
 
Ball Collecting game report
Ball Collecting game report Ball Collecting game report
Ball Collecting game report
Dileep Maurya
 
Google I/O 2019 - what's new in Android Q and Jetpack
Google I/O 2019 - what's new in Android Q and JetpackGoogle I/O 2019 - what's new in Android Q and Jetpack
Google I/O 2019 - what's new in Android Q and Jetpack
Sunita Singh
 
Visage Android Hands-on Lab
Visage Android Hands-on LabVisage Android Hands-on Lab
Visage Android Hands-on Lab
Stephen Chin
 
State of the Art OpenGL and Qt
State of the Art OpenGL and QtState of the Art OpenGL and Qt
State of the Art OpenGL and Qt
ICS
 
Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
eMan s.r.o.
 
Philipp Nagele (Wikitude): What's Next with Wikitude
Philipp Nagele (Wikitude): What's Next with WikitudePhilipp Nagele (Wikitude): What's Next with Wikitude
Philipp Nagele (Wikitude): What's Next with Wikitude
AugmentedWorldExpo
 
React Native custom components
React Native custom componentsReact Native custom components
React Native custom components
Jeremy Grancher
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
ICS
 
從零開始學 Android
從零開始學 Android從零開始學 Android
從零開始學 Android
秀吉(Hsiu-Chi) 蔡(Tsai)
 
iOS for Android Developers (with Swift)
iOS for Android Developers (with Swift)iOS for Android Developers (with Swift)
iOS for Android Developers (with Swift)
David Truxall
 
Lab Practices and Works Documentation / Report on Computer Graphics
Lab Practices and Works Documentation / Report on Computer GraphicsLab Practices and Works Documentation / Report on Computer Graphics
Lab Practices and Works Documentation / Report on Computer Graphics
Rup Chowdhury
 

Similar to Virtual Reality in Android (20)

Virtual Reality Application Development on Android using Google Cardboard
Virtual Reality Application Development on Android using Google CardboardVirtual Reality Application Development on Android using Google Cardboard
Virtual Reality Application Development on Android using Google Cardboard
 
Developing Virtual Reality Application using Google Cardboard
Developing Virtual Reality Application using Google CardboardDeveloping Virtual Reality Application using Google Cardboard
Developing Virtual Reality Application using Google Cardboard
 
Getting Started With Material Design
Getting Started With Material DesignGetting Started With Material Design
Getting Started With Material Design
 
Lecture 6 introduction to open gl and glut
Lecture 6   introduction to open gl and glutLecture 6   introduction to open gl and glut
Lecture 6 introduction to open gl and glut
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGL
 
Android Made Simple
Android Made SimpleAndroid Made Simple
Android Made Simple
 
Google Glass Development Kit - Developer Zone
Google Glass Development Kit - Developer ZoneGoogle Glass Development Kit - Developer Zone
Google Glass Development Kit - Developer Zone
 
Tools for developing Android Games
 Tools for developing Android Games Tools for developing Android Games
Tools for developing Android Games
 
Getting started with Verold and Three.js
Getting started with Verold and Three.jsGetting started with Verold and Three.js
Getting started with Verold and Three.js
 
Ball Collecting game report
Ball Collecting game report Ball Collecting game report
Ball Collecting game report
 
Google I/O 2019 - what's new in Android Q and Jetpack
Google I/O 2019 - what's new in Android Q and JetpackGoogle I/O 2019 - what's new in Android Q and Jetpack
Google I/O 2019 - what's new in Android Q and Jetpack
 
Visage Android Hands-on Lab
Visage Android Hands-on LabVisage Android Hands-on Lab
Visage Android Hands-on Lab
 
State of the Art OpenGL and Qt
State of the Art OpenGL and QtState of the Art OpenGL and Qt
State of the Art OpenGL and Qt
 
Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
Jak vyvinout úspěšnou aplikaci pro Google Glass (Martin Pelant, eMan)
 
Philipp Nagele (Wikitude): What's Next with Wikitude
Philipp Nagele (Wikitude): What's Next with WikitudePhilipp Nagele (Wikitude): What's Next with Wikitude
Philipp Nagele (Wikitude): What's Next with Wikitude
 
React Native custom components
React Native custom componentsReact Native custom components
React Native custom components
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
從零開始學 Android
從零開始學 Android從零開始學 Android
從零開始學 Android
 
iOS for Android Developers (with Swift)
iOS for Android Developers (with Swift)iOS for Android Developers (with Swift)
iOS for Android Developers (with Swift)
 
Lab Practices and Works Documentation / Report on Computer Graphics
Lab Practices and Works Documentation / Report on Computer GraphicsLab Practices and Works Documentation / Report on Computer Graphics
Lab Practices and Works Documentation / Report on Computer Graphics
 

Recently uploaded

Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
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
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
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
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
Peter Caitens
 
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
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
MayankTawar1
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
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
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
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
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 

Recently uploaded (20)

Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
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
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
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|...
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
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
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
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...
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 

Virtual Reality in Android

  • 1. Mario Bodemann Android and Java Evangelist @mariobodemann @contentful Virtual Reality in Android
  • 2. API driven CMS, emphasis on content creation and delivery.
  • 3. Virtual Reality in Android Using Cardboard
  • 4. What is Cardboard? ● Easy to produce ● Available from different companies and in different shapes ● can have a button/lever/hole for interaction ● only needs a smart phone (Android/ios) and an App
  • 5. How does it work? ● Use 3D data and movement to draw two images: left and right eye ● Distort images for lenses ● Combine image to scene in brain
  • 7. How do I program Cardboard? https://developers.google.com/cardboard/android/ ● SDKs available for ● Java ○ OpenGL ○ Pure Android ● Unity Plugin ○ Unity Engine (C# /JS) ○ Platform independent ○ No reliable linux development available
  • 8. ● Demo app ○ Find a box and press the button ○ On github ● Library ○ jar distributed with demo repository ○ no maven repository How To: Android Demo https://github.com/googlesamples/cardboard-java
  • 9. Setup of the demo Activity Model Repository OpenGL Interaction ● All code in one Activity ○ OpenGL code ○ Model creation ● Hard to expand on
  • 11. ● App using above code as base ● Expanding it to new use cases ● Having fun exploring Contentful Cardboard Idea https://github.com/contentful-labs/contentful-cardboard https://play.google.com/apps/testing/com.contentful.cardboard
  • 12. MVPR Presenter Model Repository OpenGL Interaction Interactor Activity (View) VR Renderer ● Split Activity into several parts ● Improve modularity ● Improve testability ● Improve readability ● Improve line number count ;)
  • 13. Interactor ● Repository abstraction ● Uses registered Listener to inform Presenter ● Live time of the Presenter public interface Interactor { interface Listener { void onModelReceived(ProtoModel model); void onError(Throwable throwable); } void setListener(Listener listener); void requestModels(); }
  • 14. Presenter ● Coordinates Interactor and View ● Enriches data from Interactor ● Tells View to update its models public class Presenter implements Interactor.Listener { // … setup private int received = 0; @Override public void onModelReceived (ProtoModel model) { model.position[0] += received * 4.0f; received++; view.addProtoModel(model); }
  • 15. View ● Connects Renderer and Presenter ● Takes models and enqueues them in the renderer ● Startup point for Android app ● Deals with interaction public class MainActivity extends CardboardActivity implements CardboardView.StereoRenderer, View { @Override public void onCreate(…) { renderer = new CardboardRenderer( getApplicationContext()); presenter = new Presenter( new ContentfulInteractor(this)); presenter.bind(this); } @Override public void onCardboardTrigger() { vibrator.vibrate(25); userInteracted();
  • 16. View (cont.) ● Listens to Cardboard Library callbacks ● For setup of a frame ● And rendering every eye, redirecting it to the renderer @Override public void onSurfaceCreated(…) { renderer.surfaceCreated(); } @Override public void onNewFrame( HeadTransform headTransform) { renderer.prepare(); } @Override public void onDrawEye(Eye eye) { float[] perspective = eye.getPerspective (Z_NEAR, Z_FAR); float[] eyeView = eye.getEyeView(); renderer.render(perspective, eyeView); }
  • 17. Renderer public class CardboardRenderer implements Renderer { @Override public void surfaceCreated() { addFloorAndCeiling(); } @Override public void prepare() { addPendingModels(); glEnable(GL_DEPTH_TEST); glEnable(GL_BLEND); // … More gl* calls } ● Abstracts from OpenGL rendering ● Generates OpenGL GPU Models ● Listens to View
  • 18. @Override public void render(float[] perspective, float[] eyeView) { multiplyMM(view, 0, eyeView, 0, camera, 0); for (final Model model : backgroundModels) { renderModel(perspective, model); } for (final Model model : foregroundModels) { renderModel(perspective, model); } } Renderer (cont.) ● Render all models added ● Starting with background objects, since foreground objects contain transparency
  • 20. Sample Challenge: How to change a texture? ● Change file ● Rerun tooling ● Re releasing new version in store ● Convince user to update ● Need technical person ● Potentially through several iterations
  • 21. Purposal: Using A CMS ● Change a asset online ● Restart app to resync data (done at startup?) ● User only needs network ● Can be done by non technical person
  • 22. Using A CMS ● Everything except for the grid comes from CMS ● Changing it with drag and drop ● Changing VR content from outside
  • 24. ● Unit tests? ● Provide different Renderer VR/classic/engine code? ● CMS for Shader? ● A/B testing of in assets? ● Your ideas? Future
  • 25. Recap
  • 26. Recap ● Cardboard is relatively easy to program and use ● Expanding from Google Demo is the key to success ● Using a CMS for VR