From a8bbedf435ce9901bc4f71988a17dc7070db1814 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Fri, 16 Sep 2022 10:43:53 -0400 Subject: [PATCH] add ability to switch between flat/fast and shiny/slow slice render methods --- src/kiri/conf.js | 1 + src/kiri/init.js | 2 ++ src/kiri/stack.js | 14 +++++++++++++- src/kiri/stacks.js | 2 +- web/kiri/lang/en.js | 2 ++ 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 75681631..d23b6caf 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -680,6 +680,7 @@ const conf = exports({ controller:{ view: null, dark: false, + shiny: false, decals: true, danger: false, zoomSpeed: 1.0, diff --git a/src/kiri/init.js b/src/kiri/init.js index 00d466f8..cbc8fcb9 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -177,6 +177,7 @@ gapp.register("kiri.init", [], (root, exports) => { if (control.antiAlias != ui.antiAlias.checked) { api.show.alert('Page Reload Required to Change Aliasing'); } + control.shiny = ui.shiny.checked; control.decals = ui.decals.checked; control.danger = ui.danger.checked; control.showOrigin = ui.showOrigin.checked; @@ -1756,6 +1757,7 @@ gapp.register("kiri.init", [], (root, exports) => { showRulers: uc.newBoolean(LANG.op_shru_s, booleanSave, {title:LANG.op_shru_l}), showSpeeds: uc.newBoolean(LANG.op_sped_s, speedSave, {title:LANG.op_sped_l}), decals: uc.newBoolean(LANG.op_decl_s, booleanSave, {title:LANG.op_decl_s}), + shiny: uc.newBoolean(LANG.op_shny_s, booleanSave, {title:LANG.op_shny_l, modes:FDM}), lineType: uc.newSelect(LANG.op_line_s, {title: LANG.op_line_l, action: lineTypeSave, modes:FDM}, "linetype"), animesh: uc.newSelect(LANG.op_anim_s, {title: LANG.op_anim_l, action: aniMeshSave, modes:CAM}, "animesh"), units: uc.newSelect(LANG.op_unit_s, {title: LANG.op_unit_l, action: unitsSave, modes:CAM, trace:true}, "units"), diff --git a/src/kiri/stack.js b/src/kiri/stack.js index c8d7be34..c1862907 100644 --- a/src/kiri/stack.js +++ b/src/kiri/stack.js @@ -7,12 +7,13 @@ gapp.register("kiri.stack", [], (root, exports) => { const { kiri } = root; class Stack { - constructor(view, freeMem) { + constructor(view, freeMem, shiny) { this._view = view; this.view = view.newGroup(); this.slices = []; this.meshes = []; this.freeMem = freeMem; + newMat = shiny ? createPhongMaterial : createLambertMaterial; } size() { @@ -259,4 +260,15 @@ function createPhongMaterial(color, flat) { }); } +function createLambertMaterial(color, flat) { + return new THREE.MeshLambertMaterial({ + // shininess, + // specular, + transparent: color.opacity != 1, + opacity: color.opacity || 1, + color: color.face, + side: flat ? THREE.DoubleSide : THREE.FrontSide + }); +} + }); diff --git a/src/kiri/stacks.js b/src/kiri/stacks.js index 56116ac3..9e9adf22 100644 --- a/src/kiri/stacks.js +++ b/src/kiri/stacks.js @@ -80,7 +80,7 @@ function create(name, view) { } const stack = stacks[name] = { layers: [ ], - obj: new kiri.Stack(view, freeMem), + obj: new kiri.Stack(view, freeMem, kiri.api.conf.get().controller.shiny), add: function(layers) { let lmap = layers.layers; let map = stack.obj.addLayers(layers); diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 07735c3c..39069daf 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -236,6 +236,8 @@ self.kiri.lang['en-us'] = { op_xprt_l: "show more settings options", op_decl_s: "show decals", op_decl_l: "show device decals and logos", + op_shny_s: "detail render", + op_shny_l: "choose a slice render method that is slower and uses specular highlighting. this makes it easier to see detail in some models at the expense of render speed", op_dang_s: "experimental", op_dang_l: "show experimental parameters", op_devl_s: "developer",