+ All Categories
Home > Documents > Computer Graphics from your pockets to your CAVE Achille Peternier, Ph. D. Student VRLab, EPFL,...

Computer Graphics from your pockets to your CAVE Achille Peternier, Ph. D. Student VRLab, EPFL,...

Date post: 16-Dec-2015
Category:
Upload: job-sparks
View: 215 times
Download: 0 times
Share this document with a friend
Popular Tags:
25
Computer Graphics from your pockets to your CAVE Achille Peternier, Ph. D. Student VRLab, EPFL, Switzerland
Transcript

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 (1)ConceptResult

Software

Device

Project

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: architecture (4)

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

4. Conclusion (2)

• Versatility doesn’t need to be sacrificed in the process.

Thank you

…questions?


Recommended