UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

44 lines (43 loc) 1.45 kB
"use strict"; import { BaseSopOperation } from "./_Base"; import { InputCloneMode } from "../../../engine/poly/InputCloneMode"; import { MeshBVHHelper } from "../../../core/geometry/bvh/three-mesh-bvh"; export class BVHVisualizerSopOperation extends BaseSopOperation { static type() { return "BVHVisualizer"; } cook(inputCoreGroups, params) { const inputCoreGroup = inputCoreGroups[0]; const objects = inputCoreGroup.threejsObjects(); const newObjects = []; for (let object of objects) { newObjects.push(object); object.traverse((childObject) => { const mesh = childObject; if (mesh.isMesh) { const visualizer = new MeshBVHHelper(mesh, params.depth); visualizer.opacity = params.opacity; visualizer.depth = params.depth; visualizer.displayEdges = params.displayEdges; visualizer.displayParents = params.displayParents; visualizer.update(); const parent = mesh.parent; if (parent) { parent.add(visualizer); } else { newObjects.push(visualizer); } mesh.geometry.drawRange.count = 0; } }); } return this.createCoreGroupFromObjects(newObjects); } } BVHVisualizerSopOperation.DEFAULT_PARAMS = { depth: 0, opacity: 0.2, displayEdges: true, displayParents: false }; BVHVisualizerSopOperation.INPUT_CLONED_STATE = InputCloneMode.ALWAYS;