GenerateMeshBVHWorker.running
该函数是 three-bvh-mesh
中的一个工作线程方法,用于生成网格对象的 BVH 数据结构。
参数说明
startIndex
:整数类型,表示要处理的三角形开始的索引。
endIndex
:整数类型,表示要处理的三角形结束的索引。
mesh
:网格数据对象,包含顶点、面以及面的属性信息。
triangles
:三角形的索引数据,表示每个三角形由哪三个顶点组成。
nodeData
:存储 BVH 节点数据信息的数组。
indexData
:存储 BVH 叶子节点数据信息的数组。
depth
:整数类型,表示当前递归深度。
返回值说明
该函数没有返回值。
函数流程说明
- 通过 startIndex 和 endIndex 确定该工作线程需要处理的三角形范围。
- 如果要处理的三角形数量达到了最小划分数量或者递归深度达到了最大深度,则将该范围的三角形构成一个叶子节点。
- 否则,以 AABB 包围盒的中心点为分割点,将该范围的三角形划分为左右两个子范围,并生成一个内部节点。
- 递归处理左子范围和右子范围,直到叶子节点。
- 通过 nodeData 和 indexData 数组存储 BVH 节点的数据信息。
注意事项
- 该函数为
three-bvh-mesh
中的一个工作线程方法,需要在 Worker
中调用。
- 浏览器中的工作线程类似于 Node.js 中的子进程,是一个独立的线程,可以运行一些计算密集型任务,不会阻塞主线程的渲染过程。