全局
MeshBVH
SerializedBVH
MeshBVHVisualizer
ExtendedTriangle
OrientedBox
Raycaster
StaticGeometryGenerator
GenerateMeshBVHWorker

MeshBVH.raycast

简介

MeshBVH.rayacast是用于three-bvh-mesh中的MeshBVH类的方法,用于光线投射检测。该方法的调用将返回第一个与光线相交的MeshBVH的叶子节点和相交点。

语法

MeshBVH.raycast(raycaster: Raycaster, intersects: Array, root: BVHNode)

参数

  • raycaster (Raycaster) - 用于射线检测的射线。
  • intersects (Array) - 表示检测结果的数组。
  • node (BVHNode) - BVH树的根节点。

用法

// 创建一个MeshBVH实例
const mesh = new Mesh(geometry, material);
const meshBVH = new MeshBVH(mesh);

// 定义一个raycaster
const raycaster = new Raycaster();
raycaster.set(origin, direction);

// 创建一个空数组
const intersects = [];

// 调用MeshBVH.raycast方法
meshBVH.raycast(raycaster, intersects, meshBVH._root);

// 如果有相交的叶子节点,将其添加到交集数组中
if (intersects.length > 0) {
  // 第一个相交叶子节点和相交点
  const {node, point} = intersects[0];

  // 获得节点的对象
  const object = node.object;

  // do something
}

返回值

该方法没有返回值。

注意事项

  • 调用该方法前,需要先创建一个MeshBVH实例,并将其传入raycast方法的第三个参数。
  • intersects数组里面会包含所有的相交节点,需要遍历数组来查找正确的节点。