Welcome to Xj3D codebase. This are notes for the 25 Nov 2002 dev release of Xj3D. Since last Dev Release: ----------------------- DOMViewer/XSLTViewer are now removed. There is a new variant of XSLTViewer in the examples/browser directory (the DOMViewer directory is now obsolete) that uses the Transformer and StreamResult to pipe the transformations directly to our SAX-XML parser leading to a much more efficient system. 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. All the NPS SAVAGE examples work as well but 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. Reorganised all the components to be consistent with the Nov 25 internal draft spec. Background node works with textures. No sky/ground colours yet. Rewrote the bindable node handling (again!). Viewpoints/Backgrounds under a DEF will work now (never have in the past due to issues with SharedGroups). Fog node is disabled pending updates to use the same code path Added support for MFImage and SF/MFColorRGBA. New field types defined by the X3D spec. Changed over internal use of java.util.HashSet to our own custom implementation. Much more efficient and doesn't generate any garbage, which was a major issue in the mobile renderer. Major changes since M5: ----------------------- 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. 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. To work, you must use our DTDs not those on the web3d.org site. Initial implementation for a mobile-capable browser/renderer Full runtime support for an in-memory VRML scene with no rendered output. Not all works yet, no navigation or any sensors, just basics. Vector math library following OpenGL conventions ProximitySensors now support position_changed and orientation_changed VisibilitySensors more accurate about when they are detected. Combination of this with ProxSensor changes means the old-style VRML97 HUDs work now. 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. OpenGL renderer supports IFS and more efficient vector maths. Viewpoints movable and bindable. Multi-pass rendering available for handling output devices like Elumens Dome & VisionStations. LOD is back functional again. ECMAScript debugging. - Was not previously updating the field values on successive calls to the same script instance. - EventOuts generated by user code in initialize and shutdown were not being sent. SAI code is brought up to date with last draft of spec. Next dev release should have it back parallel with the ISO CD Text. SAI is not implemented, however. You can just compile against it. H-Anim support is working fully now, including 2001 spec. Matt Beitler has offered to test against full test suite for complete conformance checking. Xj3D working within a web browser is debugged and fully supported. It doesn't work as a plugin, but assumes the use of the EAI createComponent for now. SFImage completed now. Handles hex encoded (OxFF0000) and zero size images. Sorted out issues with occasional truncated files. Turns out to be a bug with HTTPClient library. Now require version 0.3-3. Loader completely rewritten to include a separate execution path for when the user wants to static load the geometry. Now a blocking call that will not return until all external content has been loaded. API call added to provide directory configuration information for resolving URNs. Makes GeoVRML and UMEL usable when using a loader. Can specify a world and all its texturs as a jar: URL now. Test world is jar:http://www.xj3d.org/downloads/test.jar!/jar_box.wrl Known Issues: ------------- General: Huge amounts of garbage generated internally within Java3D's picking subsystem using Cone-based objects. Both PickConeRay and PickConeSegment are generating upwards of 2MB of garbage a second on a moderately complex scene! There are bug reports in for both of these. browser Viewing files with the Java3D-based renderers are causing stuttering problems when dragging the mouse. This appears to be some issue between Java3D and Swing as debugging shows that the J3D behaviours are still executing internally, but are not blitting the pixels to screen. There's nothing we can do about it. Suggest you try using AWT-based UI and see if that helps. 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. DOMViewer Does not support scripts or protos in XML documents. Since it sets every field of a node it can uncover bugs that DIYBrowser won't. Loader Works as advertised. Removed old loader example as the true one is supposed to be LoaderDemo. License ------- This source is licensed under the GNU LGPL v2.1 Please read http://www.gnu.org/copyleft/lesser.html for more information This software comes with the standard NO WARRANTY disclaimer for any purpose. Use it at your own risk. If there's a problem you get to fix it.