From 16ce1b8e24f556be9d0aef3e5620395bf6c70cf6 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sun, 1 Mar 2020 19:47:34 -0500 Subject: [PATCH] fix origin visualization for stock --- js/kiri.js | 25 ++++++++++++++++++------- js/moto-space.js | 44 +++++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/js/kiri.js b/js/kiri.js index 09dce845..115fa2a4 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -1964,6 +1964,7 @@ self.kiri.license = exports.LICENSE; camTopZ = 0; camUpdateWidgetZ(); } + updateOrigin(); } function updateFields() { @@ -2070,16 +2071,26 @@ self.kiri.license = exports.LICENSE; function updateOrigin() { if (!settings.controller.showOrigin) { SPACE.platform.setOrigin(); - SPACE.update(); return; } - if (settings.process.outputOriginCenter) { - SPACE.platform.setOrigin(0,0,0); - } else { - let dev = settings.device; - SPACE.platform.setOrigin(-dev.bedWidth/2,dev.bedDepth/2,0); + let dev = settings.device; + let proc = settings.process; + let x = 0; + let y = 0; + let z = 0; + if (proc.camOriginTop) { + z = camTopZ + proc.camZTopOffset + 0.01; } - SPACE.update(); + if (!proc.outputOriginCenter) { + if (camStock) { + x = -camStock.scale.x / 2; + y = camStock.scale.y / 2; + } else { + x = -dev.bedWidth / 2; + y = dev.bedDepth / 2; + } + } + SPACE.platform.setOrigin(x,y,z); } function updatePlatformSize() { diff --git a/js/moto-space.js b/js/moto-space.js index 420c123c..c9828ba5 100644 --- a/js/moto-space.js +++ b/js/moto-space.js @@ -232,10 +232,14 @@ let gs_moto_space = exports; function setOrigin(x, y, z) { if (gridOrigin) { - Space.scene.remove(gridOrigin); + if (x === gridOrigin.x && y === gridOrigin.y && z === gridOrigin.z) { + return; + } + Space.scene.remove(gridOrigin.group); } if (x === undefined) { gridOrigin = null; + Space.update(); return; } let cmat = new THREE.MeshPhongMaterial({ @@ -254,48 +258,50 @@ let gs_moto_space = exports; }); let PIP = Math.PI/2; let pi1, pi2, pi3, pi4; - gridOrigin = new THREE.Group(); - gridOrigin.add(pi1 = new THREE.Mesh( + let group = new THREE.Group(); + gridOrigin = {x, y, z, group}; + group.add(pi1 = new THREE.Mesh( new THREE.CircleGeometry(4.6, 50, PIP*0, PIP*1), cmat )); pi1.position.x = 0.25; pi1.position.y = 0.25; - gridOrigin.add(pi2 = new THREE.Mesh( + group.add(pi2 = new THREE.Mesh( new THREE.CircleGeometry(4.6, 50, PIP*1, PIP*1), cmat )); pi2.position.x = -0.25; pi2.position.y = 0.25; - gridOrigin.add(pi3 = new THREE.Mesh( + group.add(pi3 = new THREE.Mesh( new THREE.CircleGeometry(4.6, 50, PIP*2, PIP*1), cmat )); pi3.position.x = -0.25; pi3.position.y = -0.25; - gridOrigin.add(pi4 = new THREE.Mesh( + group.add(pi4 = new THREE.Mesh( new THREE.CircleGeometry(4.6, 50, PIP*3, PIP*1), cmat )); pi4.position.x = 0.25; pi4.position.y = -0.25; - gridOrigin.add(new THREE.Mesh( + group.add(new THREE.Mesh( new THREE.RingGeometry(5, 5.5, 50), rmat )); - gridOrigin.add(new THREE.Mesh( + group.add(new THREE.Mesh( new THREE.PlaneGeometry(0.5, 10), rmat )); - gridOrigin.add(new THREE.Mesh( + group.add(new THREE.Mesh( new THREE.PlaneGeometry(10, 0.5), rmat )); - gridOrigin.rotation.x = -PI2; - gridOrigin.position.x = x; - gridOrigin.position.y = z; - gridOrigin.position.z = y; - Space.scene.add(gridOrigin); + group.rotation.x = -PI2; + group.position.x = x; + group.position.y = z; + group.position.z = y; + Space.scene.add(group); + Space.update(); } function refresh() { @@ -565,7 +571,6 @@ let gs_moto_space = exports; size: function() { return platform.scale }, isVisible: function() { return platform.visible }, - showGrid: function(b) { gridView.visible = b }, setRound: function(bool) { @@ -600,14 +605,11 @@ let gs_moto_space = exports; front: function() { tweenCam({left: 0, up: PI2, panX: 0, panY: panY, panZ: 0}) }, right: function() { tweenCam({left: PI2, up: PI2, panX: 0, panY: panY, panZ: 0}) }, left: function() { tweenCam({left: -PI2, up: PI2, panX: 0, panY: panY, panZ: 0}) }, - - panTo: function(x,y,z) { tweenCamPan(x,y,z) }, - - setZoom: function(r,v) { viewControl.setZoom(r,v) }, - reset: function() { viewControl.reset(); requestRefresh() }, load: function(cam) { viewControl.setPosition(cam) }, - save: function() { return viewControl.getPosition(true) } + save: function() { return viewControl.getPosition(true) }, + panTo: function(x,y,z) { tweenCamPan(x,y,z) }, + setZoom: function(r,v) { viewControl.setZoom(r,v) } }, mouse: {