Date post: | 16-Dec-2015 |
Category: |
Documents |
Upload: | job-sparks |
View: | 215 times |
Download: | 0 times |
Computer Graphics from your pockets to your CAVE
Achille Peternier, Ph. D. Student
VRLab, EPFL, Switzerland
Plan
1. Introduction
2. Goals
3. Our solution1. System architecture
2. Examples
3. Evaluation/Benchmark
4. Conclusion
1. Introduction (1)
Unique framework for 3D graphics
handheld devices, PDAs, mobile
phones
UMPCs, low profile PCs
Desktop PCs, modern graphics
accelerators
CAVE systems, multi-display environments
1. Introduction (2)
handheld devices UMPCs
• low resources and computational power• lack of 3D dedicated HW or poor performances
• Intel GMA 900/950 family• OpenGL | ES• OpenGL < 1.5
• closed systems
1. Introduction (3)
Desktop PCs CAVE systems
• Very heterogeneous HW • NVidia, ATI, Intel, …• OpenGL 1.1 -> OpenGL 3.0
• Network architecture (and again heterogeneous HW)• Stereographic rendering cutting performances
2. Goals (2)
• Reducing complexity and development times for cross-device graphics applications
• Making development and porting as simple as possible
• Keeping the same functionalities and performances across different platforms, or let the software automatically adapt it for us (models, GUIs, textures, shaders, etc.)
3. Our solution
• Mental Vision: a cross-device 2D/3D graphics engine:– Very simple interface (good learning curve)
• Maximizing effects reducing lines of code• Minimizing differences among different platforms
– Compact in sizes and fast in speed (important for low profile/mobile devices)
– Robust (consistent results across different devices)
3. Our solution: architecture (1)3D models3D models
TexturesTextures
AnimationsAnimations
EffectsEffects
User application
Mental Vision 2D/3D engine
GUIGUI
Content adaptationContent adaptation
Dynamic scene graphDynamic scene graph
Handheld renderingHandheld rendering
PC renderingPC rendering
CAVE renderingCAVE rendering
Engine APIEngine API
3. Our solution: architecture (2)
Mental Vision 2D/3D engine
Handheld renderingHandheld rendering
Fixed mathFixed math
OpenGL|ES (HW/SW)OpenGL|ES (HW/SW)
Mental Vision 2D/3D engine
PC renderingPC rendering
OpenGL (1.1 -> 2.1)OpenGL (1.1 -> 2.1)
Fixed pipelineFixed pipeline
Fixed/Shader pipelineFixed/Shader pipeline
F/XF/X
3. Our solution: architecture (3)
Mental Vision 2D/3D engine
CAVE renderingCAVE rendering
Network architectureNetwork architecture
3. Our solution: PC example#include <mvisio.h>
int main(int argc, char *argv[]){ MVISIO::init(NULL); MVNODE *bunny = MVISIO::load("bunny.mve"); MVISIO::clear(true, true, true); MVISIO::begin3D(NULL); bunny->pass(); MVISIO::end3D(); MVISIO::swap(); MVISIO::free(); return 0;}
Initialize MVisio (NULL means auto-setup)
Load a scene from native format
Clear buffers, start a 3D rendering, tell MVisio to render the bunny entity, execute the rendering, swap back to front buffer
Free resources
3. Our solution: PDA example#define MV_PDA#include <mvisio.h>
int main(int argc, char *argv[]){ MVISIO::init(NULL); MVNODE *bunny = MVISIO::load("bunny.mve"); MVISIO::clear(true, true, true); MVISIO::begin3D(NULL); bunny->pass(); MVISIO::end3D(); MVISIO::swap(); _sleep(5000); MVISIO::free(); return 0;}
Just define that before including MVisio, that’s all!
3. Our solution: CAVE example#define MV_CAVE#include <mvisio.h>
int main(int argc, char *argv[]){ MVCLIENT *front = new MVCLIENT(); front->set IP(“192.168.0.1”); front->setID(MV_FRONT);
MVCLIENT *right = new MVCLIENT(); right->set IP(“192.168.0.2”); right->setID(MV_RIGHT); // …
MVISIO::init(NULL); MVNODE *bunny = MVISIO::load("bunny.mve");
Define that first
Add CAVE sides here
3. Our solution: CAVE example
MVCLIENT::putUser(1.2, 1.6, 1.2);
MVISIO::clear(true, true, true); MVISIO::begin3D(NULL); bunny->pass(); MVISIO::end3D(); MVISIO::swap(); _sleep(5000); MVISIO::free(); return 0;}
Specify user’s head position in CAVE relative coordinates
3. Our solution: technical detailsOther aspects/details (like engine expansion, MR/VR related aspects, corollary
tools, plugins, CAVE calibration, etc.):
• A. Peternier, F. Vexo, D. Thalmann, The Mental Vision framework: a platform for teaching, practicing and researching with Computer Graphics and Virtual Reality, LNCS Transactions on Edutainment, 2008
• A. Peternier, F. Vexo, D. Thalmann, Wearable Mixed Reality System In Less Than 1 Pound, In Proc. of the 12th Eurographics Symposium on Virtual Environments, Lisbon, Portugal, May 2006
• A. Peternier, S. Cardin, F. Vexo, D. Thalmann, Practical Design and Implementation of a CAVE System, 2nd International Conference on Computer Graphics, Theory and Applications, GRAPP 2007, Barcelona, 2007
3. Our solution: benchmark (1)• Simple cross device application tracking fps and using three different models:
• classic static Standford bunny• a building model (using many separated entities and transparencies)• a 86 bones skinned, animated, textured virtual human
• Basic GUI (some text, a couple of buttons)• We want to evaluate speed issues and visual consistency among different platforms.
3. Our solution: benchmark (2)PDA software rendering(OGL|ES Rasteroid 1.0 CL)
Screen size: 320x240
Bunny: ~5.9 fps Building: ~9.3 fpsV. human: ~6.7 fps
3. Our solution: benchmark (3)PDA hardware rendering(OGL|ES MBX-lite 1.0 CL)
Screen size: 640x480
Bunny: ~23 fps Building: ~34 fpsV. human: ~14 fps
3. Our solution: benchmark (4)PC hardware rendering(Nvidia GForce 8800 GT, Core2 Quad @ 2.4 GHz)
Screen size: 640x480
Bunny: >1400 fps Building: >1000 fpsV. human: ~560 fps
3. Our solution: benchmark (5)
2D GUI2D GUI
3D rendering3D rendering4 side CAVE rendering(1 server PC, 4 clients)Screen size: 1024x768 (each)Nvidia 9800 GTX
Bunny: >1400 fps Building: >1000 fpsV. human: ~560 fps
4. Conclusion (1)
• 3D everywhere is possible today by using the correct approach and system architecture.
• Cross-device applications open new scenarios/applications, mainly when porting across different systems can be achieved “for free”.