Welcome to Xj3D codebase. This are notes for the 8 Nov 2002 dev release of Xj3D. Since last Dev Release: ----------------------- 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. Don't use DOMViewer/XSLTViewer. It is broken with this spec. It is not included in this release but you may have it around from the last one. It is in the process of being removed completed and replaced with a much better example that makes use of our native XML parsing. You will see an announcement in the next few days following this basic release. SAI once again brought up to latest spec definitions. X3D VRML encoded files now spec compliant. Field naming changes required: eventIn -> inputOnly etc etc. Handles new META keyword too. Debugging of string parsing for SF/MFString in varied circumstances. Hopefully we've got it all covered now! Lots of script debugging. Ignoring of events. Events after initialize() being sent. Lots of work on getting better error messages to make debugging easier. Support for centerOfRotation field in X3D Viewpoint. EXAMINE mode implemented. Uses X3D semantics (since VRML97 never had any!) NormalInterpolator implemented. Fixed a lot of errors in the low-level spec complaince. Now passes all conformance tests for VRML97. Added partial texturing capability to the OpenGL-based renderers. OpenGL IFS implementation courtesy of Rick Goldberg. Extrusion implemented. Known to work for static. Not tested for dynamically changing the fields. EAI cleanups to avoid excessive object generation for events and security issues when running inside applets. Javascript scripting cleanups. Fixed bugs with array index accessing of MFFields and object reuse. Added implementation of a print() method to handle broken code that normally runs in Cortona but doesn't in any other browser. Inlines. Now some better support for various edge cases, but some problems still exist - such as having multiple inlines using the same URL field values. If you DEF/USE an inline, odd things happen too. 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. 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.