From 3fd4193676112ac920807ff6bfd2538c13533b9d Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 27 Oct 2022 19:59:43 -0400 Subject: [PATCH] fix progressive rendering for steps less than one path length --- src/kiri-mode/cam/animate2.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/kiri-mode/cam/animate2.js b/src/kiri-mode/cam/animate2.js index e57af9d8..6e18ad49 100644 --- a/src/kiri-mode/cam/animate2.js +++ b/src/kiri-mode/cam/animate2.js @@ -13,9 +13,10 @@ const { CAM } = driver; let meshes = {}, unitScale = 1, progress, + // speedValues = [ 32, 32, 32, 32, 32 ], + speedPauses = [ 0, 0, 0, 0, 0 ], speedValues = [ 1, 2, 4, 8, 32 ], // speedPauses = [ 30, 20, 10, 5, 0 ], - speedPauses = [ 0, 0, 0, 0, 0 ], speedNames = [ "1x", "2x", "4x", "8x", "!!" ], speedMax = speedValues.length - 1, speedIndex = 0, @@ -287,7 +288,7 @@ class Stock { update: this.id, time: sub - start, subs, - subms: (subs / (sub - start)).round(3) + mssub: ((sub - start) / subs).round(3) }); } @@ -344,6 +345,7 @@ kiri.load(() => { let animateClear = false; let animating = false; + let moveDist = 0; let renderDist = 0; let renderDone = false; let renderPause = 10; @@ -385,7 +387,7 @@ kiri.load(() => { stockSlices = []; const { x, y, z } = stock; - const sliceCount = 1; + const sliceCount = 10; const sliceWidth = stock.x / sliceCount; for (let i=0; i { } const dx = np.x - lp.x, dy = np.y - lp.y, dz = np.z - lp.z; const dist = Math.sqrt(dx*dx + dy*dy + dz*dz); - renderDist += dist; + moveDist += dist; // skip moves that are less than grid resolution - if (renderDist < rezstep) { + if (moveDist < rezstep) { renderPath(send); return; } @@ -490,14 +492,16 @@ kiri.load(() => { const md = Math.max(Math.abs(dx), Math.abs(dy), Math.abs(dz)); const st = Math.ceil(md / rezstep); const mx = dx / st, my = dy / st, mz = dz / st; + const sd = Math.sqrt(mx*mx + my*my + mz*mz); const moves = []; for (let i=0, x=lp.x, y=lp.y, z=lp.z; i { slice.subtractTool(toolMesh); } } + renderDist += pos.md; // pause renderer at specified offsets if (renderSpeed && renderDist >= renderSpeed) { renderDist = 0; renderUpdate(send); setTimeout(() => { - renderMoves(id, moves, send, index); + renderMoves(id, moves, send, index + 1); }, renderPause); return; }