fix origin visualization for stock

This commit is contained in:
Stewart Allen 2020-03-01 19:47:34 -05:00
commit 16ce1b8e24
2 changed files with 41 additions and 28 deletions

View file

@ -1964,6 +1964,7 @@ self.kiri.license = exports.LICENSE;
camTopZ = 0; camTopZ = 0;
camUpdateWidgetZ(); camUpdateWidgetZ();
} }
updateOrigin();
} }
function updateFields() { function updateFields() {
@ -2070,16 +2071,26 @@ self.kiri.license = exports.LICENSE;
function updateOrigin() { function updateOrigin() {
if (!settings.controller.showOrigin) { if (!settings.controller.showOrigin) {
SPACE.platform.setOrigin(); SPACE.platform.setOrigin();
SPACE.update();
return; return;
} }
if (settings.process.outputOriginCenter) { let dev = settings.device;
SPACE.platform.setOrigin(0,0,0); let proc = settings.process;
} else { let x = 0;
let dev = settings.device; let y = 0;
SPACE.platform.setOrigin(-dev.bedWidth/2,dev.bedDepth/2,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() { function updatePlatformSize() {

View file

@ -232,10 +232,14 @@ let gs_moto_space = exports;
function setOrigin(x, y, z) { function setOrigin(x, y, z) {
if (gridOrigin) { 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) { if (x === undefined) {
gridOrigin = null; gridOrigin = null;
Space.update();
return; return;
} }
let cmat = new THREE.MeshPhongMaterial({ let cmat = new THREE.MeshPhongMaterial({
@ -254,48 +258,50 @@ let gs_moto_space = exports;
}); });
let PIP = Math.PI/2; let PIP = Math.PI/2;
let pi1, pi2, pi3, pi4; let pi1, pi2, pi3, pi4;
gridOrigin = new THREE.Group(); let group = new THREE.Group();
gridOrigin.add(pi1 = new THREE.Mesh( gridOrigin = {x, y, z, group};
group.add(pi1 = new THREE.Mesh(
new THREE.CircleGeometry(4.6, 50, PIP*0, PIP*1), new THREE.CircleGeometry(4.6, 50, PIP*0, PIP*1),
cmat cmat
)); ));
pi1.position.x = 0.25; pi1.position.x = 0.25;
pi1.position.y = 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), new THREE.CircleGeometry(4.6, 50, PIP*1, PIP*1),
cmat cmat
)); ));
pi2.position.x = -0.25; pi2.position.x = -0.25;
pi2.position.y = 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), new THREE.CircleGeometry(4.6, 50, PIP*2, PIP*1),
cmat cmat
)); ));
pi3.position.x = -0.25; pi3.position.x = -0.25;
pi3.position.y = -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), new THREE.CircleGeometry(4.6, 50, PIP*3, PIP*1),
cmat cmat
)); ));
pi4.position.x = 0.25; pi4.position.x = 0.25;
pi4.position.y = -0.25; pi4.position.y = -0.25;
gridOrigin.add(new THREE.Mesh( group.add(new THREE.Mesh(
new THREE.RingGeometry(5, 5.5, 50), new THREE.RingGeometry(5, 5.5, 50),
rmat rmat
)); ));
gridOrigin.add(new THREE.Mesh( group.add(new THREE.Mesh(
new THREE.PlaneGeometry(0.5, 10), new THREE.PlaneGeometry(0.5, 10),
rmat rmat
)); ));
gridOrigin.add(new THREE.Mesh( group.add(new THREE.Mesh(
new THREE.PlaneGeometry(10, 0.5), new THREE.PlaneGeometry(10, 0.5),
rmat rmat
)); ));
gridOrigin.rotation.x = -PI2; group.rotation.x = -PI2;
gridOrigin.position.x = x; group.position.x = x;
gridOrigin.position.y = z; group.position.y = z;
gridOrigin.position.z = y; group.position.z = y;
Space.scene.add(gridOrigin); Space.scene.add(group);
Space.update();
} }
function refresh() { function refresh() {
@ -565,7 +571,6 @@ let gs_moto_space = exports;
size: function() { return platform.scale }, size: function() { return platform.scale },
isVisible: function() { return platform.visible }, isVisible: function() { return platform.visible },
showGrid: function(b) { gridView.visible = b }, showGrid: function(b) { gridView.visible = b },
setRound: function(bool) { 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}) }, 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}) }, 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}) }, 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() }, reset: function() { viewControl.reset(); requestRefresh() },
load: function(cam) { viewControl.setPosition(cam) }, 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: { mouse: {