J3D-VRML97 Java 3D Loader

Official Project Home: https://j3d-vrml97.dev.java.net/

License: BSD

Summary: Java 3D loader module for loading VRML geometry. This version has a number of bug fixes and improvements compared with the version on the java.net website.

Download latest HVRC-modified version: j3d-vrml97-10-01-26.zip

Michael Louka, Svein Tore Edvardsen and Tom-Robert Bryntesen at IFE HVRC have added the following improvements to the "official" version on the java.net website:

* Supports mip-map generation
  (use boolean property: org.jdesktop.j3d.loaders.vrml97.mipmap)
* Fixed gzip detection
* Improvemed memory handling and performance when loading
  large files
* Texture modulation option
  (use boolean property: org.jdesktop.j3d.loaders.vrml97.modulate)
* Improved URL-handling
* Fixed loading of inline files using relative paths
  (use boolean property: org.jdesktop.j3d.loaders.vrml97.inline.relativebase)
* Imageio for texture loading
* Improved handling of TextureTransform
* Texture generation was performed on shapes with texture
  coordinates
* Copes with IndexedFaceSets with empty list of points
* Copes with situations where a face is defined with less
  than three vertices
* Correctly handles non-convex polygons
* CLAMP_TO_EDGE rather than CLAMP when clamping textures
* Texture file caching to speed up loading of files with
  multiple references to the same texture file
* Fixed a bug in CylinderSensor where exposed field objects
  were not constructed before initial values were set
* Fixed a problem where a ROUTE encountered by the parser
  could lead to an exception if it refers to a node later
  in the file that has not yet been loaded
* Fixed a bug in PlaneSensor where exposed field objects
  were not constructed before initial values were set
* Fixed a bug in PlaneSensor and CylinderSensor where event
  out field objects were not constructed (CylinderSensor) or
  were not constructed before initial values were set
* Fixed NullPointerException bug in Appearance node related
  to texgen attributes
* Fixed a bug in the Sound node implementation where one of
  the fields was not always initialised, leading to a
  NullPointerException when loading VRML files containing
  Sound nodes
* Corrected an unhandled potential null pointer situation in
  the Script node's clone method, which prevented some
  models from loading at all
* Corrected an issue with unitialised fields in the 
  VisibilitySensor node implementation
*  Corrected handling of "ccw FALSE" as only the coordinate
  indexes of IndexedFaceSets were being correctly flipped,
  causing significant issues with the display of textures
  for modes with ccw set to false
* Corrected texture coordinate generation in the Appearance
  node implementation so that it is spec compliant.
* Modified Inline node to attempt to load the data with the
  case of the file extension reversed, if the file requested
  does not exist. This is a hack to workaround an issue
  where case-insensitive file system users have copied files
  resulting in the case (as specified in the file
  referencing the inline) changing from .wrl to .WRL
* Fixed setting of description in Scene from the WorldInfo
  node in a VRML file (if one exists)
* Modified AudioClip implementation to allow VRML model to
  continueto load even if no valid audio data could be found
  for one or more clips. Previously a model would fail to load
  at all if a referenced audio file was missing or unreadable
* Modified Cylinder node to enable it to be serialised via
  scenegraphio
* Added support for non-powers-of-two textures via property:
  org.jdesktop.j3d.loaders.vrml97.nonpowtwo
* Modified mipmap generation to use hardware support if
  available
* Fixed parser to tacke VisibilitySensor definition
* Corrected instancing of PROTOs so that the instance has the
  type of the base node in the PROTO if there is just one base
  node and not type Group regardless
* Modified routine for reading from URL in Inline to cope with
  MFString values
* Added workaround (hack to cope) for cases when ILS Strip vertex
  count is less than 2 
* Optimised memory usage for textures
* Optimised texture loading
* Corrected a spec-compliancy bug where IndexedLineSet and PointSet
  without vertex colours didn t use the materials emissiveColor
* Added support for accessing ROUTE information even when in
  LOAD_STATIC mode
* Adjusted TimeSensor, TouchSensor, DragSensor, and Field to enable
  implementation of sensor behaviour in Java 3D
  

last updated: 26 January 2010 (Michael.Louka@hrp.no)