sim.portrayal3d.simple
Class ImagePortrayal3D

java.lang.Object
  extended by sim.portrayal3d.SimplePortrayal3D
      extended by sim.portrayal3d.simple.ImagePortrayal3D
All Implemented Interfaces:
java.io.Serializable, Portrayal, Portrayal3D

public class ImagePortrayal3D
extends SimplePortrayal3D

Portrays objects as a thin flat rectangle displaying a provided Image. The rectangle can be oriented (always facing the user) or nonoriented (rotateable). If you don't understand this, you probably want oriented.

The image scaling is handled similar to how it's done in ImagePortrayal2D: the rectangle is scaled so that the smaller of the two dimensions (width, height) is equal to 1.0. The rectangle is then centered on its origin.

You can also specify whether or not the image is intended to be (semi-)transparent or fully opaque. If your image is fully opaque, you should DEFINITELY state this, because semitransparent images have some serious Java3D bugs. Specifically, semitransparent images may not be drawn in the correct order if they're piled up on top of one another. Thus a portrayal in the background may incorrectly appear in front of a portrayal in the foreground.

Objects portrayed by this portrayal are selectable.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class sim.portrayal3d.SimplePortrayal3D
DEFAULT_APPEARANCE
 
Constructor Summary
ImagePortrayal3D(java.lang.Class c, java.lang.String resourceName)
          Constructs a (semi-)transparent, oriented ImagePortrayal3D by loading an Image resource using getClass().getResource()
ImagePortrayal3D(java.lang.Class c, java.lang.String resourceName, boolean oriented, boolean opaque)
          Constructs a (semi-)transparent, oriented ImagePortrayal3D by loading an Image resource using getClass().getResource()
ImagePortrayal3D(java.awt.Image image)
          Constructs a (semi-)transparent, oriented ImagePortrayal3D
ImagePortrayal3D(java.awt.Image image, boolean oriented, boolean opaque)
          Constructs an ImagePortrayal3D
ImagePortrayal3D(javax.swing.ImageIcon icon)
          Constructs a (semi-)transparent, oriented ImagePortrayal3D using the provided ImageIcon
ImagePortrayal3D(javax.swing.ImageIcon icon, boolean oriented, boolean opaque)
          Constructs a (semi-)transparent, oriented ImagePortrayal3D using the provided ImageIcon.
 
Method Summary
 javax.media.j3d.TransformGroup getModel(java.lang.Object obj, javax.media.j3d.TransformGroup j3dModel)
          Provides a TransformGroup which defines the node(s) to place in the scenegraph.
 
Methods inherited from class sim.portrayal3d.SimplePortrayal3D
appearanceForColor, appearanceForColors, appearanceForImage, clearPickableFlags, getCurrentDisplay, getCurrentFieldPortrayal, getCurrentGUIState, getInspector, getName, getStatus, isSelected, polygonAttributes, setAppearanceFlags, setCurrentDisplay, setCurrentFieldPortrayal, setPickableFlags, setPickableFlags, setSelected
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ImagePortrayal3D

public ImagePortrayal3D(java.lang.Class c,
                        java.lang.String resourceName)
Constructs a (semi-)transparent, oriented ImagePortrayal3D by loading an Image resource using getClass().getResource()


ImagePortrayal3D

public ImagePortrayal3D(java.lang.Class c,
                        java.lang.String resourceName,
                        boolean oriented,
                        boolean opaque)
Constructs a (semi-)transparent, oriented ImagePortrayal3D by loading an Image resource using getClass().getResource()


ImagePortrayal3D

public ImagePortrayal3D(javax.swing.ImageIcon icon)
Constructs a (semi-)transparent, oriented ImagePortrayal3D using the provided ImageIcon


ImagePortrayal3D

public ImagePortrayal3D(javax.swing.ImageIcon icon,
                        boolean oriented,
                        boolean opaque)
Constructs a (semi-)transparent, oriented ImagePortrayal3D using the provided ImageIcon.


ImagePortrayal3D

public ImagePortrayal3D(java.awt.Image image)
Constructs a (semi-)transparent, oriented ImagePortrayal3D


ImagePortrayal3D

public ImagePortrayal3D(java.awt.Image image,
                        boolean oriented,
                        boolean opaque)
Constructs an ImagePortrayal3D

Method Detail

getModel

public javax.media.j3d.TransformGroup getModel(java.lang.Object obj,
                                               javax.media.j3d.TransformGroup j3dModel)
Description copied from interface: Portrayal3D
Provides a TransformGroup which defines the node(s) to place in the scenegraph. This is the Portrayal3D equivalent of Portrayal2D's draw(object, graphics, drawinfo) method.

You should hang your model off of the TransformGroup provided. You should not transform that TransformGroup in any way -- it is used elsewhere. Instead if you wish to transform your model (rotate it etc.) you should add your own additional TransformGroup as necessary.

The provided TransformGroup can be null; in this case you need to create and return the outer TransformGroup for the object. If the provided TransformGroup is non-null, you should modify it and return the same.

SimplePortrayals should assume the following contract: at the point that getModel(...) is called, the field portrayal and display will have already been set if it exists, else it will be null.

Specified by:
getModel in interface Portrayal3D
Overrides:
getModel in class SimplePortrayal3D