SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
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

Mais conteúdo relacionado

Destaque

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 PrototypeMark 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 developmentDavid Bell
 
Virtual reality startup in practice
Virtual reality startup in practiceVirtual reality startup in practice
Virtual reality startup in practicemarineverse
 
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 BendovJessica Tams
 
VR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部ver
VR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部verVR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部ver
VR開発しくじり先生。JVRH2016で初めてVR開発、UE4で挑戦 東ゲ部verYuuki 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® XDKIntel® 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 RealubitDEVCON
 
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 TrackingMark Billinghurst
 
Designing Outstanding AR Experiences
Designing Outstanding AR ExperiencesDesigning Outstanding AR Experiences
Designing Outstanding AR ExperiencesMark Billinghurst
 
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
 

Destaque (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
 

Semelhante a VR Content Management with Cardboard and Contentful

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 Cardboardapurvmmmec
 
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 CardboardApurv Nigam
 
Getting Started With Material Design
Getting Started With Material DesignGetting Started With Material Design
Getting Started With Material DesignYasin 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 glutsimpleok
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGLGlobant
 
Google Glass Development Kit - Developer Zone
Google Glass Development Kit - Developer ZoneGoogle Glass Development Kit - Developer Zone
Google Glass Development Kit - Developer ZoneUtpal Betai
 
Tools for developing Android Games
 Tools for developing Android Games Tools for developing Android Games
Tools for developing Android GamesPlatty 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 JetpackSunita Singh
 
Visage Android Hands-on Lab
Visage Android Hands-on LabVisage Android Hands-on Lab
Visage Android Hands-on LabStephen 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 QtICS
 
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 WikitudeAugmentedWorldExpo
 
React Native custom components
React Native custom componentsReact Native custom components
React Native custom componentsJeremy 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 QtICS
 
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 GraphicsRup Chowdhury
 

Semelhante a VR Content Management with Cardboard and Contentful (20)

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

Último

Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
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.
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 

Último (20)

Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
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...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
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...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 

VR Content Management with Cardboard and Contentful

  • 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