## com.sun.j3d.utils.geometry
Class Primitive

    java.lang.Object
      javax.media.j3d.SceneGraphObject
          javax.media.j3d.Node
              javax.media.j3d.Group
                  com.sun.j3d.utils.geometry.Primitive

Direct Known Subclasses:
  Box, Cone, Cylinder, Sphere

    public abstract class Primitive

extends Group

Base class for all Java 3D primitives. By default all primitives with the same parameters share their geometry (e.g., you can have 50 shperes in your scene, but the geometry is stored only once). A change to one primitive will effect all shared nodes. Another implication of this implementation is that the capabilities of the geometry are shared, and once one of the shared nodes is live, the capabilities cannot be set. Use the GEOMETRY_NOT_SHARED flag if you do not wish to share geometry among primitives with the same parameters.

Field Summary
`static int` `ENABLE_APPEARANCE_MODIFY` Specifies that the ALLOW_APPEARANCE_READ and ALLOW_APPEARANCE_WRITE bits are to be set on the generated geometry's Shape3D nodes.
`static int` `ENABLE_GEOMETRY_PICKING` Specifies that the ALLOW_INTERSECT capability bit should be set on the generated geometry.
`static int` `GENERATE_NORMALS` Specifies that normals are generated along with the positions.
`static int` `GENERATE_NORMALS_INWARD` Specifies that normals are to be flipped along the surface.
`static int` `GENERATE_TEXTURE_COORDS` Specifies that texture coordinates are generated along with the positions.
`static int` `GENERATE_TEXTURE_COORDS_Y_UP` Specifies that texture coordinates are to be Y up.
`static int` `GEOMETRY_NOT_SHARED` Specifies that the geometry being created will not be shared by another scene graph node.

Fields inherited from class javax.media.j3d.Group
`ALLOW_CHILDREN_EXTEND, ALLOW_CHILDREN_READ, ALLOW_CHILDREN_WRITE, ALLOW_COLLISION_BOUNDS_READ, ALLOW_COLLISION_BOUNDS_WRITE`

Fields inherited from class javax.media.j3d.Node
`ALLOW_AUTO_COMPUTE_BOUNDS_READ, ALLOW_AUTO_COMPUTE_BOUNDS_WRITE, ALLOW_BOUNDS_READ, ALLOW_BOUNDS_WRITE, ALLOW_COLLIDABLE_READ, ALLOW_COLLIDABLE_WRITE, ALLOW_LOCAL_TO_VWORLD_READ, ALLOW_LOCALE_READ, ALLOW_PARENT_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING`

Constructor Summary
`Primitive()` Constructs a default primitive.

Method Summary
`protected void` `cacheGeometry(int kind, float a, float b, float c, int d, int e, int flags, com.sun.j3d.utils.geometry.GeomBuffer geo)`
`static void` `clearGeometryCache()` Clear the shared geometry cache for all Primitive types.
`Appearance` `getAppearance()` Gets the appearance of the primitive (defaults to first subpart).
`abstract Appearance` `getAppearance(int partId)` Gets the appearance of the specified part of the primitive.
`protected com.sun.j3d.utils.geometry.GeomBuffer` `getCachedGeometry(int kind, float a, float b, float c, int d, int e, int flags)`
`int` `getNumTriangles()` Returns the total number of triangles in this primitive.
`int` `getNumVertices()` Returns the total number of vertices in this primitive.
`int` `getPrimitiveFlags()` Returns the flags of primitive (generate normal, textures, caching, etc).
`abstract Shape3D` `getShape(int partid)` Obtains a shape node of a subpart of the primitive.
`void` `setAppearance()` Sets the main appearance of the primitive (all subparts) to a default white appearance.
`abstract void` `setAppearance(Appearance ap)` Sets the main appearance of the primitive (all subparts) to same appearance.
`void` `setAppearance(int partid, Appearance ap)` Sets the appearance of a subpart given a partid.
`void` `setNumTriangles(int num)` Deprecated. The number of triangles is an immutable attribute.
`void` `setNumVertices(int num)` Deprecated. The number of vertices is an immutable attribute.
`void` `setPrimitiveFlags(int fl)` Deprecated. The primitive flags must be set at construction time via one of the subclass constructors.

Methods inherited from class javax.media.j3d.Group
`addChild, cloneNode, getAllChildren, getAlternateCollisionTarget, getChild, getCollisionBounds, indexOfChild, insertChild, moveTo, numChildren, removeAllChildren, removeChild, removeChild, setAlternateCollisionTarget, setChild, setCollisionBounds`

Methods inherited from class javax.media.j3d.Node
`cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, duplicateNode, getBounds, getBoundsAutoCompute, getCollidable, getLocale, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable`

Methods inherited from class javax.media.j3d.SceneGraphObject
`clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString, updateNodeReferences`

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

Field Detail

### GENERATE_NORMALS

    public static final int GENERATE_NORMALS

  Specifies that normals are generated along with the positions.

  See Also:
    Constant Field Values

### GENERATE_TEXTURE_COORDS

    public static final int GENERATE_TEXTURE_COORDS

  Specifies that texture coordinates are generated along with the positions.

  See Also:
    Constant Field Values

### GENERATE_NORMALS_INWARD

    public static final int GENERATE_NORMALS_INWARD

  Specifies that normals are to be flipped along the surface.

  See Also:
    Constant Field Values

### GENERATE_TEXTURE_COORDS_Y_UP

    public static final int GENERATE_TEXTURE_COORDS_Y_UP

  Specifies that texture coordinates are to be Y up.

  Since:
    Java 3D 1.5.1
  See Also:
    Constant Field Values

### GEOMETRY_NOT_SHARED

    public static final int GEOMETRY_NOT_SHARED

  Specifies that the geometry being created will not be shared by another scene graph node. By default all primitives created with the same parameters share their geometry (e.g., you can have 50 spheres in your scene, but the geometry is stored only once). A change to one primitive will effect all shared nodes. You specify this flag if you do not wish to share any geometry among primitives of the same parameters.

  See Also:
    Constant Field Values

### ENABLE_GEOMETRY_PICKING

    public static final int ENABLE_GEOMETRY_PICKING

  Specifies that the ALLOW_INTERSECT capability bit should be set on the generated geometry. This allows the object to be picked using Geometry based picking.

  See Also:
    Constant Field Values

### ENABLE_APPEARANCE_MODIFY

    public static final int ENABLE_APPEARANCE_MODIFY

  Specifies that the ALLOW_APPEARANCE_READ and ALLOW_APPEARANCE_WRITE bits are to be set on the generated geometry's Shape3D nodes.

  See Also:
    Constant Field Values

Constructor Detail

### Primitive

    public Primitive()

  Constructs a default primitive.

Method Detail

### getNumTriangles

    public int getNumTriangles()

  Returns the total number of triangles in this primitive.

  Returns:
    the total number of triangles in this primitive

### setNumTriangles

    public void setNumTriangles(int num)

  Deprecated. The number of triangles is an immutable attribute.

### getNumVertices

    public int getNumVertices()

  Returns the total number of vertices in this primitive.

  Returns:
    the total number of vertices in this primitive

### setNumVertices

    public void setNumVertices(int num)

  Deprecated. The number of vertices is an immutable attribute.

### getPrimitiveFlags

    public int getPrimitiveFlags()

  Returns the flags of primitive (generate normal, textures, caching, etc).

### setPrimitiveFlags

    public void setPrimitiveFlags(int fl)

  Deprecated. The primitive flags must be set at construction time via one of the subclass constructors.

### getShape

    public abstract Shape3D getShape(int partid)

  Obtains a shape node of a subpart of the primitive.

  Parameters:
    `partid` - identifier for a given subpart of the primitive.

### getAppearance

    public Appearance getAppearance()

  Gets the appearance of the primitive (defaults to first subpart).

### getAppearance

    public abstract Appearance getAppearance(int partId)

  Gets the appearance of the specified part of the primitive.

  Parameters:
    `partId` - identifier for a given subpart of the primitive
  Returns:
    The appearance object associated with the partID. If an invalid partId is passed in, null is returned.
  Since:
    Java 3D 1.2.1

### setAppearance

    public void setAppearance(int partid,
                              Appearance ap)

  Sets the appearance of a subpart given a partid.

### setAppearance

    public abstract void setAppearance(Appearance ap)

  Sets the main appearance of the primitive (all subparts) to same appearance.

### setAppearance

    public void setAppearance()

  Sets the main appearance of the primitive (all subparts) to a default white appearance.

### cacheGeometry

    protected void cacheGeometry(int kind,
                                 float a,
                                 float b,
                                 float c,
                                 int d,
                                 int e,
                                 int flags,
                                 com.sun.j3d.utils.geometry.GeomBuffer geo)

### getCachedGeometry

    protected com.sun.j3d.utils.geometry.GeomBuffer getCachedGeometry(int kind,
                                                                      float a,
                                                                      float b,
                                                                      float c,
                                                                      int d,
                                                                      int e,
                                                                      int flags)

### clearGeometryCache

    public static void clearGeometryCache()

  Clear the shared geometry cache for all Primitive types. Existing Shapes with shared geometry will continue to share the geometry. New Primitives will create new shared geometry.

  Since:
    Java 3D 1.3.2

Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.