全局
MeshBVH
SerializedBVH
MeshBVHVisualizer
ExtendedTriangle
OrientedBox
Raycaster
StaticGeometryGenerator
GenerateMeshBVHWorker

getTriangleHitPointInfo

getTriangleHitPointInfo是一个用于计算三角形与射线相交的函数。该函数返回三角形交点的位置、法向量和UV坐标。如果与三角形没有相交,则返回null

语法

function getTriangleHitPointInfo(ray: Ray, triangle: Triangle): HitPointInfo | null;

参数

  • ray: 射线对象,包含起点和方向。
  • triangle: 三角形对象,包含三个顶点。

返回值

  • HitPointInfo: 交点位置、交点法向量和UV坐标。
  • null: 如果射线与三角形没有相交。

示例

import { Ray, Vector3, Triangle, HitPointInfo } from 'three-bvh-mesh';

const triangle = new Triangle(
  new Vector3(0, 0, 0),
  new Vector3(1, 0, 0),
  new Vector3(0, 1, 0)
);
const ray = new Ray(new Vector3(0.5, 0.5, 1), new Vector3(0, 0, -1));

const hitPointInfo: HitPointInfo | null = triangle.getTriangleHitPointInfo(ray);
if (hitPointInfo !== null) {
  const { point, normal, uv } = hitPointInfo;
  console.log('交点位置:', point);
  console.log('交点法向量:', normal);
  console.log('交点UV坐标:', uv);
} else {
  console.log('射线与三角形不相交');
}

注意事项

  • 三角形的三个顶点不能共线。
  • 需要开启相交检测BVH树的构建。