X3D: Power and Portability with Open Standards - People

Download Report

Transcript X3D: Power and Portability with Open Standards - People

Interface Opportunities for 3D
Data and Media
User Interface Software
TechNote Panel
Virginia Tech CS Fall 2002
Nicholas F. Polys
Umur Yilmaz
Will Lee
‘Deep’ Media
New display and interaction metaphors are
required.
Features :
• 2D and 3D graphics
• User interaction: navigation, selection, manipulation
• Hyperlinked data
• Animation: Simulation, Scripting
• Spatialized audio and video
• Networking : Multi-User , DIS
• User-defined objects
3D Technotes Overview
•
•
•
•
Scenegraph concepts & data
Java3D Toolkit
Xj3D Toolkit
DIVERSE Toolkit
Scenegraphs and
File Formats
Scenegraph: directed acyclic graph of nodes
connected by events
• Described in file formats such as VRML, X3D,
and others
• Model implemented in runtime architectures
such as VRML browsers, Xj3D, Java3D,
Performer
• interactive controllers and rendered views
usually tightly coupled
Interactive Scene Concepts
• Navigate 3D Space
• Precomputed or process-driven 3D
models and animations
• Pointing, Dragging, and Proximity
Sensors
• Hyperlinks, dynamic loading
Cortona Active X object for VRML world:
http://csgrad.cs.vt.edu/~npolys/uisoft/hud3d.wrl
Java3D Toolkit
What is Java 3D API?
• “The Java 3D API is a hierarchy of Java classes
which serve as the interface to a sophisticated 3D
graphics rendering and sound rendering system”.
• What can you do?
–
–
–
–
Imagery :vectors on 3d coordinates and geometry.
Visualizations :light and shadow on the 3D objects.
Interactivity :mouse and keyboard actions.
Animations :interpolating scale, rotation, opacity, color and
path of movement.
Scene Graph
• What is a scene graph?
Specification of the program hierarchy
of 3D objects in the Virtual Universe
• What is a Simple Universe?
Construction of commonly used objects
by instantiating only one class.
Example scene graph showing
the simple universe.
Interpolator example
Interpolator example
some coding
• public BranchGroup createSceneGraph() {
• BranchGroup objRoot = new BranchGroup();
• TransformGroup objMove = new TransformGroup();
• Alpha alpha = new Alpha (-1,
Alpha.INCREASING_ENABLE +
Alpha.DECREASING_ENABLE, 0, 0, 2000, 0, 1000,
2000, 0, 1000);
• PositionInterpolator posInt = new
PositionInterpolator (alpha, objMove);
• TransformGroup objMovePos = new
TransformGroup(t3d);
objRoot.addChild(objMovePos);
objMovePos.addChild(objMove);
objMove.addChild(new ColorCube(0.3));
objRoot.addChild(posInt);
• objRoot.compile();
Comments
• How scene graph made use of 3D api
easy.
• How easy to program 3D in Java!!
Xj3D Toolkit
Actively developed Open Source,
Standards-based, Java implementation
• Scenegraph runtime and loader with
some advanced features
• Multiple Renderers: Java3D, OpenGL
• Customize and Integrate with other
applications as a Swing Component
Java Swing UI
+ VRML file loader:
Xj3D–
Do It Yourself Browser
• Frame
• Panels
• Multiple Canvases
and Overlays
• Buttons
• Multitexturing
Xj3D –
XSLT Viewer
XSLT
Transformations
• XML -> X3D
• X3D -> .*
EAI
Java events can be
sent in and out of
scenegraph
SAI
integration through
the DOM
DIVERSE Toolkit
• Multiple display devices (e.g., HMD, CAVE,
desktop etc.)
• DPF (graphics component)
• DTK (core component)
• FLTK
Courtesy of the Virginia Tech.’s DIVERSE team
DIVERSE Toolkit
• Remote collaboration
using remote shared
memory
• Dynamically Shared
Objects (DSOs)




Built-in
User-defined
“Hot swap”
Easy to load
A collaboration example
DIVERSE’s DSOs
• Loadable modules
built as C++ shared
objects
• Extend/inherit from
DTK or DPF
A rotating truck loaded from a DSO
3D Discussion: Opportunities
and Issues
•
•
•
•
•
Spatial abililties
Interactive Affordances
Learning curve
Data Access
UIMSs ?