This commit is contained in:
2024-03-11 00:43:31 +01:00
parent 00cfdfd46e
commit 608c2b08ec
9 changed files with 181 additions and 31 deletions

View File

@@ -1,5 +1,11 @@
import { BufferGeometryLoader } from 'three';
import { type SliceArguments, type ProgressMessage, type WorkerEvent } from './worker-data';
import { BufferGeometry, BufferGeometryLoader, Float32BufferAttribute } from 'three';
import {
type SliceArguments,
type ProgressMessage,
type WorkerEvent,
type LayerMessage,
LayerType
} from './worker-data';
import init, { slice } from 'bampy';
addEventListener('message', async (event: MessageEvent<WorkerEvent>) => {
@@ -9,11 +15,20 @@ addEventListener('message', async (event: MessageEvent<WorkerEvent>) => {
geometry.toNonIndexed();
}
await init();
slice(
geometry.attributes.position.array as Float32Array,
event.data.data.layerHeight,
event.data.data.maxNonPlanarAngle
);
const result = slice({
positions: geometry.attributes.position.array as Float32Array,
layerHeight: event.data.data.layerHeight,
maxAngle: event.data.data.maxNonPlanarAngle
});
for (const layer of result.rings) {
const geometry = new BufferGeometry();
geometry.setAttribute('position', new Float32BufferAttribute(layer, 3));
self.postMessage({
type: 'layer',
data: { type: LayerType.Line, geometry: geometry.toJSON() }
} satisfies LayerMessage);
}
}
});