Browse Source

InstancedMesh: Optimize `raycast()`. (#25606)

Michael Herzog 2 years ago
parent
commit
3ddaae1cc9
1 changed files with 11 additions and 0 deletions
  1. 11 0
      src/objects/InstancedMesh.js

+ 11 - 0
src/objects/InstancedMesh.js

@@ -136,6 +136,17 @@ class InstancedMesh extends Mesh {
 
 		if ( _mesh.material === undefined ) return;
 
+		// test with bounding sphere first
+
+		if ( this.boundingSphere === null ) this.computeBoundingSphere();
+
+		_sphere.copy( this.boundingSphere );
+		_sphere.applyMatrix4( matrixWorld );
+
+		if ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;
+
+		// now test each instance
+
 		for ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {
 
 			// calculate the world matrix for each instance