Release: M6(January 03 , 2003) ------------------------- Major changes since M5: XML Parsing now a first class supported operation and handled seamlessly. Supports the latest spec release and further development work past current published spec. See the X3d-3.0.dtd file for the required document structure. Required some major restructuring of the parsing code including lots of package shuffling. Complete rewrite of all of the event model evaluation code. It is now fully specification compliant. It is also much more efficient and generally renderer-independent. The only time it dips into renderer dependent code is for navigation and view-dependent actions. (ie sensors) No garbage generated and only updates all objects once per frame rather than after every eventIn recieved. ECMAScript constructors now validated to work correctly. Had to rework a lot of code in the builtin object representation to do this because of limitations in the Rhino capabilities (and complete abscence of docs) EXTERNPROTO debugging. Almost every gnarly example of PROTO/EXTERNPROTO that we could find on the 'net works. We've run across quite a few doing dodgy stuff such as cyclic DEF/USE constructs that are illegal in VRML that some other browsers support. There is one hard-to-reproduce timing oriented bug left that we haven't fixed yet. About one in ten tries of using heavily nested externprotos will cause one not to show, but without crashes or any other indicator. Full runtime support for an in-memory VRML scene with no rendered output. Not all works yet, no navigation or any sensors, just basics. ProximitySensors now support position_changed and orientation_changed VisibilitySensors more accurate about when they are detected Protos and Externprotos coming and going from the scene graph work correctly for the inclusion of sensors and bindables. Hex encoding of integer values works for all SF/MFInt32 fields. MultiTexturing. Modified version of the Blaxxun proposal but more VRML-like. LOD is back functional again. Added support for MFImage and SF/MFColorRGBA. New field types defined by the X3D spec. Support for centerOfRotation field in X3D Viewpoint. EXAMINE mode now sets the orientation to look at this point and orbit around it. These are release notes for Xj3D for M6. If a feature works differently based on an encoding(utf8 or XML) it will be noted. The following VRML concepts work: parsing(utf8 and XML) If the last line of the file is a comment the parser generates an error Supports #* *# as a block comment character which has been changed to #/* */# in the spec. DEF/USE(utf8 and XML) PROFILE and COMPONENT(UTF8 nad XML) Profile and components definitions follow the ISO spec IMPORT/EXPORT (utf8) Keywords are supported and exports work. Imports do not, but don't crash or issue an error either (silent fail) Routing(utf8 and XML) Scripting(utf8) JSAI(Java) supported ECMAScript supported Except - SFNode constructor with a string (eg new SFNode('Group[]'); - VrmlMatrix implemented, not tested.Obscure setTransform stuff partially implemented (missing shear handling) External (EAI 2.0) supported Prototypes(utf8) EXTERNPROTO as the first node not supported Extern prototypes (utf8) URN Resolution - Local resolution works, but you need to setup the application to specify the correct installation path. See DIYBrowser for an example. GeoVRML support GeoInline, GeoElevationGrid, GeoPositionInterpolator tested Spec issues with GeoViewpoint UMEL Support Works, need to setup installation path. See DIYBrowser for an example. LatticeXVL Works in general. May have broken something since M4, but that's more a general proto issue. The following nodes work: Anchor Appearance Box Color ColorInterpolator Cone Coordinate CoordinateInterpolator Cylinder DirectionalLight ElevationGrid Extrusion FontStyle Group ImageTexture IndexedFaceSet IndexedLineSet Lighting uses diffuseColor instead of emissiveColor Inline LoadSensor KeySensor LOD Material Look at turning lighting off for emissive only decls NavigationInfo Normal NormalInterpolator OrientationInterpolator PixelTexture PointLight PointSet Lighting uses diffuseColor instead of emissiveColor PositionInterpolator ScalarInterpolator Script Shape Sphere SpotLight StaticGroup Switch TextureCoordinate TextureTransform TimeSensor Transform Viewpoint WorldInfo The following nodes have some implementation but are not finished: AudioClip Should work with 1.3.1 beta is released. Otherwise a null sound warning is generated. Background Textures work, no sky or ground colors. Billboard Functions as grouping node only, no movement to face viewer. Collision Proxy not supported Fog Needs to be patched into the new bindable handling. Text Does not handle vertical rendering, horizontal only. Sizing still looks weird. Sound TouchSensor Does not support hitNormal and hitTexCoord changed events. hitPoint is OK. isOver may need a little further testing, but should be generally reliable. The following VRML97 nodes are not implemented: CylinderSensor MovieTexture PlaneSensor SphereSensor Specific Issues with example programs: browser Reloading a file with multiple inlines using the same URL but not DEFed will cause a multi_parent exception. Switching to a SimpleLoadManager instead of a MemCacheLoadManager will resolve. GeoVRML and UMEL local resolution not supported in pre-compiled code, you need to specify the local installation path in DIYBrowser.java and recompile. loader Works as advertised X3D specification Notes: SAI interfaces are provided but no implementation is yet available. Custom Xj3D Extensions: Surfaces/Overlays: Component named xj3d_overlay is available. A sort-of surfaces proposal, but has about 50% commonality. There as a strawman, but works completely. Expect the nodes to change over time, so don't get too accustomed to it. Node specs are available on the xj3d.org website. Particle systems. Component named xj3d_particles. No relation to the Blaxxun proposal as that is way too limiting. Some implementation notes available on xj3d.org. Not tested yet and only runs for the Java3D renderer.