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 都会为其结果集创建一个新的数组,会对性能造成影响。