diff --git a/scripts/verify-thermal.js b/scripts/verify-thermal.js index 59a3464..78c2c21 100644 --- a/scripts/verify-thermal.js +++ b/scripts/verify-thermal.js @@ -48,7 +48,7 @@ try { const after = await pixels(); report.changedPixels = after.filter((v, i) => v !== before[i]).length; assert.ok(report.changedPixels > 50); - assert.notEqual((await signal()).fanAngle, start.fanAngle); + assert.equal((await signal()).fanAngle, start.fanAngle); assert.deepEqual((await signal()).cameraPosition, start.cameraPosition); assert.deepEqual((await signal()).cameraQuaternion, start.cameraQuaternion); const sceneBounds = await page.locator('#scene').boundingBox(); @@ -56,12 +56,13 @@ try { await page.mouse.down(); await page.mouse.move(sceneBounds.x + sceneBounds.width / 2 + 100, sceneBounds.y + sceneBounds.height / 2 + 60, { steps: 12 }); await page.mouse.up(); - await page.mouse.wheel(0, 300); await page.waitForTimeout(500); - assert.deepEqual((await signal()).cameraPosition, start.cameraPosition); - assert.deepEqual((await signal()).cameraQuaternion, start.cameraQuaternion); + assert.notDeepEqual((await signal()).cameraPosition, start.cameraPosition); + assert.notDeepEqual((await signal()).cameraQuaternion, start.cameraQuaternion); + assert.equal((await signal()).fanAngle, start.fanAngle); assert.ok((await signal()).travel > start.travel); - report.fixedSectionCamera = true; + report.fixedComponentRotation = true; + report.interactiveCamera = true; await page.screenshot({ path: "artifacts/thermal-animation.png" }); await page.locator("#fan-target").fill("0"); await page.waitForTimeout(300); diff --git a/src/views/Monitor/Scene.js b/src/views/Monitor/Scene.js index 8dfef23..f25194e 100644 --- a/src/views/Monitor/Scene.js +++ b/src/views/Monitor/Scene.js @@ -169,11 +169,6 @@ export class MonitorScene extends PrintScene { } setTechnology(mode) { - this.controls.autoRotate = false; - this.controls.enableDamping = false; - this.controls.update(); - this.controls.enableDamping = true; - this.controls.enabled = mode !== 'thermal'; this.mode = mode; this.releaseGroup.visible = mode === "nozzle"; this.nozzleScene.overlay.hidden = mode !== "nozzle"; @@ -183,11 +178,11 @@ export class MonitorScene extends PrintScene { if (mode === "nozzle") { this.nozzleScene.focus(); } else if (mode === "thermal") { - const direction = new THREE.Vector3(0, 28, 125); + const direction = new THREE.Vector3(25, 55, 125); direction.multiplyScalar(1 / Math.min(1, this.camera.aspect)); if (this.camera.aspect < 1) direction.multiplyScalar(1.25); + this.camera.position.copy(direction); this.controls.target.set(-9, 27, 0); - this.camera.position.copy(this.controls.target).add(direction); this.controls.update(); } else this.setView("perspective"); } @@ -201,6 +196,7 @@ export class MonitorScene extends PrintScene { this.workflow.group.visible = false; this.thermalScene.update(options.thermalSignal); this.controls.autoRotate = false; + this.controls.update(); this.renderer.render(this.scene, this.camera); return; } diff --git a/src/views/Monitor/ThermalScene.js b/src/views/Monitor/ThermalScene.js index 28c65eb..f110609 100644 --- a/src/views/Monitor/ThermalScene.js +++ b/src/views/Monitor/ThermalScene.js @@ -182,7 +182,6 @@ export class ThermalScene { if (!signal.paused) { this.time += delta; this.travel += (delta * 14 * signal.feed) / 100; - this.fan.rotation.z -= (delta * 16 * signal.fan) / 100; } const hot = THREE.MathUtils.clamp((signal.nozzle - 25) / 240, 0, 1); this.heater.material.color.setRGB(