SlideShare una empresa de Scribd logo
1 de 114
Sébastien „Cb‟ Kuntz
@Cb_VRGeek
Philosophy and architecture
SEARIS 2014
Plan
• Introduction
• Origin of MiddleVR
• Goals
• Demo
• Philosophy & Architecture
• Conclusion
(French railways)
“Creating Virtual Reality Games:
The Fundamentals”
Founder & President
Sébastien „Cb‟ Kuntz
Zone hunter (Virtuality-1994)
FRENCH RAILWAYS - SNCF
• Polhemus magnetic tracker, treadmill, 5DT Glove
• C++ / OpenSceneGraph / VRPN / OpenAL
FRENCH RAILWAYS - SNCF
VIRTOOLS
VIRTOOLS VR PACK
• VR tools to simplify VR
Virtual reality
Presence in a virtual world
Ridiculous
If it‟s real
VR, you
probably look
ridiculous !
• Build hardware
To create and maintain presence,
you need to ...
• Build software
• Build user experience
The challenges of creating a VR software
“VR is mainly a software problem”
Jaron Lanier
Device management
Physical device Driver Application
Device management
Tracker 1
Driver Tracker 1
Application
Tracker 2 Driver Tracker 2
Correct perspective
(c) Johnny Lee
Correct perspective
Stereoscopy
Warping & Blending
Warping & Blending
Graphics cards limitations
• Number of outputs
• Processing power
multiple graphics
cards
• Pro
• More outputs
• More processing power
• Con
• 3D engines are not optimized for multi-pipe
Cluster
• Pro
• More outputs
• More processing power
• Con
• 3D engines don‟t support clustering
• No seams across displays require 3 layers of sync
• 3D objects synchro (Scenelock)
• New images display (Swaplock)
• Left/Right eyes (Genlock)
Cluster
Interactions
• Many different 3D user interactions
• Navigation
• Selection
• Manipulation
• Draw
• System control
• etc.
Interactions are dependent
on hardware
Menus
Haptics
(force feedback)
Deployment
• Modify application to
• Change drivers
• Change displays
• Change interactions
• Platform for creating
interactive 3d applications
• Widely used
• 2.5 million registered
developers
• High-quality rendering
• Deferred renderer
• Occlusion culling
• Realtime shadows
• Ambient occlusion
• Light mapping
Unity 3D
Features
• Programming
• C#, Javascript
• Profiler
• Physics
• NVidia PhysX
• Cloth
• Soft/rigid bodies
• Ragdolls
• Cars
3D formats
FBX, Collada, 3DS,
OBJ…
Audio engine
Networking
Terrain
Editor
• Simple to use
• Create your own tools inside Unity
Asset store
• Buy / sell assets
• 3D models
• Textures
• Shaders
• Scripts
• Editor plugins
Desktop
• Build hardware
To create and maintain presence,
you, the author, need to ...
• Build software
• Build user experience
Existing VR software
• VRPN
• OpenTracker
• VRJuggler
• Virtools
• Worldviz
• …
VRPN
VR Juggler
VIRTOOLS VR PACK
Worldviz Vizard
• Based on OpenSceneGraph
• Python
Worldviz Vizard
The need for better
VR software tools
• Hardware getting cheaper
• But engineers are not getting cheaper
• Need to be more efficient and spend less
time creating apps
• Democratization
• VR developers are not all engineers anymore
Goals
• Simplify VR
• Simplify creation of VR applications
• Simplify deployment of VR applications
• Create new VR tools
• Adapting existing 3D applications
What is ?
• Generic VR plugin (C++ SDK)
• Functionalities
○Manage input devices
•3D trackers, keyboard, mouse, joystick
○Manage display
•Viewports, cameras, stereoscopy, cluster
○High-level building-blocks
○Interactions
○Menu
Architecture
MiddleVR (C++)
Drivers OpenGL DirectX Network
C# Wrapper
GUI Unity
Lua
Wrapper
Python
Wrapper
MiddleVR Features
Supported Devices
• Via VRPN :
• A.R.T
• Vicon
• Optitrack
• Wiimote
• Polhemus Fastrak Tracker, 3Space
Tracker, Patriot Trackers,
• Ascension Flock of Bird
• Intersense IS600, IS900
• 3dTech HiBall-3000 Wide Area Tracker,
• Advanced Realtime Tracking Gmbh DTrack
Client,
• World Viz Precision Position Tracker PPT 1.2,
• Natural Point Optitrack Rigid Body Toolkit,
• Phasespace optical tracking OWL,
• ...
• Native drivers
• Oculus Rift
• Leap Motion
• Kinect (Microsoft SDK)
• PNI SpacePoint Fusion
• GameTrak
• Razer Hydra
• SpaceMouse
• Motion Analysis (beta)
Haptics
(force feedback)
VR Camera
• MiddleVR computes all the cameras‟ parameters
automatically
• Correct perspective
• Scale 1
Stereoscopy
• Active stereoscopy
(OpenGL Quad-Buffer)
• Which Unity can‟t
natively handle
• Passive stereoscopy
Viewports management
Simply configure your system
Navigations
Homography
Cluster & Multi-pipe
• Scenelock
• Swaplock
• Genlock
• Multi-pipe (soon)
Supported displays
• Virtually any HMD
• VR-Wall, Powerwall
• Workbench, Holobench
• HoloStage
• CAVEs
• 3D TVs
• zSpace
• Igloo Vision
• …
Goals
• Simplify creation of VR applications
• Simplicity of adding VR into application
• Simplicity of API
• High-level tools
• Interactions:
Selection, manipulation, navigation, menus,
GUIs
Example of device
management
Driver 1
Driver 2
Device management
MiddleVR
Class reference
The value of Simplicity
The value of simplicity
“Perfection is achieved, not when there is
nothing more to add, but when there is
nothing left to take away”
Antoine de St Exupery
The value of simplicity
• For each feature you add
• Test
• Document
• Support / maintain
• Each feature costs !!
The value of simplicity
• Huge value in simplicity !
• User side
• Faster to learn, less to remember
• Developer side
• Faster to code
• Easier maintain
• Less bugs
• Business side
• Need less coders
• More interesting features
• Easy download / setup > Quickly validate on user‟s hardware !
• Easier support
API in simple english
• Long discussions for naming of functions, classes, variables
• Consistent api
• SetNumButtons, SetButtonsNum, SetNbButtons > SetButtonsNb
• French not good at english
• Analog ? Digital ? Proxy ?
• Use natural terms depending on device
• Joystick->GetAxisValue()
• Joystick->IsButtonPressed()
• Keyboard->IsKeyPressed()
• Why “Register” ? Why not “Add” ?
• Why so complex, want to sound very clever ?
• AddDevice, AddCamera, …
• API in degrees, because more intuitive / simple to work with
Simplified API
• Simple but complete API
• Like legos
• Rotate
• Node3D->Rotate( Quat )
• Node3D->Rotate( Euler )
• Node3D->Rotate( Axis, Angle)
• Quat( quat ), Quat( Euler ), Quat( Axis, Angle)
The value of simplicity
“Simplicity is the ultimate sophistication”
DaVinci
The value of simplicity
• Design user interface for the 80%
• Don‟t ruin the experience for the 20%
• Simple things should be simple
• Complex things can be complex
• Put in an “advanced menu”
• Don‟t let beauty of design ruin user
experience
• Like real life architects who want their
design to be beautiful but totally
unusable on a day to day
• Example of Lego
• Simple but complete
Optimizations
• Engineers have a strong tendency to over-optimise
• Complexifies code
• Code must be above all readable
• To avoid bugs
• To maintain maintenability
• If you want to optimise
• First profile your code
• Optimize what is *really* taking time
• not what you *think* takes time
Empathy
“The ability to understand and share the
feelings of another.”
Test with users
Hardware SDK are mostly too complicated
Drivers
• Why not just a few simple functions with
sensible defaults ?
• Init()
• Update()
• GetValue()
• Destroy()
• And add more functions for more advanced
Documentation
• User Guide
• Class references
Goals
• Simplify deployment of VR applications
• GUI to configure VR systems
• Dynamic reconfiguration of application
• Ship with standard configurations
• Abstractions
Deployment
• Abstractions
• Devices
• 3D Nodes (User)
• Interactions (soon)
Device management
Driver Tracker 1
Application
Driver Tracker 2
Device abstraction
Virtual
Device
Application
Driver Tracker 1
Driver Tracker 2
Device management
Driver
Virtual
Device
Application
Simulation
Replay
Display
• Cameras & viewport
created dynamically
User
• Human-centric rather than techno-centric
Virtual Device 1
Hand
(3D Node)
Application
Virtual Device 2
Inverse Kinematics
User abstraction
Interactions
• MiddleVR includes high-level interactions
• Navigation
• Selection
• Manipulation
• … More to come
• Future: Interactions abstractions
• Dynamically change interactions based on
hardware
Interactions abstraction?
Grab-air
Navigation
Application
Point
Steering
Selection
Manipulation
Raycasting
Go-go
Hand
Homer
Hand
WIM
• How to create portable interactions ?
• Navigations can be portable
• Except collisions
• Generalise what is generalisable
• + Custom part for engine dependent
• Collisions
• Highlights
• Gizmos
Interactions
Menus
• Ability to create menus and GUIs in HTML5 (soon)
Create immersive HTML5 GUI
C++ Reflexion
• Also for configuration file
• Cluster synchronisation
• Accessing drivers specific information
Working with multiple 3D
engines
• Different coordinate systems
• vrCoordinateSystem( Front, Up, Right )
• +/- X,Y,Z
• OpenGL:
• Front= -Z
• Up = +Y
• Right = +X
• DirectX:
• Front=+Z
• Up=+Y
• Right=+X
Working with multiple 3D
engines
• C++
• Compiling
• STL, Boost
• Strings (Wide strings)
• Link issues
• Different compilers (VC2005/2008/2010/2012)
• Different languages
• C wrapper
• Lua wrapper
• Simplicity
• Creation
• Deployment
• Adaptability
• Hardware
• Software
Our future
• Games/apps development:
Conclusion
http://www.imin-vr.com/download
Thank you !
Questions ?
Sebastien.Kuntz@imin-vr.com
@Cb_VRGeek
@imin_vr

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Eyes Wide Open - Amir Ebrahimi
Eyes Wide Open - Amir EbrahimiEyes Wide Open - Amir Ebrahimi
Eyes Wide Open - Amir Ebrahimi
 
COMP 4010 Lecture6 - Virtual Reality Input Devices
COMP 4010 Lecture6 - Virtual Reality Input DevicesCOMP 4010 Lecture6 - Virtual Reality Input Devices
COMP 4010 Lecture6 - Virtual Reality Input Devices
 
Virtual Reality - Get in the Game
Virtual Reality - Get in the GameVirtual Reality - Get in the Game
Virtual Reality - Get in the Game
 
How to Develop VR Applications and Publish from Phone to Dome - Nils Andersson
How to Develop VR Applications and Publish from Phone to Dome - Nils AnderssonHow to Develop VR Applications and Publish from Phone to Dome - Nils Andersson
How to Develop VR Applications and Publish from Phone to Dome - Nils Andersson
 
2016 AR Summer School - Lecture 5
2016 AR Summer School - Lecture 52016 AR Summer School - Lecture 5
2016 AR Summer School - Lecture 5
 
Mobile AR Lecture1-introduction
Mobile AR Lecture1-introductionMobile AR Lecture1-introduction
Mobile AR Lecture1-introduction
 
ARE 2011 AR Authoring
ARE 2011 AR AuthoringARE 2011 AR Authoring
ARE 2011 AR Authoring
 
2013 Lecture3: AR Tracking
2013 Lecture3: AR Tracking 2013 Lecture3: AR Tracking
2013 Lecture3: AR Tracking
 
Going off the rails
Going off the railsGoing off the rails
Going off the rails
 
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
 
Comp4010 Lecture4 AR Tracking and Interaction
Comp4010 Lecture4 AR Tracking and InteractionComp4010 Lecture4 AR Tracking and Interaction
Comp4010 Lecture4 AR Tracking and Interaction
 
Introduction to DaydreamVR from DevFestDC 2017
Introduction to DaydreamVR from DevFestDC 2017Introduction to DaydreamVR from DevFestDC 2017
Introduction to DaydreamVR from DevFestDC 2017
 
Introduction to daydream for AnDevCon DC - 2017
Introduction to daydream for AnDevCon DC - 2017Introduction to daydream for AnDevCon DC - 2017
Introduction to daydream for AnDevCon DC - 2017
 
Making VR Games and Experiences in UE4
Making VR Games and Experiences in UE4Making VR Games and Experiences in UE4
Making VR Games and Experiences in UE4
 
Luis cataldi-ue4-vr-best-practices2
Luis cataldi-ue4-vr-best-practices2Luis cataldi-ue4-vr-best-practices2
Luis cataldi-ue4-vr-best-practices2
 
Intro to VR with Unreal Engine
Intro to VR with Unreal Engine   Intro to VR with Unreal Engine
Intro to VR with Unreal Engine
 
Augmented reality
Augmented realityAugmented reality
Augmented reality
 
Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...
Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...
Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...
 
[1C7] Developing with Oculus
[1C7] Developing with Oculus[1C7] Developing with Oculus
[1C7] Developing with Oculus
 
Making VR games and experiences in Unreal Engine
Making VR games and experiences in Unreal EngineMaking VR games and experiences in Unreal Engine
Making VR games and experiences in Unreal Engine
 

Similar a IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture

Similar a IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture (20)

DevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile GamesDevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile Games
 
NUX Presentation from TechMixer Birmingham 2011
NUX Presentation from TechMixer Birmingham 2011NUX Presentation from TechMixer Birmingham 2011
NUX Presentation from TechMixer Birmingham 2011
 
Building Applications with the Microsoft Kinect SDK
Building Applications with the Microsoft Kinect SDKBuilding Applications with the Microsoft Kinect SDK
Building Applications with the Microsoft Kinect SDK
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Synthetic environment
Synthetic environmentSynthetic environment
Synthetic environment
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
 
Mixed reality for Windows 10
Mixed reality for Windows 10Mixed reality for Windows 10
Mixed reality for Windows 10
 
Unity - Game Engine
Unity - Game EngineUnity - Game Engine
Unity - Game Engine
 
Exploring Ketai Library, Droidcon
Exploring Ketai Library, DroidconExploring Ketai Library, Droidcon
Exploring Ketai Library, Droidcon
 
The not so short introduction to Kinect
The not so short introduction to KinectThe not so short introduction to Kinect
The not so short introduction to Kinect
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
Building VR Applications For Google Cardboard
Building VR Applications For Google CardboardBuilding VR Applications For Google Cardboard
Building VR Applications For Google Cardboard
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at Dashlane
 
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the BrowserForge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the Browser
 
Building the Ultimate Device Matrix
Building the Ultimate Device MatrixBuilding the Ultimate Device Matrix
Building the Ultimate Device Matrix
 
Introduction to WebGL - 1st WebGL meetup Amsterdam
Introduction to WebGL - 1st WebGL meetup AmsterdamIntroduction to WebGL - 1st WebGL meetup Amsterdam
Introduction to WebGL - 1st WebGL meetup Amsterdam
 
Witekio Qt and Android
Witekio Qt and AndroidWitekio Qt and Android
Witekio Qt and Android
 
Android Presentation
Android PresentationAndroid Presentation
Android Presentation
 
Meet qt intro
Meet qt introMeet qt intro
Meet qt intro
 
Meet qt intro
Meet qt introMeet qt intro
Meet qt intro
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 

IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture