checkpoint rebuilder
This commit is contained in:
parent
d847640feb
commit
d634a0ce1c
4 changed files with 116 additions and 55 deletions
|
|
@ -160,14 +160,8 @@ mesh.model = class MeshModel extends mesh.object {
|
|||
}).then(data => {
|
||||
console.log({rebuild: this.id, data});
|
||||
let points = [];
|
||||
for (let arr of data) {
|
||||
arr.push(arr[0]);
|
||||
for (let i=0; i<arr.length-1; i++) {
|
||||
let p1 = arr[i];
|
||||
let p2 = arr[i+1];
|
||||
points.push(new THREE.Vector3().fromArray(p1));
|
||||
points.push(new THREE.Vector3().fromArray(p2));
|
||||
}
|
||||
for (let i=0; i<data.length;) {
|
||||
points.push(new THREE.Vector3(data[i++], data[i++], data[i++]));
|
||||
}
|
||||
let material = new THREE.LineBasicMaterial( { color: 0xdddddd } );
|
||||
let geometry = new THREE.BufferGeometry().setFromPoints(points);
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ gapp.finalize("mesh.work", [
|
|||
"moto.client", // dep: moto.client
|
||||
"moto.worker", // dep: moto.worker
|
||||
"mesh.tool", // dep: mesh.tool
|
||||
"mesh.util", // dep: mesh.util
|
||||
"add.three", // dep: add.three
|
||||
]);
|
||||
|
||||
|
|
@ -31,6 +32,7 @@ let { Matrix4, Vector3, BufferGeometry, BufferAttribute, computeFaceNormal } = T
|
|||
let core_matrix = new Matrix4().makeRotationX(Math.PI / 2);
|
||||
|
||||
let { client, worker } = moto;
|
||||
let { util } = mesh;
|
||||
let cache = {};
|
||||
|
||||
function log(msg) {
|
||||
|
|
@ -297,17 +299,45 @@ let model = {
|
|||
log(`${id} | rebuilding...`);
|
||||
let points = translate_encode(id, matrix);
|
||||
log(`${id} | ${points.length} points`);
|
||||
base.slice(points, { flat: true, autoDim: true, zinc: 0 })
|
||||
.then(sliced => {
|
||||
let layers = [];
|
||||
log(`${id} | ${sliced.length} slices`);
|
||||
for (let slice of sliced) {
|
||||
for (let poly of slice.groups) {
|
||||
layers.push(poly.points.map(p => [ p.x, p.y, p.z ]));
|
||||
base.slice(points, {
|
||||
autoDim: true,
|
||||
flat: true,
|
||||
zinc: 0,
|
||||
both: true,
|
||||
// debug: true,
|
||||
minstep: 0.25,
|
||||
}).then(output => {
|
||||
let layers = [];
|
||||
let { points, slices } = output;
|
||||
log(`${id} | ${slices.length} slices Z`);
|
||||
for (let slice of slices) {
|
||||
for (let line of slice.lines) {
|
||||
layers.appendAll(util.extract(line.p1));
|
||||
layers.appendAll(util.extract(line.p2));
|
||||
}
|
||||
}
|
||||
// send.done(layers);
|
||||
for (let p of points) p.swapXZ();
|
||||
base.slice(points, {
|
||||
autoDim: true,
|
||||
zinc: 0,
|
||||
both: true,
|
||||
// debug: true,
|
||||
minstep: 0.25,
|
||||
}).then(output => {
|
||||
let { points, slices } = output;
|
||||
log(`${id} | ${slices.length} slices X`);
|
||||
for (let slice of slices) {
|
||||
for (let line of slice.lines) {
|
||||
if (!line.p1.swapped) { line.p1.swapXZ().swapped = true }
|
||||
if (!line.p2.swapped) { line.p2.swapXZ().swapped = true }
|
||||
layers.appendAll(util.extract(line.p1));
|
||||
layers.appendAll(util.extract(line.p2));
|
||||
}
|
||||
}
|
||||
send.done(layers);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue