A special version of [page:Mesh] with multi draw batch rendering support. Use
[name] if you have to render a large number of objects with the same
material but with different world transformations and geometry. The usage
of [name] will help you to reduce the number of draw calls and thus
improve the overall rendering performance in your application.
If the [link:https://developer.mozilla.org/en-US/docs/Web/API/WEBGL_multi_draw WEBGL_multi_draw extension] is
not supported then a less performant callback is used.
const box = new THREE.BoxGeometry( 1, 1, 1 );
const sphere = new THREE.BoxGeometry( 1, 1, 1 );
const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
// initialize and add geometries into the batched mesh
const batchedMesh = new BatchedMesh( 10, 5000, 10000, material );
const boxId = batchedMesh.addGeometry( box );
const sphereId = batchedMesh.addGeometry( sphere );
// position the geometries
batchedMesh.setMatrixAt( boxId, boxMatrix );
batchedMesh.setMatrixAt( sphereId, sphereMatrix );
scene.add( batchedMesh );
[example:webgl_mesh_batch WebGL / mesh / batch]
[page:Integer maxGeometryCount] - the max number of individual geometries planned to be added.
[page:Integer maxVertexCount] - the max number of vertices to be used by all geometries.
[page:Integer maxIndexCount] - the max number of indices to be used by all geometries.
[page:Material material] - an instance of [page:Material]. Default is a
new [page:MeshBasicMaterial].
See the base [page:Mesh] class for common properties.
This bounding box encloses all instances of the [name]. Can be calculated with [page:.computeBoundingBox](). Default is `null`.
This bounding sphere encloses all instances of the [name]. Can be calculated with [page:.computeBoundingSphere](). Default is `null`.
If true then the individual objects within the [name] are frustum culled. Default is `true`.
If true then the individual objects within the [name] are sorted to improve overdraw-related artifacts. If the material is marked as "transparent" objects are rendered back to front and if not then they are rendered front to back. Default is `true`.
The maximum number of individual geometries that can be stored in the [name]. Read only.
Read-only flag to check if a given object is of type [name].
See the base [page:Mesh] class for common methods.
Computes the bounding box, updating [page:.boundingBox] attribute.
Bounding boxes aren't computed by default. They need to be explicitly
computed, otherwise they are `null`.
Computes the bounding sphere, updating [page:.boundingSphere]
attribute.
Bounding spheres aren't computed by default. They need to be explicitly
computed, otherwise they are `null`.
Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
Takes a sort a function that is run before render. The function takes a list of items to sort and a camera. The objects in the list include a "z" field to perform a depth-ordered sort with.
[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.
[page:Integer index]: The index of an instance. Values have to be in the range [0, count].
Get whether the given instance is marked as "visible" or not.
[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.
[page:Integer index]: The index of an instance. Values have to be in the range [0, count].
[page:Boolean visible]: A boolean value indicating the visibility state.
Sets the visibility of the object at the given index.
[page:BufferGeometry geometry]: The geometry to add into the [name].
[page:Integer reservedVertexRange]: Optional parameter specifying the amount of vertex buffer space to reserve for the added geometry. This is necessary if it is planned to set a new geometry at this index at a later time that is larger than the original geometry. Defaults to the length of the given geometry vertex buffer.
[page:Integer reservedIndexRange]: Optional parameter specifying the amount of index buffer space to reserve for the added geometry. This is necessary if it is planned to set a new geometry at this index at a later time that is larger than the original geometry. Defaults to the length of the given geometry index buffer.
Adds the given geometry to the [name] and returns the associated index referring to it.
[page:Integer index]: Which geometry index to replace with this geometry.
[page:BufferGeometry geometry]: The geometry to substitute at the given geometry index.
Replaces the geometry at `index` with the provided geometry. Throws an error if there is not enough space reserved for geometry at the index.
Marks the geometry at the given index as deleted and to not be rendered anymore.
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]