[page:Mesh] →

# [name]

A special version of [page:Mesh] with instanced rendering support. Use [name] if you have to render a large number of objects with the same geometry and material(s) but with different world transformations. The usage of [name] will help you to reduce the number of draw calls and thus improve the overall rendering performance in your application.

## Examples

[example:webgl_instancing_dynamic WebGL / instancing / dynamic]
[example:webgl_instancing_performance WebGL / instancing / performance]
[example:webgl_instancing_scatter WebGL / instancing / scatter]
[example:webgl_instancing_raycast WebGL / instancing / raycast]

## Constructor

### [name]( [param:BufferGeometry geometry], [param:Material material], [param:Integer count] )

[page:BufferGeometry geometry] - an instance of [page:BufferGeometry].
[page:Material material] — a single or an array of [page:Material]. Default is a new [page:MeshBasicMaterial].
[page:Integer count] - the number of instances.

## Properties

See the base [page:Mesh] class for common properties.

### [property:Box3 boundingBox]

This bounding box encloses all instances of the [name]. Can be calculated with [page:.computeBoundingBox](). Default is `null`.

### [property:Sphere boundingSphere]

This bounding sphere encloses all instances of the [name]. Can be calculated with [page:.computeBoundingSphere](). Default is `null`.

### [property:Integer count]

The number of instances. The `count` value passed into the constructor represents the maximum number of instances of this mesh. You can change the number of instances at runtime to an integer value in the range [0, count].

If you need more instances than the original count value, you have to create a new [name].

### [property:InstancedBufferAttribute instanceColor]

Represents the colors of all instances. `null` by default. You have to set its [page:BufferAttribute.needsUpdate needsUpdate] flag to true if you modify instanced data via [page:.setColorAt]().

### [property:InstancedBufferAttribute instanceMatrix]

Represents the local transformation of all instances. You have to set its [page:BufferAttribute.needsUpdate needsUpdate] flag to true if you modify instanced data via [page:.setMatrixAt]().

### [property:DataTexture morphTexture]

Represents the morph target weights of all instances. You have to set its [page:Texture.needsUpdate needsUpdate] flag to true if you modify instanced data via [page:.setMorphAt]().

### [property:Boolean isInstancedMesh]

Read-only flag to check if a given object is of type [name].

## Methods

See the base [page:Mesh] class for common methods.

### [method:undefined computeBoundingBox]()

Computes the bounding box of the instanced mesh, and updates the [page:.boundingBox] attribute. The bounding box is not computed by the engine; it must be computed by your app. You may need to recompute the bounding box if an instance is transformed via [page:.setMatrixAt]().

### [method:undefined computeBoundingSphere]()

Computes the bounding sphere of the instanced mesh, and updates the [page:.boundingSphere] attribute. The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling. You may need to recompute the bounding sphere if an instance is transformed via [page:.setMatrixAt]().

### [method:undefined dispose]()

Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.

### [method:undefined getColorAt]( [param:Integer index], [param:Color color] )

[page:Integer index]: The index of an instance. Values have to be in the range [0, count].

[page:Color color]: This color object will be set to the color of the defined instance.

Get the color of the defined instance.

### [method:undefined getMatrixAt]( [param:Integer index], [param:Matrix4 matrix] )

[page:Integer index]: The index of an instance. Values have to be in the range [0, count].

[page:Matrix4 matrix]: This 4x4 matrix will be set to the local transformation matrix of the defined instance.

Get the local transformation matrix of the defined instance.

### [method:undefined getMorphAt]( [param:Integer index], [param:Mesh mesh] )

[page:Integer index]: The index of an instance. Values have to be in the range [0, count].

[page:Mesh mesh]: The [page:Mesh.morphTargetInfluences .morphTargetInfluences] property of this mesh will be filled with the morph target weights of the defined instance.

Get the morph target weights of the defined instance.

### [method:undefined setColorAt]( [param:Integer index], [param:Color color] )

[page:Integer index]: The index of an instance. Values have to be in the range [0, count].

[page:Color color]: The color of a single instance.

Sets the given color to the defined instance. Make sure you set [page:.instanceColor][page:BufferAttribute.needsUpdate .needsUpdate] to true after updating all the colors.

### [method:undefined setMatrixAt]( [param:Integer index], [param:Matrix4 matrix] )

[page:Integer index]: The index of an instance. Values have to be in the range [0, count].

[page:Matrix4 matrix]: A 4x4 matrix representing the local transformation of a single instance.

Sets the given local transformation matrix to the defined instance. Make sure you set [page:.instanceMatrix][page:BufferAttribute.needsUpdate .needsUpdate] to true after updating all the matrices.

### [method:undefined setMorphAt]( [param:Integer index], [param:Mesh mesh] )

[page:Integer index]: The index of an instance. Values have to be in the range [0, count].

[page:Mesh mesh]: A mesh with [page:Mesh.morphTargetInfluences .morphTargetInfluences] property containing the morph target weights of a single instance.

Sets the morph target weights to the defined instance. Make sure you set [page:.morphTexture][page:Texture.needsUpdate .needsUpdate] to true after updating all the influences.

## Source

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]