Title: An Interactive and Immersive Virtual Environment
1The eScience Wedge
- An Interactive and Immersive Virtual Environment
- A guide to developing applications using the TIWI
package and utilities
Dr Henry Gardner, Pascal Vuylsteker, David
Walsh, Rod Harris, Hugh Fisher http//escience
.anu.edu.au thewedge_at_escience.anu.edu.au
2Overview
- Hardware features and layout
- The TIWI Interface
- Classpath setup package layout
- Building a simple application
- Java3D scenegraph basics review
- TIWI utilities and advanced features
3Hardware Features
- Stereo optic display ( basic 3D cue )
- Dual screen ( immersion )
- Implies 4 output buffers, 4 x rendering time (
?? ) - 8 speaker digital audio ( immersion, 3D )
- Ultrasound head tracker ( immersion )
- and 3Dmouse ( interactivity )
- Domino input device ( navigation, control )
- Microphone ( interactivity )
4Wedge Hardware Layout
Note Microphone
Headtracker and 3Dmouse controllers
not shown
IR signal
IR Emitter
Mirror
Projector
Projector
Monolith serial ports
speakers
1 2
Wedge
bondi
8
Remote/local switch
Video (x2)
IR signal
Monitors
Video line splitters
monolith
DAC/ADC DSP
IR signal
Dual 500w amplifiers
Wildcat 4210
Internet
5The Tracked Interactive Wedge Interface
- An API for the Wedge using Java3D
- See http//escience.anu.edu.au/tiwi/src/tiwi.zip
- Not the only way of programming the Wedge
- Includes Demos and utilities
- Easier to setup than straight Java3D
- Same code will run on a POCS
- Has Javadoc documentation
- See http//ephebe.anu.edu.au/tiwi/tiwidoc/
6(No Transcript)
7What the Wedge class gives you
- Class Wedge extends View
- Creates the Virtual Universe, Locale,
ViewPlatform, Physical Environment and Physical
Body objects, inter alia, for you - Physical Environment
- Used to setup input devices (sensors) audio
output - Physical Body
- Holds human based parameter, eg height, eye width
- ViewPlatform
- One per view, can be placed under arbitrarily
complex TransformGroup tree
8Building a TIWI Application
- package tutorial
- public class Cube
-
- public static void main(String args)
- new Cube(1)
-
- public Cube(int size)
- // set up graphics configuration
-
-
- // create a wedge object
-
9Building a TIWI Application
- package tutorial
- import javax.media.j3d.
- import anu.escience.tiwi.
- public class Cube
-
- public static void main(String args)
- new Cube(1)
-
- public Cube(int size)
- // set up graphics configuration
-
-
- // create a wedge object
-
10Building a TIWI Application
- package tutorial
- import javax.media.j3d.
- import anu.escience.tiwi.
- public class Cube
-
- public static void main(String args)
- new Cube(1)
-
- public Cube(int size)
- // set up graphics configuration
- WedgeConfigTemplate wct new
GraphicsConfigTemplate() - WedgeConfiguration wc new GraphicsConfiguratio
n(wct) - // create a wedge object
-
11Building a TIWI Application
- package tutorial
- import javax.media.j3d.
- import anu.escience.tiwi.
- public class Cube
-
- public static void main(String args)
- new Cube(1)
-
- public Cube(int size)
- // set up graphics configuration
- WedgeConfigTemplate wct new
GraphicsConfigTemplate() - WedgeConfiguration wc new GraphicsConfiguratio
n(wct) - // create a wedge object
- Wedge wedge Wedge.getWedge(wc)
12Building a TIWI Application
- package tutorial
- import javax.media.j3d.
- import anu.escience.tiwi.
- public class Cube
-
- public static void main(String args)
- new Cube(1)
-
- public Cube(int size)
- // set up graphics configuration
- WedgeConfigTemplate wct new
GraphicsConfigTemplate() - WedgeConfiguration wc new GraphicsConfiguratio
n(wct) - // create a wedge object
- Wedge wedge Wedge.getWedge(wc)
13Building a TIWI Application
- package tutorial
- import javax.media.j3d.
- import anu.escience.tiwi.
- public class Cube
-
- public static void main(String args)
- new Cube(1)
-
- public Cube(int size)
- // set up graphics configuration
- WedgeConfigTemplate wct new
GraphicsConfigTemplate() - WedgeConfiguration wc new GraphicsConfiguratio
n(wct) - // create a wedge object
- Wedge wedge Wedge.getWedge(wc)
14Java3D Scene Graph
VirtualUniverse
Locale
BranchGroup
BranchGroup
Transformgroup
Transformgroup
Transformgroup
Transform3D
Box
Shape3D
Transformgroup
Transformgroup
Cone
IndexedFaceSet
BranchGroup
Shape3D
Shape3D
15Homogeneous Coordinates and the Java3D
Transform3D class
Affine Transformations
1 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1
Identity matrix, basic data contained in the
Transform3D class
T1
S1 0 0
R1 R2 R3 R4 R5 R6 R7
R8 R9
T1
T2
0 S2 0
T2
T3
0 0 S3
T3
0 0 0 1
0 0 0 1
16Compound Transformations
- Homogeneous coordinates allow building compound
transformations by simple matrix multiplication - Matrix multiplication is associative
- ((AB)C (A(BC))
- But not commutative
- (AB ! BA)
- What does this imply?
17Tiwi Utilities
- Virtual head tracker
- Built in keyboard listener
- Simple 3D mouse cursor
- ANU Loaded Functionality Alpha (AlfAlpha)
- Classpath file finder
- Animation sequence controller and suite of
interpolators