This three day course begins with an overview of the Extensible 3D (X3D)
standard, the specification process, and basic scene graph concepts. Several
scene authering tools for the generation of X3D content will be examined. This
section also introduces Xj3D, an open-source X3D toolkit, used to add X3D
capabilities to applications.
The course then dives straight into the Scene Access Interface (SAI), the X3D
programming interface. The course focuses on the Java API but does cover the
Ecmascript API as well. After completing this portion of the course participants
will be able to create rich, interactive worlds.
Now that the participants understand X3D, the Xj3D browser, and the
programming interface the course moves into understanding how to integrate the
Xj3D browser and X3D authoring components into custom applications and server
deployments. This portion of the course also covers using Xj3D in Eclipse/SWT.
It details several open-source projects that facilitate the rapid development of
your applications. Course Syllabus
- General X3D and Xj3D Overview
This section provides an overview of the X3D standard and the Xj3D Toolkit.
Topics discussed include:
- Introduction to the parts of the X3D standard.
- Web3D and the specifcation development process.
- X3D scene graph concepts.
- What is Xj3D?
- Basic knowledge needed to understand the rest of this course.
- The Scene Access Interface (SAI): A Programming Interface
When developers need to interact with an X3D scene graph through use of
custom code, either as a Script node or from external applications, they use the
Scene Authoring Interface (SAI). This interface is a protocol for manipulating
the X3D scene graph while not directly part of the scene graph itself. This
section will instruct developers on how to use the SAI. Topics covered include:
- Similarities and Differences between X3D and the SAI view of the world
- Internal verses External programming
- Java versus Ecmascript
- Dynamic Geometry Example (Torus)
- How to use the Triangle* nodes to create high performance dynamic geometry
generators
- Xj3D Applications: Example Applications
This section provides an overview of example applications provided with Xj3D.
We will also discuss the difference between example apps and real applications.
Applications to be examined include:
- Xj3D Browser
- Xj3D Converter
- Xj3D Mercury
- Filters
- Server-Side Xj3D: Using Xj3D to Serve Up X3D Content
In this portion of the course, we will discuss how to use the Xj3D Toolkit
for providing X3D content through a server. Topics covered include:
- Mimetypes
- XSLT
- SAV
- A NoRender Example: a headless example of a running X3D scenegraph for
simulating a robot.
- A jar example for encapsulating all the content together.
- Xj3D Extensions: Was the X3D Specification Not Good Enough?
This portion of the course will discuss the Xj3D-specific extensions
currently available. Topics include:
- Motivation for creating extensions.
- Describe extensions available:
- Particle Systems.
- UserInput Devices.
- Physics.
- Picking Utilities.
- Discuss what has been standardized in X3D 3.2
- Xj3D Internals: Architecture, Implementation and Extension
This section describes how Xj3D is implemented, and teaches how to create new
nodes. Topics covered include:
- What components and profiles of X3D does Xj3D support?
- What components have been tested for conformance?
- Overview of Xj3D Architecture:
- How to compile Xj3D.
- How to add a new Node (we will use the example of adding a Torus node).
- How to add a new component.
- How to add a new profile.
- Renderers.
- Authoring X3D: Tools and Methods
This section provides an overview on how to create X3D content. We will
examine a variety of applications including:
- ChefX3D
- Flux
- PolyTrans
- Maya
- Tecplot
- X3D Edit
- Eclipse/SWT: Using Xj3D Inside the Eclipse Environment
In this portion of the course, we will examine how to use Xj3D in Eclipse.
Topics include:
- The setup of Eclipse plug-ins: requirements, et cetera
- Xj3D as a view.
- Xj3D as a component using SAI.
- Explain the differences internally for SWT verses AWT, particularly for SAI
usage.
- Xj3D Deployment: Options and Tradeoffs
This portion of the course describes the various ways of deploying Xj3D and
the tradeoffs between different methods. Topics covered include:
- Application Installers.
- Java Webstart.
- Java Applets.
- Reducing the size of an install.
- An Introduction to Aviatrix3D
This section introduces developers to the Aviatrix3D Toolkit: the preferred
renderer for the Xj3D Toolkit. Aviatrix3D is a pure retained-mode Java scene
graph API over the top of Java OpenGL bindings (JSR 231) and OpenAL Java
bindings (for spatialized audio support). It supports lightweight and
heavyweight rendering in both AWT and SWT environments. Topics covered include:
- Low-level scene graph introduction.
- Design Philosophy and meeting X3D needs.
- Capabilities: Threading
- Networking: Connecting 3D Worlds Together
In this section, we will discuss how to network X3D worlds. We will discuss
the Distributed Interactive Simulation standard (DIS) as well as DIS-XML / XMPP.
Topics discussed include:
- Introduction to various options available.
- Specification: DIS.
- Extensions: DIS-XML/XMPP.
- Custom: Scripting + Java networking.
- Customizing Xj3D: From Look-and-Feel to the Event Model
We will discuss how to customize Xj3D. Topics to be covered include:
- What can be customized in Xj3D.
- Changing basic chrome: icons and toolbars.
- Replacing core parts of the toolkit: event model, content loaders.
|