Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## sim.portrayal3d.simple
Class PrimitivePortrayal3D

    java.lang.Object
      sim.portrayal3d.SimplePortrayal3D
          sim.portrayal3d.simple.PrimitivePortrayal3D

All Implemented Interfaces:
  java.io.Serializable, Portrayal, Portrayal3D

Direct Known Subclasses:
  BoxPortrayal3D, ConePortrayal3D, CylinderPortrayal3D, Shape3DPortrayal3D, SpherePortrayal3D

    public abstract class PrimitivePortrayal3D

extends SimplePortrayal3D

An abstract superclass for portrayals involving Shape3D or various Primitive (sphere, cone, etc.) objects. The default size for these objects is to have an approximately 1.0f diameter.

The objects are pickable by default, though you can change this by calling setPickable(). This must be called prior to the first call to getModel(...) (or if you override getModel(...), prior to your calling of super.getModel(...)).

The objects are can also have an optional internal Transform3D through which they may be rotated or scaled etc. Note that adding this Transform3D also adds additonal overhead, slowing down the model by perhaps 25%. To add this Transform3D, call setTransform() or setScale() at prior to the first call to getModel(...) (or if you override getModel(...), prior to your calling of super.getModel(...)). Once you have done this, you may change the scaling or transform again with these methods at any time, preferably during getModel(...).

The objects also have an appearance. To set the appearance, call setAppearance().

See Also:
  Serialized Form

Field Summary

Fields inherited from class sim.portrayal3d.SimplePortrayal3D
`DEFAULT_APPEARANCE, parentPortrayal`

Constructor Summary
`PrimitivePortrayal3D()`

Method Summary
`protected javax.media.j3d.Appearance` | `getAppearance(javax.media.j3d.TransformGroup j3dModel)` Returns an appearance object suitable to set in setAppearance(...).
`javax.media.j3d.TransformGroup` | `getModel(java.lang.Object obj, javax.media.j3d.TransformGroup j3dModel)` We suggest that if you wish to override this to change the appearance or scale or transform of the underlying model, do the changes first and THEN call super.getModel(obj, j3dModel).
`protected javax.media.j3d.Shape3D` | `getShape(javax.media.j3d.TransformGroup j3dModel, int shapeIndex)` Returns the shape by the given index.
`protected abstract int` | `numShapes()` Returns the number of shapes handled by this primitive or Shape3D.
`protected void` | `setAppearance(javax.media.j3d.TransformGroup j3dModel, javax.media.j3d.Appearance app)` Sets the Appearance of the portrayal.
`void` | `setPickable(boolean val)`
`protected boolean` | `setScale(javax.media.j3d.TransformGroup j3dModel, float val)` Sets the Transform3D of the portrayal to a given scaling value, if there *is* a transform (in some cases, such as ValuePortrayal3D, there won't be any).
`static void` | `setShape3DFlags(javax.media.j3d.Shape3D shape)` Sets common Shape3D flags to make its appearance and geometry easy to modify.
`protected boolean` | `setTransform(javax.media.j3d.TransformGroup j3dModel, javax.media.j3d.Transform3D transform)` Sets the Transform3D of the portrayal, if there is one (in some cases, such as ValuePortrayal3D, there won't be any).

Methods inherited from class sim.portrayal3d.SimplePortrayal3D
`appearanceForColor, appearanceForColors, appearanceForImage, clearPickableFlags, getInspector, getName, getStatus, isSelected, polygonAttributes, setAppearanceFlags, setParentPortrayal, setPickableFlags, setPickableFlags, setSelected`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### PrimitivePortrayal3D

    public PrimitivePortrayal3D()

Method Detail

### setShape3DFlags

    public static void setShape3DFlags(javax.media.j3d.Shape3D shape)

  Sets common Shape3D flags to make its appearance and geometry easy to modify.

### getShape

    protected javax.media.j3d.Shape3D getShape(javax.media.j3d.TransformGroup j3dModel,
                                               int shapeIndex)

  Returns the shape by the given index. Cylinder has three shapes (BODY=0, TOP=1, BOTTOM=2), while Cone has two shapes (BODY=0, CAP=1) and Sphere has a single shape (BODY=0). Useful for use in for-loops in combination with numShapes().

### getAppearance

    protected javax.media.j3d.Appearance getAppearance(javax.media.j3d.TransformGroup j3dModel)

  Returns an appearance object suitable to set in setAppearance(...). If the j3DModel is null, a brand new Appearance will be created and returned; otherwise the Appearance (not a copy) will be extracted from the j3DModel and provided to you. It's good practice to call setAppearance(...) anyway afterwards. Only call this method within getModel().

### setTransform

    protected boolean setTransform(javax.media.j3d.TransformGroup j3dModel,
                                   javax.media.j3d.Transform3D transform)

  Sets the Transform3D of the portrayal, if there is one (in some cases, such as ValuePortrayal3D, there won't be any). Returns TRUE if the transform was set. If the j3DModel isn't null, its transform is set directly. If the j3DModel is null (probably because the model hasn't been built yet), an underlying transform will be set and then used when the model is built. Only call this method within getModel().

### setScale

    protected boolean setScale(javax.media.j3d.TransformGroup j3dModel,
                               float val)

  Sets the Transform3D of the portrayal to a given scaling value, if there *is* a transform (in some cases, such as ValuePortrayal3D, there won't be any). Returns TRUE if the transform was set. If the j3DModel isn't null, its transform is set directly. If the j3DModel is null (probably because the model hasn't been built yet), an underlying transform will be set and then used when the model is built. Only call this method within getModel().

### setAppearance

    protected void setAppearance(javax.media.j3d.TransformGroup j3dModel,
                                 javax.media.j3d.Appearance app)

  Sets the Appearance of the portrayal. If the j3DModel isn't null, its transform is set directly. If the j3DModel is null (probably because the model hasn't been built yet), an underlying appearance will be set and then used when the model is built. Only call this method within getModel().

### numShapes

    protected abstract int numShapes()

  Returns the number of shapes handled by this primitive or Shape3D. Shape3D objects only have a single shape. Cylinder has three shapes (BODY=0, TOP=1, BOTTOM=2), while Cone has two shapes (BODY=0, CAP=1) and Sphere has a single shape (BODY=0).

### setPickable

    public void setPickable(boolean val)

### getModel

    public javax.media.j3d.TransformGroup getModel(java.lang.Object obj,
                                                   javax.media.j3d.TransformGroup j3dModel)

  We suggest that if you wish to override this to change the appearance or scale or transform of the underlying model, do the changes first and THEN call super.getModel(obj, j3dModel). Be sure to also set the appearance/scale/transform of the model the first time (that is, when j3dModel is null) as well as when something interesting changes necessitating an update.

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

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD