Skip navigation links
X3DJSAIL, X3D Java Scene Access Interface Library

X3DJSAIL, X3D Java Scene Access Interface Library

.

See: Description

Packages 
Package Description
org.web3d.x3d.jsail
The X3D Java Scene Access Interface Library (X3DJSAIL) provides a comprehensive set of strongly typed X3D Java interfaces for concrete implementation classes.
org.web3d.x3d.jsail.CADGeometry
The CADGeometry component is provided for Computer-Aided Design (CAD) nodes.
org.web3d.x3d.jsail.Core
The Core component supplies the base functionality for the X3D run-time system, including the abstract base node type, field types, the event model, and routing.
org.web3d.x3d.jsail.CubeMapTexturing
The Cube Map Environmental Texturing component describes how additional texturing effects are defined to produce environmental effects such as reflections from objects.
org.web3d.x3d.jsail.DIS
The Distributed Interactive Simulation (DIS) component provides networked interoperability with the IEEE DIS protocol for sharing state and conducting real-time platform-level simulations across multiple host computers.
org.web3d.x3d.jsail.EnvironmentalEffects
Nodes in the Environmental effects component support the creation of realistic environmental effects such as panoramic backgrounds and fog.
org.web3d.x3d.jsail.EnvironmentalSensor
The Environment Sensor nodes emit events indicating activity in the scene environment, usually based on interactions between the viewer and the world.
org.web3d.x3d.jsail.EventUtilities
The Event Utility nodes provide the capability to filter, trigger, convert, or sequence numerous event-types for common interactive applications without the use of a Script node.
org.web3d.x3d.jsail.fields
The fields subpackage is provided for creating typed X3D field values and also includes various utility capabilities.
org.web3d.x3d.jsail.Followers
The Follower nodes (Chasers and Dampers) support dynamic creation of smooth parameter transitions at run time.
org.web3d.x3d.jsail.Geometry2D
The Geometry2D component defines how two-dimensional geometry is specified and what shapes are available.
org.web3d.x3d.jsail.Geometry3D
The Geometry3D component defines how three-dimensional geometry is specified and what shapes are available.
org.web3d.x3d.jsail.Geospatial
The Geospatial component defines how to associate real-world locations in an X3D scene and specifies nodes particularly tuned for geospatial applications.
org.web3d.x3d.jsail.Grouping
The Grouping component describes how nodes are organized into groups to establish a transformation hierarchy for the X3D scene graph.
org.web3d.x3d.jsail.HAnim
The Humanoid Animation (H-Anim) component for X3D defines node bindings and other details for implementing ISO/IEC 19774, the H-Anim International Specificaiton.
org.web3d.x3d.jsail.Interpolation
Interpolator nodes provide keyframe-based animation capability.
org.web3d.x3d.jsail.KeyDeviceSensor
The Key Device Sensor defines how keyboard keystrokes are inserted into an X3D world.
org.web3d.x3d.jsail.Layering
The Layering component describes how to layer a set of subscene layers into a composite scene.
org.web3d.x3d.jsail.Layout
The Layout component defines how to precisely position content in a scene in relation to the rendered results, especially for integrating 2D content with 3D content.
org.web3d.x3d.jsail.Lighting
The Lighting component specifies how light sources are defined and positioned, as well as how lights effect the rendered image.
org.web3d.x3d.jsail.Navigation
The Navigation component specifies how a user can effectively and intuitively move through and around a 3D scene.
org.web3d.x3d.jsail.Networking
The Networking component defines node types and other features used to access file-based and streaming resources on the World Wide Web.
org.web3d.x3d.jsail.NURBS
The NURBS component describes Non-uniform Rational B-Spline (NURBS) geometry and interpolation nodes.
org.web3d.x3d.jsail.ParticleSystems
The Particle Systems component specifies how to model particles and their interactions through the application of basic physics principles to affect motion.
org.web3d.x3d.jsail.Picking
The Picking component provides the ability to test for arbitrary object collision and provide basic capabilities to detecting object intersections and interactions.
org.web3d.x3d.jsail.PointingDeviceSensor
Pointing device sensor nodes detect pointing events from user-interface devices, defining activities such as a user selecting a piece of geometry.
org.web3d.x3d.jsail.Rendering
The Rendering component includes fundamental rendering primitives such as TriangleSet and PointSet nodes, as well as geometric properties nodes that define how coordinate indices, colors, normals and texture coordinates are specified.
org.web3d.x3d.jsail.RigidBodyPhysics
The Rigid Body Physics component describes how to model rigid bodies and their interactions through the application of basic physics principles to effect motion.
org.web3d.x3d.jsail.Scripting
The Script component describes how Script nodes are used to effect changes in X3D worlds.
org.web3d.x3d.jsail.Shaders
The programmable shaders component describes how programmable shaders are specified and how they affect the visual appearance of geometry.
org.web3d.x3d.jsail.Shape
The Shape component defines nodes for associating geometry with their visible properties and the scene environment.
org.web3d.x3d.jsail.Sound
The Sound component defines how sound is delivered to an X3D world as well as how sounds are accessed.
org.web3d.x3d.jsail.Text
The Text component defines how text strings are rendered in an X3D scene.
org.web3d.x3d.jsail.Texturing
The Texturing component specifies how 2D texture images are defined and then positioned on associated geometry.
org.web3d.x3d.jsail.Texturing3D
The Texturing3D component specifies how 3D volumetric textures describe surface properties as data points in a volume of space, rather than a flat surface.
org.web3d.x3d.jsail.Time
The Time component defines how time is sensed, computed and associated with events in an X3D scene.
org.web3d.x3d.jsail.VolumeRendering
The Volume Rendering component provides the ability to specify and render volumetric data sets.
org.web3d.x3d.sai
The X3D Java Scene Access Interface (SAI) package is designed to provide access to a browser and its contained scene graph, either within an internal X3D Script node or an external HTML script.
org.web3d.x3d.sai.CADGeometry
The CADGeometry component is provided for Computer-Aided Design (CAD) nodes.
org.web3d.x3d.sai.Core
The Core component supplies the base functionality for the X3D run-time system, including the abstract base node type, field types, the event model, and routing.
org.web3d.x3d.sai.CubeMapTexturing
The Cube Map Environmental Texturing component describes how additional texturing effects are defined to produce environmental effects such as reflections from objects.
org.web3d.x3d.sai.DIS
The Distributed Interactive Simulation (DIS) component provides networked interoperability with the IEEE DIS protocol for sharing state and conducting real-time platform-level simulations across multiple host computers.
org.web3d.x3d.sai.EnvironmentalEffects
Nodes in the Environmental effects component support the creation of realistic environmental effects such as panoramic backgrounds and fog.
org.web3d.x3d.sai.EnvironmentalSensor
The Environment Sensor nodes emit events indicating activity in the scene environment, usually based on interactions between the viewer and the world.
org.web3d.x3d.sai.EventUtilities
The Event Utility nodes provide the capability to filter, trigger, convert, or sequence numerous event-types for common interactive applications without the use of a Script node.
org.web3d.x3d.sai.Followers
The Follower nodes (Chasers and Dampers) support dynamic creation of smooth parameter transitions at run time.
org.web3d.x3d.sai.Geometry2D
The Geometry2D component defines how two-dimensional geometry is specified and what shapes are available.
org.web3d.x3d.sai.Geometry3D
The Geometry3D component defines how three-dimensional geometry is specified and what shapes are available.
org.web3d.x3d.sai.Geospatial
The Geospatial component defines how to associate real-world locations in an X3D scene and specifies nodes particularly tuned for geospatial applications.
org.web3d.x3d.sai.Grouping
The Grouping component describes how nodes are organized into groups to establish a transformation hierarchy for the X3D scene graph.
org.web3d.x3d.sai.HAnim
The Humanoid Animation (H-Anim) component for X3D defines node bindings and other details for implementing ISO/IEC 19774, the H-Anim International Specificaiton.
org.web3d.x3d.sai.Interpolation
Interpolator nodes provide keyframe-based animation capability.
org.web3d.x3d.sai.KeyDeviceSensor
The Key Device Sensor defines how keyboard keystrokes are inserted into an X3D world.
org.web3d.x3d.sai.Layering
The Layering component describes how to layer a set of subscene layers into a composite scene.
org.web3d.x3d.sai.Layout
The Layout component defines how to precisely position content in a scene in relation to the rendered results, especially for integrating 2D content with 3D content.
org.web3d.x3d.sai.Lighting
The Lighting component specifies how light sources are defined and positioned, as well as how lights effect the rendered image.
org.web3d.x3d.sai.Navigation
The Navigation component specifies how a user can effectively and intuitively move through and around a 3D scene.
org.web3d.x3d.sai.Networking
The Networking component defines node types and other features used to access file-based and streaming resources on the World Wide Web.
org.web3d.x3d.sai.NURBS
The NURBS component describes Non-uniform Rational B-Spline (NURBS) geometry and interpolation nodes.
org.web3d.x3d.sai.ParticleSystems
The Particle Systems component specifies how to model particles and their interactions through the application of basic physics principles to affect motion.
org.web3d.x3d.sai.Picking
The Picking component provides the ability to test for arbitrary object collision and provide basic capabilities to detecting object intersections and interactions.
org.web3d.x3d.sai.PointingDeviceSensor
Pointing device sensor nodes detect pointing events from user-interface devices, defining activities such as a user selecting a piece of geometry.
org.web3d.x3d.sai.Rendering
The Rendering component includes fundamental rendering primitives such as TriangleSet and PointSet nodes, as well as geometric properties nodes that define how coordinate indices, colors, normals and texture coordinates are specified.
org.web3d.x3d.sai.RigidBodyPhysics
The Rigid Body Physics component describes how to model rigid bodies and their interactions through the application of basic physics principles to effect motion.
org.web3d.x3d.sai.Scripting
The Script component describes how Script nodes are used to effect changes in X3D worlds.
org.web3d.x3d.sai.Shaders
The programmable shaders component describes how programmable shaders are specified and how they affect the visual appearance of geometry.
org.web3d.x3d.sai.Shape
The Shape component defines nodes for associating geometry with their visible properties and the scene environment.
org.web3d.x3d.sai.Sound
The Sound component defines how sound is delivered to an X3D world as well as how sounds are accessed.
org.web3d.x3d.sai.Text
The Text component defines how text strings are rendered in an X3D scene.
org.web3d.x3d.sai.Texturing
The Texturing component specifies how 2D texture images are defined and then positioned on associated geometry.
org.web3d.x3d.sai.Texturing3D
The Texturing3D component specifies how 3D volumetric textures describe surface properties as data points in a volume of space, rather than a flat surface.
org.web3d.x3d.sai.Time
The Time component defines how time is sensed, computed and associated with events in an X3D scene.
org.web3d.x3d.sai.VolumeRendering
The Volume Rendering component provides the ability to specify and render volumetric data sets.
.
to X3D Resources
               

X3D Java Scene Access Interface Library (X3DJSAIL)

               
to Web3D home page

X3D Java Scene Access Interface Library (X3DJSAIL) supports programmers with standards-based X3D Java interfaces and objects, all as open source.

Abstract | Codebase | Command Line | Conversions Support | Design Features | Downloads | Examples | EXI | Javadoc | License | Other Implementations | README | References | Specification Changes | TODO | Utility Methods | Contact


Abstract to top

X3DJSAIL, the X3D Java Scene Access Interface Library is a set of strongly typed Java application programming interfaces (APIs) providing programmer access to an X3D scene graph. Two open-source Java packages are included that contain X3D SAI interfaces and support the X3D Standards for Java programmers.

Available products include Examples, Javadoc, source code, build classes and draft specification annexes for node interfaces and node type interfaces.

Goals include making it easy to create an X3D scene graph using Java, while also making it hard to create an incorrect or invalid X3D model.

Multiple uses are intended for these libraries.


Codebase Production to top

This work implements the X3D Unified Object Model (X3DUOM) in support of full and emerging X3D Specification capabilities.

TODO under active development: the X3DJSAIL library-creation files currently require multiple external assets and local configuration. Ongoing work will combine these and other resources into an independently buildable project.


Command Line to top

Command line invocation is feasible through use of the org.x3d.jsail.CommandLine class.

Model validation is always performed as part of X3DJSAIL operations.


Conversions Support to top

X3D scene graph run-time capabilities are interoperable and functionally equivalent for all X3D file encodings and programming-language bindings.

Conversion capabilities continue to grow through multiple exporters and importers. Current and planned support is shown in the following table.

File load and import
X3D XML encoding .x3d (implemented) X3D ClassicVRML encoding .x3dv (TODO) X3D VRML97 encoding .wrl (TODO)
X3D JSON encoding .json (TODO) Efficient XML Interchange (EXI) .exi
(implemented with EXIficient; OpenEXI to follow)
.stl and .ply geometry import (TODO)
Export serialization
X3D XML .x3d encoding (implemented) ClassicVRML .x3dv encoding (implemented) VRML97 .wrl encoding (implemented)
X3DOM scene page X3dom.xhtml (implemented) X_ITE scene page (formerly Cobweb) X_ITE.html (implemented) X3D  .json encoding (implemented)
Efficient XML Interchange (EXI) .exi
(implemented with EXIficient, OpenEXI to follow)
GZIP .gz (implemented) ZIP .zip (implemented)
X3D Compressed Binary Encoding (CBE) .x3db (TODO) Efficient X3D Encoding .x3de (proposed) X3DJSAIL .java source using X3dToJava.xslt (implemented)
X3D canonical form (implemented, default output format) XML Canonicalization (C14N) (TODO) Shape Resource Container (SRC) .src (TODO once available)
XML Signature for authentication (TODO) XML Encryption for confidential access and privacy (TODO)

Design Features to top

Success metric: the X3D information model is sufficient to support round-trip conversion of any X3D scene from one encoding to another.

The following software-architecture principles have influenced codebase design.


Downloads to top

X3DJSAIL can be used in any Java project by including one of the following jar files in the application CLASSPATH.

X3DJSAIL.3.3.full.jar can be unzipped to create a complete local copy of all source, binaries, documentation and example programs. It is also executable on the Command Line.

X3DJSAIL.3.3.classes.jar can be used by developers for server-side usage or integration in other applications. Further CLASSPATH modifications may be needed to to use it. For full operation, third-party dependency jars found in the lib subdirectory must also be in the application CLASSPATH. Examples are shown under Command Line use.


Examples to top

Initial codebase development is building out features in a single example "smoke test" program for comprehensive testing.


Efficient XML Interchange (EXI) Compression to top

Efficient XML Interchange (EXI) is a World Wide Web Consortium (W3C) Recommendation that provides compact, high-performance compression for XML and JSON files.

 

The OpenEXI introduction whitepaper describes how EXI design produces documents that decompress directly into computer memory, with no parsing of decompressed data required.

EXI file compaction and computational performance have been demonstrated to be superior to a variety other compression schemes including gzip, zip, BSON, CBOR, and other compressed file formats.

EXI References


Other X3D Java Implementations to top


References and Relevant X3D Specifications to top


Specification Changes under Consideration to top


TODO Planned Work to top

TODO: X3dToJava.xslt stylesheet improvements

TODO: Object Model for X3D (OM4X3D) issues to top

TODO: X3DJSAIL source code and capability improvements to top


Utility Methods and Functionality to top

Utility methods provide additional helpful functionality to X3D Java programmers, going beyond the minimalist required interfaces in the X3D Java SAI specification. Long-term plans include creation (and possibly autogeneration) of a unit-test suite to always ensure that capabilities and features remain working.


Contact to top

Updated 20 November 2017.
X3D Java Scene Access Interface Library (X3DJSAIL) deployed release version is available online at
http://www.web3d.org/specifications/java/X3DJSAIL.html
Test programs, results and autogeneration build scripts are available in Sourceforge version control.
Questions, suggestions, additions and comments regarding the X3D Java SAI Library (X3DJSAIL) and X3D Unified Object Model(X3DUOM) design are welcome. Please send them to Don Brutzman (brutzman at nps.edu), John Carlson (yottzumm at gmail.com), and Roy Walmsley (roy.walmsley at ntlworld.com).
Skip navigation links
X3DJSAIL, X3D Java Scene Access Interface Library

Copyright 2005-2017 Web3D Consortium under an open-source license, free for any use. Feedback is welcome.