From b95b58dd7ed927259570aa170d6ed7bbe8e5c89a Mon Sep 17 00:00:00 2001 From: bakedpotatolord Date: Mon, 4 Aug 2025 20:48:23 -0600 Subject: [PATCH] start on drill mesh changes --- src/kiri/mode/cam/cl-hole.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/kiri/mode/cam/cl-hole.js b/src/kiri/mode/cam/cl-hole.js index 8ebf6e56..2d37e8c8 100644 --- a/src/kiri/mode/cam/cl-hole.js +++ b/src/kiri/mode/cam/cl-hole.js @@ -7,6 +7,9 @@ import { lastTrace, setLastTrace } from './cl-trace.js'; export let holeSelOn = false; export let lastSelHoles; +let holeGeo = new THREE.CylinderGeometry(diam/2,diam/2,depth,20); +let holeMaterial = new THREE.MeshPhongMaterial( { color } ); +let holeMesh; /** * Client side function to select holes in widgets for CAM operations. @@ -36,12 +39,17 @@ export async function selectHoles(individual) { * @param {Object} drill - {depth,selected} object of the hole * @returns {Mesh} the created mesh */ - function createHoleMesh(widget, drill) { - let { depth, selected, diam } = drill - let color = selected ? 0xFF0000 : 0x39e366 - let geo = new THREE.CylinderGeometry(diam / 2, diam / 2, depth, 20); - const material = new THREE.MeshPhongMaterial({ color }); - let mesh = new THREE.Mesh(geo, material); + function createHoleMesh(widget,drills){ + if(holeMesh) holeMesh.dispose() + holeMesh = new THREE.instancedMesh(holeGeo, holeMaterial,drills.length); + + + for(let drill of drills){ + let { depth, selected, diam } = drill + let color = selected ? 0xFF0000 : 0x39e366 + let mx = new THREE.Matrix4(); + } + mesh.position.copy(drill) mesh.position.z -= depth / 2 mesh.rotation.x = Math.PI / 2 @@ -71,9 +79,7 @@ export async function selectHoles(individual) { } }) } else { - drills.forEach(drill => { - createHoleMesh(widget, drill); - }); + createHoleMesh(widget, drills); } } })