This package provides a Java3D SceneGraph IO capability.
The API supports IO of a scenegraph to and from a Java Stream and/or
RandomAccessFile. The features offered for these two io systems are
somewhat different.
The SceneGraphFileReader and SceneGraphFileWriter classes provide
IO to and from a RandomAccessFile. They allow a universe and/or
multiple BranchGraphs to be written to the file with Node's and
NodeComponent's shared between the separate graphs. The graphs can be
read in any order.
SceneGraphStreamReader and SceneGraphStreamWriter classes provide
IO to and from a Stream. These classes allow a universe and/or
multiple BranchGraphs to be passed over stream. In contrast to the
FileReader/Writer sharing of Node's is NOT supported between graphs
by the API. Sharing of node components is supported. If your
application requires references to Nodes in other graphs (such as
SharedGroups) the application must handle the references using the
namedObjects constructs.
Note : If you use SceneGraphStreamWriter class to write to a
FileOutputStream the resulting file cannot be read using the
SceneGraphFileReader, the converse is also true, you can not use a
FileInputStream to load a file written by SceneGraphFileWriter.
The package supports the IO of all the Java3D 1.3 core classes
and many of the utilities. It also includes interfaces which can be
implemented to allow user defined subclasses of SceneGraphObjects to
be stored. Information on the extensibility can be found
here
The package has a number of properties which can be used to control the IO
behavior
j3d.io.UseSuperClassIfNoChildClass when this property is present the load
operation will attempt to avoid failure if Scene Graph nodes are not present
in the classpath. For example if a developer has subclassed BranchGroup with a
class called MyBG but has not
implemented the SceneGraphIO interface when the API saves the graph the
superclass (ie BranchGroup) data will be stored. When the scene is loaded
normally MyBG must be in the classpath otherwise the load will fail. If this
property is set then the superclass node (ie BranchGroup) will be instantiated
when MyBG is missing. Obviously, if MyBG contained any state information
then this will be lost.
j3d.io.ImageCompression this can be set to None, GZIP, JPEG and tells the
IO system to compress images in the .j3f file using the prescribed technique. In
the future this will be extended to support all the formats available in
javax.imageio in JDK 1.4.
|