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