250 likes | 374 Views
Computer Graphics from your pockets to your CAVE. Achille Peternier, Ph. D. Student VRLab, EPFL, Switzerland. Plan. Introduction Goals Our solution System architecture Examples Evaluation/Benchmark Conclusion. 1. Introduction (1). Unique framework for 3D graphics.
E N D
Computer Graphics from your pockets to your CAVE Achille Peternier, Ph. D. Student VRLab, EPFL, Switzerland
Plan • Introduction • Goals • Our solution • System architecture • Examples • Evaluation/Benchmark • 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 (1) Concept Result Project Device Software
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 models Engine API Textures Dynamic scene graph Animations Content adaptation Effects GUI Handheld rendering User application PC rendering CAVE rendering Mental Vision 2D/3D engine
3. Our solution: architecture (2) Handheld rendering PC rendering Fixed math OpenGL (1.1 -> 2.1) OpenGL|ES (HW/SW) Fixed/Shader pipeline Fixed pipeline F/X Mental Vision 2D/3D engine Mental Vision 2D/3D engine
3. Our solution: architecture (3) CAVE rendering Network architecture Mental Vision 2D/3D engine
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 details Other 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 fps V. 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 fps V. 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 fps V. human: ~560 fps
3. Our solution: benchmark (5) 4 side CAVE rendering (1 server PC, 4 clients) Screen size: 1024x768 (each) Nvidia 9800 GTX Bunny: >1400 fps Building: >1000 fps V. human: ~560 fps 3D rendering 2D GUI
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”.
4. Conclusion (2) • Versatility doesn’t need to be sacrificed in the process.
Thank you …questions?