diff --git a/docs/api/en/objects/BatchedMesh.html b/docs/api/en/objects/BatchedMesh.html index 1d59e59102b6b2..04a68456f862a2 100644 --- a/docs/api/en/objects/BatchedMesh.html +++ b/docs/api/en/objects/BatchedMesh.html @@ -21,9 +21,29 @@

[name]



- Requires platform support for the [link:https://developer.mozilla.org/en-US/docs/Web/API/WEBGL_multi_draw WEBGL_multi_draw extension]. + 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.

+

Code Example

+ + + 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 ); + +

Examples

[example:webgl_mesh_batch WebGL / mesh / batch]
@@ -71,6 +91,11 @@

[property:Boolean sortObjects]

rendered front to back. Default is `true`.

+

[property:Integer maxGeometryCount]

+

+ The maximum number of individual geometries that can be stored in the [name]. Read only. +

+

[property:Boolean isBatchedMesh]

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

diff --git a/examples/webgl_mesh_batch.html b/examples/webgl_mesh_batch.html index b9a2fc6f0feab7..31ae385d83e70e 100644 --- a/examples/webgl_mesh_batch.html +++ b/examples/webgl_mesh_batch.html @@ -287,17 +287,17 @@ // initialize options this._options = this._options || { get: el => el.z, - aux: new Array( this._maxGeometryCount ) + aux: new Array( this.maxGeometryCount ) }; const options = this._options; options.reversed = this.material.transparent; // convert depth to unsigned 32 bit range - const factor = ( 2**32 - 1 ) / camera.far; // UINT32_MAX / max_depth + const factor = ( 2 ** 32 - 1 ) / camera.far; // UINT32_MAX / max_depth for ( let i = 0, l = list.length; i < l; i ++ ) { - list[i].z *= factor; + list[ i ].z *= factor; } diff --git a/src/objects/BatchedMesh.js b/src/objects/BatchedMesh.js index fcf71aa833b483..d0b7d9274570c5 100644 --- a/src/objects/BatchedMesh.js +++ b/src/objects/BatchedMesh.js @@ -120,6 +120,12 @@ function copyAttributeData( src, target, targetOffset = 0 ) { class BatchedMesh extends Mesh { + get maxGeometryCount() { + + return this._maxGeometryCount; + + } + constructor( maxGeometryCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) { super( new BufferGeometry(), material ); @@ -262,45 +268,6 @@ class BatchedMesh extends Mesh { } - getGeometryCount() { - - return this._geometryCount; - - } - - getVertexCount() { - - const reservedRanges = this._reservedRanges; - if ( reservedRanges.length === 0 ) { - - return 0; - - } else { - - const finalRange = reservedRanges[ reservedRanges.length - 1 ]; - return finalRange.vertexStart + finalRange.vertexCount; - - } - - } - - getIndexCount() { - - const reservedRanges = this._reservedRanges; - const geometry = this.geometry; - if ( geometry.getIndex() === null || reservedRanges.length === 0 ) { - - return 0; - - } else { - - const finalRange = reservedRanges[ reservedRanges.length - 1 ]; - return finalRange.indexStart + finalRange.indexCount; - - } - - } - setCustomSort( func ) { this.customSort = func;