fix split normals. model on bed no gap
This commit is contained in:
parent
9149376874
commit
c4fd0cef74
5 changed files with 40 additions and 19 deletions
|
|
@ -2498,7 +2498,8 @@
|
|||
platform.deselect();
|
||||
CATALOG.addFileListener(updateCatalog);
|
||||
SPACE.view.setZoom(control.reverseZoom, control.zoomSpeed);
|
||||
SPACE.platform.setZOff(0.2);
|
||||
SPACE.platform.setGridZOff(undefined);
|
||||
SPACE.platform.setZOff(0.01);
|
||||
|
||||
// restore UI state from settings
|
||||
UI.showOrigin.checked = control.showOrigin;
|
||||
|
|
|
|||
|
|
@ -41,11 +41,11 @@ function init() {
|
|||
platform.set({
|
||||
volume: false,
|
||||
round: false,
|
||||
zOffset: 0.1,
|
||||
zOffset: 0,
|
||||
opacity: 0,
|
||||
color: 0xdddddd,
|
||||
zoom: { reverse: true, speed: 1 },
|
||||
size: { width: 2000, depth: 2000, height: 1, maxz: 300 },
|
||||
size: { width: 2000, depth: 2000, height: 0.001, maxz: 200 },
|
||||
grid: { major: 25, minor: 5,
|
||||
colorMajor: 0xcccccc, colorMinor: 0xeeeeee,
|
||||
colorX: 0xff7777, colorY: 0x7777ff },
|
||||
|
|
|
|||
|
|
@ -158,6 +158,8 @@ mesh.model = class MeshModel extends mesh.object {
|
|||
worker.model_load({id: this.id, name: this.name, vertices, indices});
|
||||
// restore wireframe state
|
||||
this.wireframe(was);
|
||||
// fixup normals
|
||||
this.normals({refresh: true});
|
||||
}
|
||||
|
||||
get group() {
|
||||
|
|
@ -290,6 +292,9 @@ mesh.model = class MeshModel extends mesh.object {
|
|||
if (bool.toggle) {
|
||||
bool = !was;
|
||||
}
|
||||
if (bool.refresh && !was) {
|
||||
return;
|
||||
}
|
||||
// no change
|
||||
if (was === bool) {
|
||||
return was;
|
||||
|
|
|
|||
|
|
@ -124,22 +124,31 @@ let model = {
|
|||
o1.appendAll([...v1, ...v2, ...v3]);
|
||||
}
|
||||
if (split) {
|
||||
let g1, g2, oa, ua;
|
||||
if (overl === 2) {
|
||||
// two over, one under
|
||||
let vo = under[0] || on[0]; // under or on
|
||||
let m1 = lerp(over[0], vo);
|
||||
let m2 = lerp(over[1], vo);
|
||||
o2.appendAll([ ...over[0], ...over[1], ...m1 ]);
|
||||
o2.appendAll([ ...over[1], ...m1, ...m2 ]);
|
||||
o1.appendAll([ ...m1, ...m2, ...under[0] ]);
|
||||
g1 = o2;
|
||||
g2 = o1;
|
||||
oa = over;
|
||||
ua = under;
|
||||
} else {
|
||||
// one over, two under
|
||||
let vo = over[0] || on[0]; // over or on
|
||||
let m1 = lerp(under[0], vo);
|
||||
let m2 = lerp(under[1], vo);
|
||||
o1.appendAll([ ...under[0], ...under[1], ...m1 ]);
|
||||
o1.appendAll([ ...under[1], ...m1, ...m2 ]);
|
||||
o2.appendAll([ ...m1, ...m2, ...over[0] ]);
|
||||
g1 = o1;
|
||||
g2 = o2;
|
||||
oa = under;
|
||||
ua = over;
|
||||
}
|
||||
let [ p1, p2 ] = oa;
|
||||
let p3 = ua[0] || on[0]; // under or on
|
||||
let m1 = lerp(p1, p3);
|
||||
let m2 = lerp(p2, p3);
|
||||
if (v2 === ua[0]) {
|
||||
// reverse when the mid point gap
|
||||
g1.appendAll([ ...m1, ...p2, ...p1 ]);
|
||||
g1.appendAll([ ...m1, ...m2, ...p2 ]);
|
||||
g2.appendAll([ ...p3, ...m2, ...m1 ]);
|
||||
} else {
|
||||
g1.appendAll([ ...p1, ...p2, ...m1 ]);
|
||||
g1.appendAll([ ...p2, ...m2, ...m1 ]);
|
||||
g2.appendAll([ ...m1, ...m2, ...p3 ]);
|
||||
}
|
||||
}
|
||||
on.length = over.length = under.length = 0;
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@
|
|||
w = x / 2,
|
||||
h = y / 2,
|
||||
d = z / 2,
|
||||
zp = -d - platformZOff + (gridZOff || (z/2-0.1)),
|
||||
zp = -d - platformZOff + numOrDef(gridZOff, (z/2-0.1)),
|
||||
labelSize = grid.unitMinor * fontScale,
|
||||
oldView = ruler.view,
|
||||
view = ruler.view = new THREE.Group();
|
||||
|
|
@ -465,6 +465,10 @@
|
|||
updateGrid();
|
||||
}
|
||||
|
||||
function numOrDef(v, dv) {
|
||||
return v !== undefined ? v : dv;
|
||||
}
|
||||
|
||||
function modMatch(val, mod) {
|
||||
let mv = Math.abs(val) % mod;
|
||||
return (mv < 1) || ((mod - mv) < 1);
|
||||
|
|
@ -480,7 +484,7 @@
|
|||
x = platform.scale.x,
|
||||
y = isRound ? platform.scale.z : platform.scale.y,
|
||||
z = isRound ? platform.scale.y : platform.scale.z,
|
||||
zp = -(z / 2) - platformZOff + (gridZOff || (z/2-0.1)),
|
||||
zp = -(z / 2) - platformZOff + numOrDef(gridZOff, (z/2-0.1)),
|
||||
xh = x / 2,
|
||||
yh = y / 2,
|
||||
x1 = -xh - origin.x,
|
||||
|
|
@ -936,10 +940,12 @@
|
|||
platform.setSize(width, depth, height, maxz);
|
||||
}
|
||||
if (grid) {
|
||||
let { zOffset } = grid;
|
||||
let { major = 25, minor = 5 } = grid;
|
||||
let { colorX, colorY, colorMajor, colorMinor } = grid;
|
||||
platform.setGrid(major, minor);
|
||||
platform.setGridColor({ colorX, colorY, colorMajor, colorMinor });
|
||||
platform.setGridZOff(zOffset);
|
||||
}
|
||||
if (origin) {
|
||||
let { x, y, z, show } = origin;
|
||||
|
|
|
|||
Loading…
Reference in a new issue