diff --git a/app/src/components/Views/Model.svelte b/app/src/components/Views/Model.svelte index cb43d6f..74e9187 100644 --- a/app/src/components/Views/Model.svelte +++ b/app/src/components/Views/Model.svelte @@ -27,7 +27,8 @@ let settings = { 'Trace feet':true, - 'Trace points': 30 + 'Trace points': 30, + 'Fix camera on robot': true } onMount(async () => { @@ -48,6 +49,7 @@ const visibility = panel.addFolder('Visualization'); visibility.add(settings, 'Trace feet') visibility.add(settings, 'Trace points', 1, 1000, 1) + visibility.add(settings, 'Fix camera on robot') } const cacheModelFiles = async () => { @@ -142,6 +144,10 @@ renderTraceLines(toes) + if (settings['Fix camera on robot']) { + sceneManager.controls.target = robot.position.clone() + } + robot.position.y = robot.position.y - Math.min(...toes.map(toe => toe.y)); robot.rotation.z = lerp(robot.rotation.z, degToRad($mpu.heading + 90), 0.1); modelTargetAngles = $servoAngles; diff --git a/app/src/lib/sceneBuilder.ts b/app/src/lib/sceneBuilder.ts index 8e1ee51..7e48d7b 100644 --- a/app/src/lib/sceneBuilder.ts +++ b/app/src/lib/sceneBuilder.ts @@ -197,6 +197,7 @@ export default class SceneBuilder { public startRenderLoop = () => { this.renderer.setAnimationLoop(() => { + this.controls.update(); this.renderer.render(this.scene, this.camera); this.handleRobotShadow(); if (this.callback) this.callback();