001: /*
002: * $RCSfile: Scene.java,v $
003: *
004: * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions
008: * are met:
009: *
010: * - Redistribution of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * - Redistribution in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in
015: * the documentation and/or other materials provided with the
016: * distribution.
017: *
018: * Neither the name of Sun Microsystems, Inc. or the names of
019: * contributors may be used to endorse or promote products derived
020: * from this software without specific prior written permission.
021: *
022: * This software is provided "AS IS," without a warranty of any
023: * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
024: * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
025: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
026: * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
027: * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
028: * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
029: * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
030: * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
031: * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
032: * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
033: * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
034: * POSSIBILITY OF SUCH DAMAGES.
035: *
036: * You acknowledge that this software is not designed, licensed or
037: * intended for use in the design, construction, operation or
038: * maintenance of any nuclear facility.
039: *
040: * $Revision: 1.4 $
041: * $Date: 2007/02/09 17:20:06 $
042: * $State: Exp $
043: */
044:
045: package com.sun.j3d.loaders;
046:
047: import java.util.Hashtable;
048:
049: import javax.media.j3d.Behavior;
050: import javax.media.j3d.BranchGroup;
051: import javax.media.j3d.TransformGroup;
052: import javax.media.j3d.Light;
053: import javax.media.j3d.Background;
054: import javax.media.j3d.Fog;
055: import javax.media.j3d.Sound;
056:
057: /**
058: * The Scene interface is a set of methods used to extract
059: * Java 3D scene graph information from a file loader utility.
060: * The interface is used to give loaders of various
061: * file formats a common public interface.
062: */
063: public interface Scene {
064:
065: /**
066: * This method returns the BranchGroup containing the overall
067: * scene loaded by the loader. All enabled items will be loaded
068: * into this scene except for Behaviors (the Behavior group must be
069: * retrieved separately so that users can choose whether and when
070: * to activate behaviors).
071: */
072: public BranchGroup getSceneGroup();
073:
074: /**
075: * This method returns an array of all View Groups defined in the file.
076: * Each View Group is a TransformGroup that is already placed within
077: * the scene that is returned in the getSceneGroup() call. This
078: * TransformGroup holds the position/orientation of the view
079: * as defined by the file. A user might request these references to
080: * the groups in order to look at the data stored there or
081: * to place ViewPlatforms within these groups and allow the
082: * View to activate these ViewPlatforms so that the user would
083: * see the scene from the viewpoints defined in the file.
084: */
085: public TransformGroup[] getViewGroups();
086:
087: /**
088: * This method returns an array of floats with the horizontal field
089: * of view. The entries in the array will correspond to those in the
090: * array returned by the method getViewGroups. The entries from these
091: * two arrays together provide all the information needed to recreate
092: * the viewing parameters associated with a scene graph.
093: */
094: public float[] getHorizontalFOVs();
095:
096: /**
097: * This method returns an array of all Lights defined in the file.
098: * If no lights are defined, null is returned.
099: */
100: public Light[] getLightNodes();
101:
102: /**
103: * This method returns a Hashtable which contains a list of all named
104: * objects in the file and their associated scene graph objects. The
105: * naming scheme for file objects is file-type dependent, but may include
106: * such names as the DEF names of Vrml or filenames of objects (as
107: * in Lightwave 3D). If no named objects are defined, null is returned.
108: */
109: public Hashtable getNamedObjects();
110:
111: /**
112: * This method returns an array of all Background nodes defined in the
113: * file. IF no Background nodes are defined, null is returned.
114: */
115: public Background[] getBackgroundNodes();
116:
117: /**
118: * This method returns an array of all Fog nodes defined in the
119: * file. If no fog nodes are defined, null is returned.
120: */
121: public Fog[] getFogNodes();
122:
123: /**
124: * This method returns an array of all the behavior nodes
125: * in the scene. If no Behavior nodes are defined, null is returned.
126: */
127: public Behavior[] getBehaviorNodes();
128:
129: /**
130: * This method returns an array of all of the Sound nodes defined
131: * in the file. If no Sound nodes are defined, null is returned.
132: */
133: public Sound[] getSoundNodes();
134:
135: /**
136: * This method returns the text description of the file. If no
137: * such description exists, this method should return null.
138: */
139: public String getDescription();
140:
141: }
|