diff --git a/src/kiri/mode/cam/topo4.js b/src/kiri/mode/cam/topo4.js index 171b93d0..b6760dc7 100644 --- a/src/kiri/mode/cam/topo4.js +++ b/src/kiri/mode/cam/topo4.js @@ -7,7 +7,6 @@ import { sliceConnect } from '../../../geo/slicer.js'; import { newSlice } from '../../core/slice.js'; import { Tool } from './tool.js'; import { Slicer as topo_slicer } from './slicer_topo.js'; -import { RasterPath } from '../../../gpu/raster.js'; const RAD2DEG = 180 / Math.PI; const DEG2RAD = Math.PI / 180; @@ -163,17 +162,19 @@ export class Topo { async sliceGPU(onupdate) { const { angle, linear, offStart, offEnd, resolution, tool, unit, vertices, zBottom } = this; - let gpu = new RasterPath({ workerName: "/lib/gpu/raster-worker.js" }); - await gpu.init(); - await gpu.initWorkerPool(); + let gputool = tool.slice(); + for (let i=0; i { console.log({ pct, msg }) } ); - // console.log({ tool, output, tickperstep }); - // const axis = new THREE.Vector3(1, 0, 0); let { numRotations, pointsPerLine, pathData } = output; let degPerRow = 360 / numRotations; let slices = this.gpu_slices = []; @@ -193,10 +192,6 @@ export class Topo { for (let i=0; i newPoint(j * xmult + xoff, 0, v).setA(-i * degPerRow)); - // let points = Array.from(lineData).map((v,i) => [ i * xmult + xoff, 0, v ]).flat().toFloat32(); - // let rot = new THREE.Matrix4().makeRotationAxis(axis, (Math.PI / numRotations * 2) * i); - // new THREE.BufferAttribute(points, 3).applyMatrix4(rot); - // points = Array.from(points).group(3).map((v,i) => newPoint(v[0], v[1], v[2])); rows.push(points); } if (linear) { @@ -211,7 +206,6 @@ export class Topo { for (let i=0; i row[i]); - // points.push(points[0].setA(points[0].a - 360)); if (i % 2 === 1) points.reverse(); slice.index = i; slice.camLines = [ newPolygon(points).setOpen() ]; diff --git a/src/kiri/run/worker.js b/src/kiri/run/worker.js index cb6b659b..9059a3c7 100644 --- a/src/kiri/run/worker.js +++ b/src/kiri/run/worker.js @@ -17,6 +17,7 @@ import { version } from '../../moto/license.js'; import { Widget, newWidget } from '../core/widget.js'; import { load } from "../../load/png.js"; import { JSZip } from '../../ext/jszip-esm.js'; +import { RasterPath } from '../../gpu/raster.js'; import { CAM } from '../mode/cam/driver-be.js'; import { DRAG } from '../mode/drag/driver.js'; @@ -64,6 +65,16 @@ self.alert = function(o) { self.uuid = ((Math.random() * Date.now()) | 0).toString(36); +self.get_raster_gpu = async function() { + let gpu = self.raster_gpu; + if (!gpu) { + gpu = self.raster_gpu = new RasterPath({ workerName: "/lib/gpu/raster-worker.js" }); + await gpu.init(); + await gpu.initWorkerPool(); + } + return gpu; +}; + function minhandler(msg) { let data = msg.data; let seq = data.seq;