A drop-in replacement for GenerateMeshBVHWorker that distributes BVH construction across
multiple Web Workers in parallel for faster builds on large geometry. Requires
SharedArrayBuffer support (cross-origin isolated context). Falls back to a single-threaded
GenerateMeshBVHWorker automatically if SharedArrayBuffer is unavailable.
Exposes the same API as GenerateMeshBVHWorker: generate, dispose, running, and
maxWorkerCount.
import { AmbientLight, DirectionalLight, Mesh, MeshStandardMaterial, TorusKnotGeometry } from 'three';
import { BVHHelper } from 'three-mesh-bvh';
import { ParallelMeshBVHWorker } from 'three-mesh-bvh/worker';
// scene, camera and renderer are initialized here
const light = new DirectionalLight( 0xffffff, 3 );
light.position.set( 1, 1, 1 );
scene.add( light, new AmbientLight( 0xb0bec5, 1.5 ) );
const geometry = new TorusKnotGeometry( 1, 0.3, 500, 500 );
const worker = new ParallelMeshBVHWorker();
geometry.boundsTree = await worker.generate( geometry );
const mesh = new Mesh( geometry, new MeshStandardMaterial( { color: 0x4db6ac, roughness: 0.75 } ) );
const helper = new BVHHelper( mesh, 10 );
helper.traverse( object => object.frustumCulled = false );
scene.add( mesh, helper );