Home     Yumetech, Inc.
Course Material















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

  1. 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.

  2. 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

  3. 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
  4. 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.
  5. 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

  6. 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.

  7. 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

  8. 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.

  9. 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.

  10. 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

  11. 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.

  12. 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.

If you have any questions, please don't hesitate to phone us at (206) 340-8900, or email info@yumetech.com.