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);
};
PRO.renderSolid = function(layer, color) {
layer.solid(this, color);
};
/**
* add new point and return polygon reference for chaining
*

View file

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

View file

@ -49,7 +49,8 @@ var gs_kiri_init = exports;
o2js = API.o2js,
selectedTool = null,
editTools = null,
maxTool = 0;
maxTool = 0,
platformColor;
// extend KIRI API with local functions
API.show.devices = showDevices;
@ -983,18 +984,19 @@ var gs_kiri_init = exports;
evt.stopPropagation();
evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy';
SPACE.platform.setColor(0x00ff00);
let oldcolor = SPACE.platform.setColor(0x00ff00);
if (oldcolor !== 0x00ff00) platformColor = oldcolor;
}
function dragLeave() {
SPACE.platform.setColor(0x555555);
SPACE.platform.setColor(platformColor);
}
function dropHandler(evt) {
evt.stopPropagation();
evt.preventDefault();
SPACE.platform.setColor(0x555555);
SPACE.platform.setColor(platformColor);
let files = evt.dataTransfer.files,
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.newLayer = function(view) { return new Layer(view) };
function materialFor(color, mesh, linewidth) {
function materialFor(layer, color, mesh, linewidth) {
let m = mcache[color];
if (!m) {
m = mcache[color] = mesh ? new THREE.MeshPhongMaterial({
specular: 0x181818,
shininess: 100,
transparent: true,
opacity: 0.15,
transparent: layer.transparent,
shininess: layer.shininess,
specular: layer.specular,
opacity: layer.opacity,
color: color,
side: THREE.DoubleSide
}) : new THREE.LineBasicMaterial({
@ -80,6 +80,26 @@ let gs_kiri_layer = exports;
this.solids = null;
this.view = view;
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) {
@ -163,7 +183,7 @@ let gs_kiri_layer = exports;
for (let key in bycolor) {
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) {
if (obj.solid) {
@ -173,8 +193,16 @@ let gs_kiri_layer = exports;
if (arr.length > 0) {
let geo = new THREE.BufferGeometry();
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(),
arr = geo.vertices,
mat = materialFor(parseInt(key));
mat = materialFor(this, parseInt(key));
added = bycolor[key];

View file

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

View file

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

View file

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