Xj3D Implementation Status

This product conforms to the X3D 3.0 Interchange Profile.

This page will detail the progress of the Xj3D project in implementing the X3D and VRML97 specifications. It will be used to self-report our compliance with the specifications and to document where work is needed in the project.


One of our major goals is to be 100% compliant with the specifications we implement. Having an open source implementation available for all specification implementators will make all Web3D content more interoperable. We continually need help in running conformance tests to keep this table accurate. If you think an item is inaccurate, please post to the source list.

Xj3D has been tested by the Web3D Consortium and conforms to the X3D Interchange profile. As further tests become available we will have Xj3D tested against more profiles.

Score Card

These results are posted by renderer. Currently Xj3D supports four renderers: Java3D, OpenGL, mobile device and the null renderer. Null renderer results are not posted as they should work for any node implemented in any other renderer.

These results where last updated on 25 January 2006, released as 1.1. 2.0 results will be posted after the first formal release.

OpenGL Renderer
Interchange98% (46/47)100% (46)0% (0)0% (0)
Interactive13% (5/38)89% (34)11% (4)0% (0)
Immersive7% (6/86)86% (74)8% (7)1% (1)
Java3D Renderer
Interchange18% (5/28)100% (28)0% (0)0% (0)
Interactive13% (5/38)92% (35)8% (3)0% (0)
MPEG-4 Interactive13% (5/38)92% (35)8% (3)0% (0)
Immersive7% (6/86)86% (74)9% (8)0% (0)
Mobile Renderer
Interchange0% (0/28)50% (14)11% (3)39% (11)
Interactive0% (0/38)37% (14)8% (3)55% (21)
MPEG-4 Interactive0% (0/38)37% (14)8% (3)55% (21)
Immersive0% (0/54)28% (15)6% (3)67% (36)

Node Status

Status of the nodes that belong to both VRML97 and X3D v3.0. Nodes for later amendments are catalogued separately below.

These results where last updated on April 22 2006, 1.0 Release.

Node Java3DOpenGL Mobile
Anchor Complete Complete None
Appearance Complete Conforms Complete
Arc2D None None None
ArcClose2D None None None
AudioClip Complete Complete None
Background Complete Conforms None
Billboard Complete Complete None
BooleanFilter Complete Complete None
BooleanSequencer Complete Complete None
BooleanToggle Complete Complete None
BooleanTrigger Complete Complete None
Box Complete Conforms Complete
Circle2D None None None
Collision Partial Complete None
Color Conforms Conforms None
ColorInterpolator Conforms Conforms Conforms
ColorRGBA Complete Complete None
Cone Complete Conforms None
Contour2D None None None
ContourPolyline2D None None None
Coordinate Conforms Conforms None
CoordinateDouble None None None
CoordinateInterpolator Conforms Conforms Conforms
CoordinateInterpolator2DConformsConforms Conforms
Cylinder Complete Conforms None
CylinderSensor Partial Partial None
DirectionalLight Complete Conforms None
Disk2D None None None
ElevationGrid Complete Complete None
EspduTransform Partial Partial None
Extrusion Complete Partial None
FillProperties Partial Partial None
Fog Complete Complete None
FontStyle Complete Complete Complete
GeoCoordinate Complete Complete None
GeoElevationGrid Complete Complete None
GeoLocation Complete Complete None
GeoLOD None Complete None
GeoMetadata Complete Complete None
GeoOrigin Complete Complete None
GeoPositionInterpolatorComplete Complete None
GeoTouchSensor Complete Complete None
GeoViewpoint Partial Partial None
Group Complete Conforms Complete
HAnimDisplacer None Complete None
HAnimHumanoid None Complete None
HAnimJoint None Complete None
HAnimSegment None Complete None
HAnimSite None Complete None
ImageTexture Complete Conforms None
IndexedFaceSet Complete Conforms Partial
IndexedLineSet Complete Conforms None
IndexedTriangleFanSet Complete Conforms None
IndexedTriangleSet Complete Conforms None
IndexedTriangleStripSetComplete Complete None
Inline Complete Complete Complete
IntegerSequencer Complete Complete None
IntegerTrigger Complete Complete None
LineProperties Complete Complete None
LineSet None Conforms None
LoadSensor Complete Complete Complete
LOD Complete Complete None
KeySensor Complete Complete Complete
Material Complete Conforms Complete
MetadataDouble Complete Conforms None
MetadataFloat Complete Conforms None
MetadataInteger Complete Conforms None
MetadataSet Complete Conforms None
MetadataString Complete Conforms None
MovieTexture Partial Partial None
MultiTexture Partial Partial None
MultiTextureCoordinate Complete Conforms None
MultiTextureTransform Complete Conforms None
NavigationInfo Complete Conforms Partial
Normal Complete Conforms None
NormalInterpolator Conforms Conforms Conforms
NurbsCurve None None None
NurbsCurve2D None None None
NurbsOrientationInterpolatorNone None None
NurbsPatchSurface None None None
NurbsPositionInterpolator None None None
NurbsSet None None None
NurbsSurfaceInterpolator None None None
NurbsSweptSurface None None None
NurbsSwungSurface None None None
NurbsTextureCoordinate None None None
NurbsTrimmedSurface None None None
OrientationInterpolatorConforms Conforms Conforms
PixelTexture Complete Conforms None
PlaneSensor Partial Complete None
PointLight Complete Complete None
PointSet Complete Conforms None
Polyline2D Complete Complete None
Polypoint2D Complete Complete None
PositionInterpolator Conforms Conforms Conforms
PositionInterpolator2D Conforms Conforms Conforms
ProximitySensor Complete Complete None
ReceiverPdu None None None
Rectangle2D Complete Complete None
ScalarInterpolator Conforms Conforms Conforms
Script Complete Complete Complete
Shape Complete Conforms Complete
SignalPdu None None None
Sound Partial Complete None
Sphere Complete Conforms Complete
SphereSensor Complete Complete None
SpotLight Complete Complete None
StaticGroup Complete Complete None
StringSensor Complete Complete Complete
Switch Complete Complete None
Text Partial Partial None
TextureBackground None None None
TextureCoordinate Complete Conforms None
TextureTransform Complete Conforms None
TimeSensor Complete Conforms Complete
TimeTrigger Complete Complete None
TouchSensor Partial Complete None
Transform Complete Conforms Complete
TransmitterPdu None None None
TriangleFanSet Complete Conforms None
TriangleSet Complete Conforms None
TriangleSet2D Complete Conforms None
TriangleStripSet Complete Conforms None
Viewpoint Complete Conforms Partial
VisibilitySensor Complete Complete None
WorldInfo Conforms Conforms Conforms

Amendment 1 node status

Node Java3DOpenGL Mobile
TextureMatrixTransform None None None
TextureTransform3D None Complete None
TextureCoordinate3D None Complete None
TextureCoordinate4D None Complete None
Composed3DTexture None None None
Pixel3DTexture None None None
Image3DTexture None None None
ComposedCubeMapTexture None None None
PixelCubeMapTexture None None None
ImageCubeMapTexture None None None
GeneratedCubeMapTextureNone None None
FogCoordinate None Complete None
LocalFog None Complete None
FloatVertexAttribute None None None
ComposedShader None None None
ShaderPart None None None
ProgramShader None None None
ShaderProgram None None None
Matrix3VertexAttribute None None None
Matrix4VertexAttribute None None None
PackagedShader None None None

Amendment 2 node status

Node Java3DOpenGL Mobile

Abstract Spec Functionality

Feature Conformance
DEF/USE Conforms
Route Complete
Scripting - JSAI (VRML97) Complete
Scripting - JavaScript (VRML97) Complete
EAI (VRML97) Complete
SAI (X3D - Internal) Partial
SAI (X3D - External) Partial
Prototypes Complete
Extern Prototypes Complete
URN Resolution Complete
PROFILE Conforms
META Conforms

Language Encodings

Feature VRML97 X3D-VRMLX3D-XMLX3D-Binary
Basic lexical parsingCompleteCompleteCompleteComplete
DEF/USE CompleteCompleteCompleteComplete
Route CompleteCompleteCompleteComplete
Scripts CompleteCompleteComplete
Prototypes CompleteCompleteComplete
Extern Prototypes CompleteCompleteComplete
URN Resolution CompleteCompleteCompleteComplete
PROFILE N/A CompleteCompleteComplete
COMPONENT N/A CompleteCompleteComplete
META N/A CompleteCompleteComplete
IMPORT/EXPORT N/A CompleteComplete

Node Implementation Notes

Java3D - proxy field not handled. Collides always based on raw geometry

autoOffset not quite calculated correctly

Still working on some of the lesser-used fields.

OpenGL version does not handle end caps correctly, nor creaseAngle.

The hatching definition in the spec is completely borked. No idea how its even supposed to be implemented. Is it in image-space, world space, what happens if there are other textures etc.

Height-based speed and range scaling not correctly scaled. Auto visibilityLimit not sure what to do, NavigationInfo side not tested.

creaseAngle not handled

JMF is extremely problematic. Doesn't work most of the time. Going to have to look into alternate video encoding strategies as JMF will only support a single stream running at a time (which is spec-compliant, but almost useless). Maybe have to start a Java binding to OpenML?

Not all the modes are transcribed to the underlying API

autoOffset not quite calculated correctly

Java3D's sound handling is very dodgy. For Java3D 1.3.2 and later, sound is most likely to be disabled completely.

autoOffset not quite calculated correctly

length and maxExtents not handled. No testing with non-latin character sets.

Normal and texCoord outputs not generated

[ Xj3D Homepage | Xj3D @ Web3d | Screenshots | Dev Releases | Conformance | Contributors | Getting Started ]
Last updated: $Date: 2007-01-29 21:45:09 $