# Class Appearance

java.lang.Object
javax.media.j3d.SceneGraphObject
javax.media.j3d.NodeComponent
javax.media.j3d.Appearance

Direct Known Subclasses:
  `ShaderAppearance`

public class Appearance extends NodeComponent
The Appearance object defines all rendering state that can be set as a component object of a Shape3D node. The rendering state consists of the following:

- Coloring attributes - defines attributes used in color selection and shading. These attributes are defined in a ColoringAttributes object.

- Line attributes - defines attributes used to define lines, including the pattern, width, and whether antialiasing is to be used. These attributes are defined in a LineAttributes object.

- Point attributes - defines attributes used to define points, including the size and whether antialiasing is to be used. These attributes are defined in a PointAttributes object.

- Polygon attributes - defines the attributes used to define polygons, including culling, rasterization mode (filled, lines, or points), constant offset, offset factor, and whether back back facing normals are flipped. These attributes are defined in a PolygonAttributes object.

- Rendering attributes - defines rendering operations, including the alpha test function and test value, the raster operation, whether vertex colors are ignored, whether invisible objects are rendered, and whether the depth buffer is enabled. These attributes are defined in a RenderingAttributes object.

- Transparency attributes - defines the attributes that affect transparency of the object, such as the transparency mode (blended, screen-door), blending function (used in transparency and antialiasing operations), and a blend value that defines the amount of transparency to be applied to this Appearance component object.

- Material - defines the appearance of an object under illumination, such as the ambient color, diffuse color, specular color, emissive color, and shininess. These attributes are defined in a Material object.

- Texture - defines the texture image and filtering parameters used when texture mapping is enabled. These attributes are defined in a Texture object.

- Texture attributes - defines the attributes that apply to texture mapping, such as the texture mode, texture transform, blend color, and perspective correction mode. These attributes are defined in a TextureAttributes object.

- Texture coordinate generation - defines the attributes that apply to texture coordinate generation, such as whether texture coordinate generation is enabled, coordinate format (2D or 3D coordinates), coordinate generation mode (object linear, eye linear, or spherical reflection mapping), and the R, S, and T coordinate plane equations. These attributes are defined in a TexCoordGeneration object.

- Texture unit state - array that defines texture state for each of N separate texture units. This allows multiple textures to be applied to geometry. Each TextureUnitState object contains a Texture object, TextureAttributes, and TexCoordGeneration object for one texture unit. If the length of the texture unit state array is greater than 0, then the array is used for all texture state; the individual Texture, TextureAttributes, and TexCoordGeneration objects in this Appearance object are not used and and must not be set by an application. If the length of the texture unit state array is 0, the multi-texture is disabled and the Texture, TextureAttributes, and TexCoordGeneration objects in the Appearance object are used. If the application sets the existing Texture, TextureAttributes, and TexCoordGeneration objects to non-null values, they effectively define the state for texture unit 0. If the TextureUnitState array is set to a non-null, non-empty array, the individual TextureUnitState objects define the state for texture units 0 through n -1. If both the old and new values are set, an exception is thrown.

See Also:
  - `ColoringAttributes`
  - `LineAttributes`
  - `PointAttributes`
  - `PolygonAttributes`
  - `RenderingAttributes`
  - `TransparencyAttributes`
  - `Material`
  - `Texture`
  - `TextureAttributes`
  - `TexCoordGeneration`
  - `TextureUnitState`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`ALLOW_COLORING_ATTRIBUTES_READ`
Specifies that this Appearance object allows reading its coloringAttributes component information.
`static final int`
`ALLOW_COLORING_ATTRIBUTES_WRITE`
Specifies that this Appearance object allows writing its coloringAttributes component information.
`static final int`
`ALLOW_LINE_ATTRIBUTES_READ`
Specifies that this Appearance object allows reading its line component information.
`static final int`
`ALLOW_LINE_ATTRIBUTES_WRITE`
Specifies that this Appearance object allows writing its line component information.
`static final int`
`ALLOW_MATERIAL_READ`
Specifies that this Appearance object allows reading its material component information.
`static final int`
`ALLOW_MATERIAL_WRITE`
Specifies that this Appearance object allows writing its material component information.
`static final int`
`ALLOW_POINT_ATTRIBUTES_READ`
Specifies that this Appearance object allows reading its point component information.
`static final int`
`ALLOW_POINT_ATTRIBUTES_WRITE`
Specifies that this Appearance object allows writing its point component information.
`static final int`
`ALLOW_POLYGON_ATTRIBUTES_READ`
Specifies that this Appearance object allows reading its polygon component information.
`static final int`
`ALLOW_POLYGON_ATTRIBUTES_WRITE`
Specifies that this Appearance object allows writing its polygon component information.
`static final int`
`ALLOW_RENDERING_ATTRIBUTES_READ`
Specifies that this Appearance object allows reading its rendering/rasterization component information.
`static final int`
`ALLOW_RENDERING_ATTRIBUTES_WRITE`
Specifies that this Appearance object allows writing its rendering/rasterization component information.
`static final int`
`ALLOW_TEXGEN_READ`
Specifies that this Appearance object allows reading its texture coordinate generation component information.
`static final int`
`ALLOW_TEXGEN_WRITE`
Specifies that this Appearance object allows writing its texture coordinate generation component information.
`static final int`
`ALLOW_TEXTURE_ATTRIBUTES_READ`
Specifies that this Appearance object allows reading its textureAttributes component information.
`static final int`
`ALLOW_TEXTURE_ATTRIBUTES_WRITE`
Specifies that this Appearance object allows writing its textureAttributes component information.
`static final int`
`ALLOW_TEXTURE_READ`
Specifies that this Appearance object allows reading its texture component information.
`static final int`
`ALLOW_TEXTURE_UNIT_STATE_READ`
Specifies that this Appearance object allows reading its texture unit state component information.
`static final int`
`ALLOW_TEXTURE_UNIT_STATE_WRITE`
Specifies that this Appearance object allows writing its texture unit state component information.
`static final int`
`ALLOW_TEXTURE_WRITE`
Specifies that this Appearance object allows writing its texture component information.
`static final int`
`ALLOW_TRANSPARENCY_ATTRIBUTES_READ`
Specifies that this Appearance object allows reading its transparency component information.
`static final int`
`ALLOW_TRANSPARENCY_ATTRIBUTES_WRITE`
Specifies that this Appearance object allows writing its transparency component information.

## Constructor Summary

Constructors
Constructor
Description
`Appearance()`
Constructs an Appearance component object using defaults for all state variables.

## Method Summary

Modifier and Type
Method
Description
`NodeComponent`
`cloneNodeComponent()`
Deprecated.
replaced with cloneNodeComponent(boolean forceDuplicate)
`void`
`duplicateNodeComponent(NodeComponent originalNodeComponent)`
Deprecated.
replaced with duplicateNodeComponent( NodeComponent originalNodeComponent, boolean forceDuplicate)
`ColoringAttributes`
`getColoringAttributes()`
Retrieves the current coloringAttributes object.
`LineAttributes`
`getLineAttributes()`
Retrieves the current lineAttributes object.
`Material`
`getMaterial()`
Retrieves the current material object.
`PointAttributes`
`getPointAttributes()`
Retrieves the current pointAttributes object.
`PolygonAttributes`
`getPolygonAttributes()`
Retrieves the current polygonAttributes object.
`RenderingAttributes`
`getRenderingAttributes()`
Retrieves the current renderingAttributes object.
`TexCoordGeneration`
`getTexCoordGeneration()`
Retrieves the current texCoordGeneration object.
`Texture`
`getTexture()`
Retrieves the current texture object.
`TextureAttributes`
`getTextureAttributes()`
Retrieves the current textureAttributes object.
`int`
`getTextureUnitCount()`
Retrieves the length of the texture unit state array from this appearance object.
`TextureUnitState[]`
`getTextureUnitState()`
Retrieves the array of texture unit state objects from this Appearance object.
`TextureUnitState`
`getTextureUnitState(int index)`
Retrieves the texture unit state object at the specified index within the texture unit state array.
`TransparencyAttributes`
`getTransparencyAttributes()`
Retrieves the current transparencyAttributes object.
`void`
`setColoringAttributes(ColoringAttributes coloringAttributes)`
Sets the coloringAttributes object to the specified object.
`void`
`setLineAttributes(LineAttributes lineAttributes)`
Sets the lineAttributes object to the specified object.
`void`
`setMaterial(Material material)`
Sets the material object to the specified object.
`void`
`setPointAttributes(PointAttributes pointAttributes)`
Sets the pointAttributes object to the specified object.
`void`
`setPolygonAttributes(PolygonAttributes polygonAttributes)`
Sets the polygonAttributes object to the specified object.
`void`
`setRenderingAttributes(RenderingAttributes renderingAttributes)`
Sets the renderingAttributes object to the specified object.
`void`
`setTexCoordGeneration(TexCoordGeneration texCoordGeneration)`
Sets the texCoordGeneration object to the specified object.
`void`
`setTexture(Texture texture)`
Sets the texture object to the specified object.
`void`
`setTextureAttributes(TextureAttributes textureAttributes)`
Sets the textureAttributes object to the specified object.
`void`
`setTextureUnitState(int index, TextureUnitState state)`
Sets the texture unit state object at the specified index within the texture unit state array to the specified object.
`void`
`setTextureUnitState(TextureUnitState[] stateArray)`
Sets the texture unit state array for this appearance object to the specified array.
`void`
`setTransparencyAttributes(TransparencyAttributes transparencyAttributes)`
Sets the transparencyAttributes object to the specified object.

### Methods inherited from class NodeComponent

`cloneNodeComponent, duplicateNodeComponent, getDuplicateOnCloneTree, setDuplicateOnCloneTree`

### Methods inherited from class SceneGraphObject

`clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString, updateNodeReferences`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### ALLOW_COLORING_ATTRIBUTES_READ

public static final int ALLOW_COLORING_ATTRIBUTES_READ
Specifies that this Appearance object allows reading its coloringAttributes component information.

See Also:
  - Constant Field Values

### ALLOW_COLORING_ATTRIBUTES_WRITE

public static final int ALLOW_COLORING_ATTRIBUTES_WRITE
Specifies that this Appearance object allows writing its coloringAttributes component information.

See Also:
  - Constant Field Values

### ALLOW_TRANSPARENCY_ATTRIBUTES_READ

public static final int ALLOW_TRANSPARENCY_ATTRIBUTES_READ
Specifies that this Appearance object allows reading its transparency component information.

See Also:
  - Constant Field Values

### ALLOW_TRANSPARENCY_ATTRIBUTES_WRITE

public static final int ALLOW_TRANSPARENCY_ATTRIBUTES_WRITE
Specifies that this Appearance object allows writing its transparency component information.

See Also:
  - Constant Field Values

### ALLOW_RENDERING_ATTRIBUTES_READ

public static final int ALLOW_RENDERING_ATTRIBUTES_READ
Specifies that this Appearance object allows reading its rendering/rasterization component information.

See Also:
  - Constant Field Values

### ALLOW_RENDERING_ATTRIBUTES_WRITE

public static final int ALLOW_RENDERING_ATTRIBUTES_WRITE
Specifies that this Appearance object allows writing its rendering/rasterization component information.

See Also:
  - Constant Field Values

### ALLOW_POLYGON_ATTRIBUTES_READ

public static final int ALLOW_POLYGON_ATTRIBUTES_READ
Specifies that this Appearance object allows reading its polygon component information.

See Also:
  - Constant Field Values

### ALLOW_POLYGON_ATTRIBUTES_WRITE

public static final int ALLOW_POLYGON_ATTRIBUTES_WRITE
Specifies that this Appearance object allows writing its polygon component information.

See Also:
  - Constant Field Values

### ALLOW_LINE_ATTRIBUTES_READ

public static final int ALLOW_LINE_ATTRIBUTES_READ
Specifies that this Appearance object allows reading its line component information.

See Also:
  - Constant Field Values

### ALLOW_LINE_ATTRIBUTES_WRITE

public static final int ALLOW_LINE_ATTRIBUTES_WRITE
Specifies that this Appearance object allows writing its line component information.

See Also:
  - Constant Field Values

### ALLOW_POINT_ATTRIBUTES_READ

public static final int ALLOW_POINT_ATTRIBUTES_READ
Specifies that this Appearance object allows reading its point component information.

See Also:
  - Constant Field Values

### ALLOW_POINT_ATTRIBUTES_WRITE

public static final int ALLOW_POINT_ATTRIBUTES_WRITE
Specifies that this Appearance object allows writing its point component information.

See Also:
  - Constant Field Values

### ALLOW_MATERIAL_READ

public static final int ALLOW_MATERIAL_READ
Specifies that this Appearance object allows reading its material component information.

See Also:
  - Constant Field Values

### ALLOW_MATERIAL_WRITE

public static final int ALLOW_MATERIAL_WRITE
Specifies that this Appearance object allows writing its material component information.

See Also:
  - Constant Field Values

### ALLOW_TEXTURE_READ

public static final int ALLOW_TEXTURE_READ
Specifies that this Appearance object allows reading its texture component information.

See Also:
  - Constant Field Values

### ALLOW_TEXTURE_WRITE

public static final int ALLOW_TEXTURE_WRITE
Specifies that this Appearance object allows writing its texture component information.

See Also:
  - Constant Field Values

### ALLOW_TEXTURE_ATTRIBUTES_READ

public static final int ALLOW_TEXTURE_ATTRIBUTES_READ
Specifies that this Appearance object allows reading its textureAttributes component information.

See Also:
  - Constant Field Values

### ALLOW_TEXTURE_ATTRIBUTES_WRITE

public static final int ALLOW_TEXTURE_ATTRIBUTES_WRITE
Specifies that this Appearance object allows writing its textureAttributes component information.

See Also:
  - Constant Field Values

### ALLOW_TEXGEN_READ

public static final int ALLOW_TEXGEN_READ
Specifies that this Appearance object allows reading its texture coordinate generation component information.

See Also:
  - Constant Field Values

### ALLOW_TEXGEN_WRITE

public static final int ALLOW_TEXGEN_WRITE
Specifies that this Appearance object allows writing its texture coordinate generation component information.

See Also:
  - Constant Field Values

### ALLOW_TEXTURE_UNIT_STATE_READ

public static final int ALLOW_TEXTURE_UNIT_STATE_READ
Specifies that this Appearance object allows reading its texture unit state component information.

Since:
  Java 3D 1.2
See Also:
  - Constant Field Values

### ALLOW_TEXTURE_UNIT_STATE_WRITE

public static final int ALLOW_TEXTURE_UNIT_STATE_WRITE
Specifies that this Appearance object allows writing its texture unit state component information.

Since:
  Java 3D 1.2
See Also:
  - Constant Field Values

## Constructor Details

### Appearance

public Appearance()
Constructs an Appearance component object using defaults for all state variables. All component object references are initialized to null.

## Method Details

### setMaterial

public void setMaterial(Material material)
Sets the material object to the specified object. Setting it to null disables lighting.

Parameters:
  `material` - object that specifies the desired material properties
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getMaterial

public Material getMaterial()
Retrieves the current material object.

Returns:
  the material object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setColoringAttributes

public void setColoringAttributes(ColoringAttributes coloringAttributes)
Sets the coloringAttributes object to the specified object. Setting it to null will result in default attribute usage.

Parameters:
  `coloringAttributes` - object that specifies the desired coloringAttributes parameters
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getColoringAttributes

public ColoringAttributes getColoringAttributes()
Retrieves the current coloringAttributes object.

Returns:
  the coloringAttributes object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setTransparencyAttributes

public void setTransparencyAttributes(TransparencyAttributes transparencyAttributes)
Sets the transparencyAttributes object to the specified object. Setting it to null will result in default attribute usage.

Parameters:
  `transparencyAttributes` - object that specifies the desired transparencyAttributes parameters
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getTransparencyAttributes

public TransparencyAttributes getTransparencyAttributes()
Retrieves the current transparencyAttributes object.

Returns:
  the transparencyAttributes object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setRenderingAttributes

public void setRenderingAttributes(RenderingAttributes renderingAttributes)
Sets the renderingAttributes object to the specified object. Setting it to null will result in default attribute usage.

Parameters:
  `renderingAttributes` - object that specifies the desired renderingAttributes parameters
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getRenderingAttributes

public RenderingAttributes getRenderingAttributes()
Retrieves the current renderingAttributes object.

Returns:
  the renderingAttributes object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setPolygonAttributes

public void setPolygonAttributes(PolygonAttributes polygonAttributes)
Sets the polygonAttributes object to the specified object. Setting it to null will result in default attribute usage.

Parameters:
  `polygonAttributes` - object that specifies the desired polygonAttributes parameters
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getPolygonAttributes

public PolygonAttributes getPolygonAttributes()
Retrieves the current polygonAttributes object.

Returns:
  the polygonAttributes object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setLineAttributes

public void setLineAttributes(LineAttributes lineAttributes)
Sets the lineAttributes object to the specified object. Setting it to null will result in default attribute usage.

Parameters:
  `lineAttributes` - object that specifies the desired lineAttributes parameters
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getLineAttributes

public LineAttributes getLineAttributes()
Retrieves the current lineAttributes object.

Returns:
  the lineAttributes object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setPointAttributes

public void setPointAttributes(PointAttributes pointAttributes)
Sets the pointAttributes object to the specified object. Setting it to null will result in default attribute usage.

Parameters:
  `pointAttributes` - object that specifies the desired pointAttributes parameters
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getPointAttributes

public PointAttributes getPointAttributes()
Retrieves the current pointAttributes object.

Returns:
  the pointAttributes object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setTexture

public void setTexture(Texture texture)
Sets the texture object to the specified object. Setting it to null disables texture mapping.

Applications must not set individual texture component objects (texture, textureAttributes, or texCoordGeneration) and the texture unit state array in the same Appearance object. Doing so will result in an exception being thrown.

Parameters:
  `texture` - object that specifies the desired texture map and texture parameters
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
  `IllegalStateException` - if the specified texture object is non-null and the texture unit state array in this appearance object is already non-null.
  `IllegalSharingException` - if this Appearance is live and the specified texture refers to an ImageComponent2D that is being used by a Canvas3D as an off-screen buffer.
  `IllegalSharingException` - if this Appearance is being used by an immediate mode context and the specified texture refers to an ImageComponent2D that is being used by a Canvas3D as an off-screen buffer.

### getTexture

public Texture getTexture()
Retrieves the current texture object.

Returns:
  the texture object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setTextureAttributes

public void setTextureAttributes(TextureAttributes textureAttributes)
Sets the textureAttributes object to the specified object. Setting it to null will result in default attribute usage.

Applications must not set individual texture component objects (texture, textureAttributes, or texCoordGeneration) and the texture unit state array in the same Appearance object. Doing so will result in an exception being thrown.

Parameters:
  `textureAttributes` - object that specifies the desired textureAttributes map and textureAttributes parameters
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
  `IllegalStateException` - if the specified textureAttributes object is non-null and the texture unit state array in this appearance object is already non-null.

### getTextureAttributes

public TextureAttributes getTextureAttributes()
Retrieves the current textureAttributes object.

Returns:
  the textureAttributes object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setTexCoordGeneration

public void setTexCoordGeneration(TexCoordGeneration texCoordGeneration)
Sets the texCoordGeneration object to the specified object. Setting it to null disables texture coordinate generation.

Applications must not set individual texture component objects (texture, textureAttributes, or texCoordGeneration) and the texture unit state array in the same Appearance object. Doing so will result in an exception being thrown.

Parameters:
  `texCoordGeneration` - object that specifies the texture coordinate generation parameters
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
  `IllegalStateException` - if the specified texCoordGeneration object is non-null and the texture unit state array in this appearance object is already non-null.

### getTexCoordGeneration

public TexCoordGeneration getTexCoordGeneration()
Retrieves the current texCoordGeneration object.

Returns:
  the texCoordGeneration object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setTextureUnitState

public void setTextureUnitState(TextureUnitState[] stateArray)
Sets the texture unit state array for this appearance object to the specified array. A shallow copy of the array of references to the TextureUnitState objects is made. If the specified array is null or if the length of the array is 0, multi-texture is disabled. Within the array, a null TextureUnitState element disables the corresponding texture unit.

Applications must not set individual texture component objects (texture, textureAttributes, or texCoordGeneration) and the texture unit state array in the same Appearance object. Doing so will result in an exception being thrown.

Parameters:
  `stateArray` - array of TextureUnitState objects that specify the desired texture state for each unit. The length of this array specifies the maximum number of texture units that will be used by this appearance object. The texture units are numbered from `0` through `stateArray.length-1`.
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
  `IllegalStateException` - if the specified array is non-null and any of the texture object, textureAttributes object, or texCoordGeneration object in this appearance object is already non-null.
  `IllegalSharingException` - if this Appearance is live and any of the specified textures refers to an ImageComponent2D that is being used by a Canvas3D as an off-screen buffer.
  `IllegalSharingException` - if this Appearance is being used by an immediate mode context and any of the specified textures refers to an ImageComponent2D that is being used by a Canvas3D as an off-screen buffer.
Since:
  Java 3D 1.2

### setTextureUnitState

public void setTextureUnitState(int index, TextureUnitState state)
Sets the texture unit state object at the specified index within the texture unit state array to the specified object. If the specified object is null, the corresponding texture unit is disabled. The index must be within the range `[0, stateArray.length-1]`.

Parameters:
  `index` - the array index of the object to be set
  `state` - new texture unit state object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
  `NullPointerException` - if the texture unit state array is null.
  `ArrayIndexOutOfBoundsException` - if `index >= stateArray.length`.
  `IllegalSharingException` - if this Appearance is live and the specified texture refers to an ImageComponent2D that is being used by a Canvas3D as an off-screen buffer.
  `IllegalSharingException` - if this Appearance is being used by an immediate mode context and the specified texture refers to an ImageComponent2D that is being used by a Canvas3D as an off-screen buffer.
Since:
  Java 3D 1.2

### getTextureUnitState

public TextureUnitState[] getTextureUnitState()
Retrieves the array of texture unit state objects from this Appearance object. A shallow copy of the array of references to the TextureUnitState objects is returned.

Returns:
  the array of texture unit state objects
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
Since:
  Java 3D 1.2

### getTextureUnitState

public TextureUnitState getTextureUnitState(int index)
Retrieves the texture unit state object at the specified index within the texture unit state array. The index must be within the range `[0, stateArray.length-1]`.

Parameters:
  `index` - the array index of the object to be retrieved
Returns:
  the texture unit state object at the specified index
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
Since:
  Java 3D 1.2

### getTextureUnitCount

public int getTextureUnitCount()
Retrieves the length of the texture unit state array from this appearance object. The length of this array specifies the maximum number of texture units that will be used by this appearance object. If the array is null, a count of 0 is returned.

Returns:
  the length of the texture unit state array
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
Since:
  Java 3D 1.2

### cloneNodeComponent

public NodeComponent cloneNodeComponent()
Deprecated.
replaced with cloneNodeComponent(boolean forceDuplicate)

Overrides:
  `cloneNodeComponent` in class `NodeComponent`

### duplicateNodeComponent

public void duplicateNodeComponent(NodeComponent originalNodeComponent)
Deprecated.
replaced with duplicateNodeComponent( NodeComponent originalNodeComponent, boolean forceDuplicate)
NOTE: Applications should not call this method directly. It should only be called by the cloneNode method.

Overrides:
  `duplicateNodeComponent` in class `NodeComponent`