@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
29 lines (28 loc) • 886 B
JavaScript
;
import { MeshBVH, acceleratedRaycast, CENTER } from "./three-mesh-bvh";
export class ThreeMeshBVHHelper {
static assignBVH(mesh, bvh) {
mesh.raycast = acceleratedRaycast;
mesh.geometry.boundsTree = bvh;
}
static assignDefaultBVHIfNone(mesh) {
let bvh = mesh.geometry.boundsTree || this.defaultBVH(mesh);
this.assignBVH(mesh, bvh);
}
static createBVH(mesh, options) {
return new MeshBVH(mesh.geometry, options);
}
static defaultBVH(mesh) {
return this.createBVH(mesh, { strategy: CENTER, maxLeafTris: 10, maxDepth: 40, verbose: false });
}
static copyBVH(meshDest, meshSrc) {
const existingBVH = meshSrc.geometry.boundsTree;
if (existingBVH) {
meshDest.raycast = acceleratedRaycast;
this.assignBVH(meshDest, existingBVH);
}
}
static updateRaycaster(raycaster) {
raycaster.firstHitOnly = true;
}
}