Raycaster.intersectObjects(objects, recursive, optionalResults) 方法用于获取射线与可选对象的交点。
objects:需要检测的对象数组,即要进行交点检测的对象。
recursive:是否对传入数组中的子元素递归进行检测。默认为 false。
optionalResults:可选参数,传入 Raycaster 对象,用于存储返回的结果。如果未传入此参数,则会创建一个新的数组来存储结果。
返回一个存储着所有交点信息的数组,数组中每个元素均为一个 Intersection 对象。
Intersection 对象中包含以下属性:
distance:射线从其起点到交点的距离。point:交点在所属对象局部坐标系下的位置。为 Vector3 类型。face:与射线相交的三角形的面信息。仅在检测 BufferGeometry 或 Geometry 对象时返回。为 Face3 类型。object:产生交点的对象。// 创建一个射线
var raycaster = new THREE.Raycaster(startPoint, direction);
// 获取所有与 objects 相交的交点信息
var intersects = raycaster.intersectObjects(objects);
// 打印交点信息
for ( var i = 0; i < intersects.length; i ++ ) {
     console.log( "Distance: " + intersects[ i ].distance );
     console.log( "Point: " + intersects[ i ].point );
     console.log( "Face: " + intersects[ i ].face );
     console.log( "Object: " + intersects[ i ].object );
}
如果您要进行多个 Raycaster 对象的交点检测,最好还是使用同一个结果数组来存储结果,因为在每一次 intersectObjects 方法的调用中,THREE.js 都会为其结果集创建一个新的数组,会对性能造成影响。