全局
MeshBVH
SerializedBVH
MeshBVHVisualizer
ExtendedTriangle
OrientedBox
Raycaster
StaticGeometryGenerator
GenerateMeshBVHWorker

GenerateMeshBVHWorker.generate

描述

GenerateMeshBVHWorker.generate 是 Three.js 中 GenerateMeshBVHWorker 类的一个方法,用于生成网格的 BVH 层次结构树。

语法

public generate(
	mesh: Mesh,
	accuracy: number,
	trees: BVH[],
	nodesSphereRadius?: number,
): BVH;

参数

  • mesh:要生成 BVH 的网格。
  • accuracy:树的准确度,值在 1(最高准确度)到 10 的范围内。
  • trees:生成的 BVH 树将存储在此数组中。
  • nodesSphereRadius:BVH 节点小球的半径。

返回值

返回生成的 BVH 树。

示例

以下是使用 GenerateMeshBVHWorker.generate 方法创建 BVH 的示例:

import { Mesh } from "three";
import { GenerateMeshBVHWorker } from "three/examples/jsm/utils/GenerateMeshBVHWorker.js";

const mesh = new Mesh();
// 在 mesh 对象中添加几何体和材质等

const accuracy = 5;
const trees = [];

const bvhTree = GenerateMeshBVHWorker.generate(mesh, accuracy, trees, 1);

备注

  • GenerateMeshBVHWorker 类生成网格的 BVH 层次结构树,将一组网格划分为一组更小但数量更大的网格,以便可以更快地进行容错。

  • BVH 是二叉树结构,其节点包含封闭的三角形列表。这样,我们就可以加速包围盒与射线的相交测试,以进行快速的拾取操作,光线投射,阴影计算等。

  • BVH 树生成比其他方法更快,可以更好地处理大型网格。 但是,它可能在处理小型或密集网格时无法处理良好,因为维护整个网格的小球列表可能很大,这将导致性能开销。 在这种情况下,可以将网格移动到自己的包围盒中,并自动生成叶节点。