visual tweaks, colors, solids, platform

This commit is contained in:
Stewart Allen 2020-04-22 00:24:06 -04:00
commit 1efa45943c
7 changed files with 80 additions and 23 deletions

View file

@ -503,6 +503,10 @@ var gs_base_polygon = exports;
layer.poly(this, color, recursive, open); layer.poly(this, color, recursive, open);
}; };
PRO.renderSolid = function(layer, color) {
layer.solid(this, color);
};
/** /**
* add new point and return polygon reference for chaining * add new point and return polygon reference for chaining
* *

View file

@ -335,7 +335,7 @@ let gs_kiri_sla = exports;
polys.forEach(poly => { polys.forEach(poly => {
poly = poly.clone(true).move(widget.track.pos); poly = poly.clone(true).move(widget.track.pos);
layer.poly(poly, 0x010101, true); layer.poly(poly, 0x010101, true);
layer.solid(poly, 0x00bbee); layer.solid(poly, 0x0099cc);
count++; count++;
}); });
}); });

View file

@ -49,7 +49,8 @@ var gs_kiri_init = exports;
o2js = API.o2js, o2js = API.o2js,
selectedTool = null, selectedTool = null,
editTools = null, editTools = null,
maxTool = 0; maxTool = 0,
platformColor;
// extend KIRI API with local functions // extend KIRI API with local functions
API.show.devices = showDevices; API.show.devices = showDevices;
@ -983,18 +984,19 @@ var gs_kiri_init = exports;
evt.stopPropagation(); evt.stopPropagation();
evt.preventDefault(); evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy'; evt.dataTransfer.dropEffect = 'copy';
SPACE.platform.setColor(0x00ff00); let oldcolor = SPACE.platform.setColor(0x00ff00);
if (oldcolor !== 0x00ff00) platformColor = oldcolor;
} }
function dragLeave() { function dragLeave() {
SPACE.platform.setColor(0x555555); SPACE.platform.setColor(platformColor);
} }
function dropHandler(evt) { function dropHandler(evt) {
evt.stopPropagation(); evt.stopPropagation();
evt.preventDefault(); evt.preventDefault();
SPACE.platform.setColor(0x555555); SPACE.platform.setColor(platformColor);
let files = evt.dataTransfer.files, let files = evt.dataTransfer.files,
plate = files.length < 5 || confirm(`add ${files.length} objects to workspace?`), plate = files.length < 5 || confirm(`add ${files.length} objects to workspace?`),

View file

@ -16,14 +16,14 @@ let gs_kiri_layer = exports;
KIRI.Layer = Layer; KIRI.Layer = Layer;
KIRI.newLayer = function(view) { return new Layer(view) }; KIRI.newLayer = function(view) { return new Layer(view) };
function materialFor(color, mesh, linewidth) { function materialFor(layer, color, mesh, linewidth) {
let m = mcache[color]; let m = mcache[color];
if (!m) { if (!m) {
m = mcache[color] = mesh ? new THREE.MeshPhongMaterial({ m = mcache[color] = mesh ? new THREE.MeshPhongMaterial({
specular: 0x181818, transparent: layer.transparent,
shininess: 100, shininess: layer.shininess,
transparent: true, specular: layer.specular,
opacity: 0.15, opacity: layer.opacity,
color: color, color: color,
side: THREE.DoubleSide side: THREE.DoubleSide
}) : new THREE.LineBasicMaterial({ }) : new THREE.LineBasicMaterial({
@ -80,6 +80,26 @@ let gs_kiri_layer = exports;
this.solids = null; this.solids = null;
this.view = view; this.view = view;
this.bycolor = {}; this.bycolor = {};
this.opacity = 0.15,
this.specular = 0x181818,
this.shininess = 100,
this.transparent = true;
};
LP.setOpacity = function(v) {
this.opacity = v;
};
LP.setSpecular = function(v) {
this.specular = v;
};
LP.setShininess = function(v) {
this.shininess = v;
};
LP.setTransparent = function(b) {
this.transparent = b;
}; };
LP.setVisible = function(vis) { LP.setVisible = function(vis) {
@ -163,7 +183,7 @@ let gs_kiri_layer = exports;
for (let key in bycolor) { for (let key in bycolor) {
if (!bycolor.hasOwnProperty(key)) continue; if (!bycolor.hasOwnProperty(key)) continue;
let arr = [], mat = materialFor(parseInt(key), true); let arr = [], mat = materialFor(this, parseInt(key), true);
bycolor[key].forEach(function(obj) { bycolor[key].forEach(function(obj) {
if (obj.solid) { if (obj.solid) {
@ -173,8 +193,16 @@ let gs_kiri_layer = exports;
if (arr.length > 0) { if (arr.length > 0) {
let geo = new THREE.BufferGeometry(); let geo = new THREE.BufferGeometry();
geo.setAttribute('position', new THREE.BufferAttribute(arr.toFloat32(), 3)); geo.setAttribute('position', new THREE.BufferAttribute(arr.toFloat32(), 3));
this.solids.add(new THREE.Mesh(geo, mat)); geo.computeFaceNormals();
geo.computeVertexNormals();
let mesh = new THREE.Mesh(geo, mat);
mesh.castShadow = true;
mesh.receiveShadow = true;
this.solids.add(mesh);
} }
} }
}; };
@ -192,7 +220,7 @@ let gs_kiri_layer = exports;
let geo = new THREE.Geometry(), let geo = new THREE.Geometry(),
arr = geo.vertices, arr = geo.vertices,
mat = materialFor(parseInt(key)); mat = materialFor(this, parseInt(key));
added = bycolor[key]; added = bycolor[key];

View file

@ -22,6 +22,11 @@ let gs_kiri_slice = exports;
MAX = Math.max, MAX = Math.max,
NOKEY = BASE.key.NONE, NOKEY = BASE.key.NONE,
outline_colors = [ outline_colors = [
0xeeee00,
0xeebb00,
0xee8800
],
outline_solid_colors = [
0xffff00, 0xffff00,
0xffcc00, 0xffcc00,
0xff9900 0xff9900
@ -36,13 +41,16 @@ let gs_kiri_slice = exports;
0xffffff, 0xffffff,
0x000000 0x000000
], ],
trace_color = 0x000000, trace_color = 0x0,
sparse_fill_color = 0x333366, sparse_fill_color = 0x333366,
fill_offset_color = 0xeeeeee, fill_offset_color = 0xeeeeee,
fill_color = 0x333333, fill_color = 0x333333,
flat_color = 0xff00aa, flat_outline_color = 0xee0099,
bridge_color = 0x00aaff, flat_solid_color = 0xff00aa,
solid_outline_color = 0x00dd00; bridge_outline_color = 0x0099ee,
bridge_solid_color = 0x00aaff,
solid_outline_color = 0x00cc00,
solid_solid_color = 0x00dd00;
KIRI.Top = Top; KIRI.Top = Top;
KIRI.newTop = newTop; KIRI.newTop = newTop;
@ -327,7 +335,7 @@ let gs_kiri_slice = exports;
* *
* @param {number} renderMode * @param {number} renderMode
*/ */
PRO.renderOutline = function(renderMode,color) { PRO.renderOutline = function(renderMode, color) {
if (!this.view) return; if (!this.view) return;
let process = KIRI.driver.CAM.process, let process = KIRI.driver.CAM.process,
@ -342,6 +350,7 @@ let gs_kiri_slice = exports;
open = (slice.camMode === process.FINISH_X || slice.camMode === process.FINISH_Y); open = (slice.camMode === process.FINISH_X || slice.camMode === process.FINISH_Y);
layer.clear(); layer.clear();
// layer.setOpacity(0.05);
switch (renderMode % 5) { switch (renderMode % 5) {
// un-processed lines // un-processed lines
@ -375,15 +384,16 @@ let gs_kiri_slice = exports;
break; break;
// all polygons in yellow // all polygons in yellow
case 4: case 4:
colors = outline_colors;
tops.forEach(function(top) { tops.forEach(function(top) {
layer.poly(top.poly, colors[color], true, open); layer.poly(top.poly, outline_colors[color], true, open);
if (top.inner) layer.poly(top.inner, 0x999999, true, null); // layer.solid(top.poly, outline_solid_colors[color]);
if (top.inner) layer.poly(top.inner, 0x777777, true);
// if (top.thinner) layer.poly(top.thinner, 0x559999, true, null); // if (top.thinner) layer.poly(top.thinner, 0x559999, true, null);
}); });
break; break;
} }
// layer.renderSolid();
layer.render(); layer.render();
}; };
@ -834,15 +844,19 @@ let gs_kiri_slice = exports;
if (bridges) bridges.forEach(function (t) { if (bridges) bridges.forEach(function (t) {
t.setZ(scope.z); t.setZ(scope.z);
t.render(bridgeLayer, bridge_color, true); t.render(bridgeLayer, bridge_outline_color, true);
t.renderSolid(bridgeLayer, bridge_solid_color);
}); });
if (flats) flats.forEach(function (t) { if (flats) flats.forEach(function (t) {
t.setZ(scope.z); t.setZ(scope.z);
t.render(flatLayer, flat_color, true); t.render(flatLayer, flat_outline_color, true);
t.renderSolid(flatLayer, flat_solid_color);
}); });
bridgeLayer.renderSolid();
bridgeLayer.render(); bridgeLayer.render();
flatLayer.renderSolid();
flatLayer.render(); flatLayer.render();
}; };
@ -989,8 +1003,10 @@ let gs_kiri_slice = exports;
if (trimmed) trimmed.forEach(function(poly) { if (trimmed) trimmed.forEach(function(poly) {
poly.render(layer, solid_outline_color, true); poly.render(layer, solid_outline_color, true);
poly.renderSolid(layer, solid_solid_color, true);
}); });
layer.renderSolid();
layer.render(); layer.render();
}; };

View file

@ -1898,6 +1898,11 @@ self.kiri.copyright = exports.COPYRIGHT;
settings.device = clone(settings.cdev[mode]); settings.device = clone(settings.cdev[mode]);
API.event.emit('device.set', currentDeviceName()); API.event.emit('device.set', currentDeviceName());
} }
if (MODE === MODES.CAM) {
SPACE.platform.setColor(0xeeeeee);
} else {
SPACE.platform.setColor(0xcccccc);
}
MODE = MODES[mode]; MODE = MODES[mode];
// updates right-hand menu by enabling/disabling fields // updates right-hand menu by enabling/disabling fields
UC.setMode(MODE); UC.setMode(MODE);

View file

@ -194,8 +194,10 @@ var MOTO = window.moto = window.moto || {};
} }
function setPlatformColor(color) { function setPlatformColor(color) {
let was = platform.material.color.getHex();
platform.material.color.set(color); platform.material.color.set(color);
requestRefresh(); requestRefresh();
return was;
} }
function setGrid(unitMajor, unitMinor, colorMajor, colorMinor) { function setGrid(unitMajor, unitMinor, colorMajor, colorMinor) {