creating virtual reality applications using freevr david j. zielinski [email protected] friday...

29
Creating Virtual Reality Applications Using FreeVR David J. Zielinski [email protected] Friday Visualization Forum October 1 st ,2004

Upload: lee-neal

Post on 03-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

Creating Virtual Reality Applications Using FreeVR

David J. Zielinski [email protected]

Friday Visualization Forum October 1st,2004

Page 2: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

Overview

1) What is Virtual Reality?

2) What are my choices?

3) Why use FreeVR?

4) FreeVR program outline

5) Application demos

Page 3: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

1) What is Virtual Reality?

Page 4: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

What is Virtual Reality?

● Physically immersive (generate input to user's sensory systems)

● Interactive (user can change the experience)

Examples:reading a book (not interactive or immersive)video game (interactive but not immersive)3-d movie (immersive but not interactive)

Page 5: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

What can we use for physically immersive?

● 3-d vision– projection systems: [anaglyphic

(red/blue), polarized, active stereo]– head mounted displays.

Page 6: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

What can we use for physically immersive?

● 3-d sound– multichannel speaker setups– Headphone simulation

Page 7: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

What can we use for physically immersive?

● Other: – Touch/force feedback– Taste– Smell– Environmental conditions (temperature)– Accelerations/motion– Direct connection to human nervous

system

Page 8: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

What can we use for interactive?

• location tracking systems: magnetic, video, ultra-sonic

Page 9: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

What can we use for interactive?

• joysticks: wands, game controllers

• other: gloves, eye tracking, biological indicators (heart-rate, breathing), props (steering wheels, fishing poles)

Page 10: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

2) What are my choices for developing an application/experience?

A) Write from scratch

B) Low-level library

C) Medium-level library (scenegraph)

D) High-level graphical program

E) Use domain-specific, off the shelf program

Page 11: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

Write from scratch

● Pro: – complete control– maximum performance/speed possible

● Con: – Long, difficult development– Often device dependent

Page 12: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

Low-level library(CAVELib, FreeVR, DIVERSE)

● Pro:– lots of control (C/C++,OpenGL

programming)– device independent

● Con: – difficult for non-programmers, – more control/freedom than most

applications require

Page 13: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

Medium-level library (OpenSceneGraph, Performer)

Page 14: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

Medium-level library (OpenSceneGraph, Performer)

● Pro: – built in algorithms to cull (eliminate) non-

viewable objects – built in algorithms for collision detection

● Con:– Still lots of programming– learning curve to use scenegraph format– usually still low-level library dependent

Page 15: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

High-level graphical program (Virtools)

Page 16: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

High-level graphical program (Virtools)

● Pro:– Easy visual design of worlds – Visual, flow design for object behaviors

● Con:– Expensive– speed/performance? – Still have to learn to “program”

Page 17: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

Use domain-specific, off the shelf program (Amira, VMD)

Page 18: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

Use domain-specific, off the shelf program (Amira, VMD)

● Pro: – Very easy, especially if group is already

using non-VR version of program● Con:

– Individual configuration– not applicable to making custom

applications

Page 19: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

3) Why use FreeVR?

● device independence (input and output)● free/opensource (CAVELib is not)● actively developed (cluster support soon)● I know how to configure it

Page 20: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

How does it become device independent?

● configuration file (.freevrrc) maps buttons, sensors, and screen locations to FreeVR internals. Different physical configurations require different .rc settings.

● on startup FreeVR opens all necessary windows, and handles projection matrices, so correct view is on correct screen.

Page 21: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

abstraction of buttons:

int pressed=vrGet2switchValue(which_button);if(pressed) printf(“user pressed the button!”);

Page 22: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

abstraction of location sensors:

vrPointGetRWFrom6sensor(&wand_locpnt, WAND_SENSOR);

float x,y,z; x=wand_locpnt.v[0];y=wand_locpnt.v[1];z=wand_locpnt.v[2];if((x<...) AND (y<...) AND (z<...)) /* we are touching an object, do something */

Page 23: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

abstraction of display space:

we provide single function, that is called for each frame, for each render window.

void draw_world(){ clear_screen glTranslatef(0,5,-5); /* real world coordinates draw_object }

Page 24: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

4) FreeVR program Outline pt.1

Main(){ initialization calls setup callback of world render function setup callback of gfx initialization

while(!terminate){ vrFrame(); update(); /* next slide */ } }

Page 25: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

FreeVR program Outline pt.2Update(){ check buttons check sensor positions do logic}draw_world(){ look at world settings (modified in update) make openGL calls to render world}

Page 26: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

FreeVR programming Subtleties● Rendering and updates occur in separate

processes, so shared memory is needed. FreeVR includes vrShmemAlloc0 which is comparable to malloc. Typically a world data structure is created, modified, and passed around.

● because of the separate processes we need to lock the world data when we are writing and reading it. FreeVR includes vrLock. We can call vrLockReadSet(the_lock); vrLockReadRelease(the_lock);

Page 27: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

5) Applications –PDB viewer

Page 28: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

Virtual Vibraphone

Page 29: Creating Virtual Reality Applications Using FreeVR David J. Zielinski djzielin@duke.edu Friday Visualization Forum October 1 st,2004

FreeVR Downloadhttp://www.freevr.org/

David J. [email protected]