浏览代码

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

Michael Herzog 2 年之前
父节点
当前提交
3ddaae1cc9
共有 1 个文件被更改,包括 11 次插入0 次删除
  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