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:
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
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: Frame Panels Multiple Canvases and Overlays Buttons Multitexturing Xj3D– Do It Yourself Browser
XSLT Transformations XML -> X3D X3D ->.* EAI Java events can be sent in and out of scenegraph SAI integration through the DOM Xj3D – XSLT Viewer
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 ?