全局
MeshBVH
SerializedBVH
MeshBVHVisualizer
ExtendedTriangle
OrientedBox
Raycaster
StaticGeometryGenerator
GenerateMeshBVHWorker

MeshBVH.raycastFirst

描述

该方法用于在三维空间中从给定的起始点和方向发射射线,并在网格BVH树中查找第一个相交的三角形。如果没有相交,返回null。

语法

raycastFirst(origin: Vector3, dir: Vector3, length?: number, skipBackFaces?: boolean): HitInfo | null

参数

  • origin:Vector3类型,射线的起点。
  • dir:Vector3类型,射线的方向。
  • length:可选参数,number类型,射线的最大长度。默认值为Infinity。
  • skipBackFaces:可选参数,boolean类型,是否跳过与射线背向的三角形相交。默认值为true。

返回值

类型为HitInfo或null,HitInfo包含相交点(Vector3类型)和相交三角形的索引值。如果没有相交,返回null

示例

import { Mesh, MeshBVH, Vector3 } from "three";

const mesh = new Mesh(geometry, material); //创建网格
const meshBVH = MeshBVH.build(mesh); //构建网格BVH树

const origin = new Vector3(0, 0, 0);
const dir = new Vector3(0, 1, 0); //向上发射射线
const hit = meshBVH.raycastFirst(origin, dir); //在BVH树中查找第一个相交的三角形

if (hit) {
  console.log(`相交点:${hit.point}, 三角形索引:${hit.triangleIndex}`);
} else {
  console.log("没有相交。");
}