From 9625ab713cfdcd48409fcaf598325b3874df34da Mon Sep 17 00:00:00 2001 From: Zhensheng Yuan <564361+yzslab@users.noreply.github.com> Date: Fri, 8 Sep 2023 08:31:02 +0800 Subject: [PATCH] Fix the problem that camera will be freezed when moving forward (#2404) * fix camera freezed when moving forward * simplify code --------- Co-authored-by: Matthew Tancik --- .../viewer/app/src/modules/Scene/Scene.jsx | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/nerfstudio/viewer/app/src/modules/Scene/Scene.jsx b/nerfstudio/viewer/app/src/modules/Scene/Scene.jsx index d2dbc15de..fc82aaf29 100644 --- a/nerfstudio/viewer/app/src/modules/Scene/Scene.jsx +++ b/nerfstudio/viewer/app/src/modules/Scene/Scene.jsx @@ -133,6 +133,21 @@ export function get_scene_tree() { } } + function translateForward(distance) { + const to = camera_controls.getTarget().add( + camera_controls.getTarget() + .sub(camera_controls.getPosition()) + .normalize() + .multiplyScalar(distance) + ); + camera_controls.moveTo( + to.x, + to.y, + to.z, + {enableTransition:true} + ) + } + function translate() { if (keyMap.KeyD === true) { camera_controls.truck(moveSpeed, 0, {enableTransition:true}); @@ -141,22 +156,10 @@ export function get_scene_tree() { camera_controls.truck(-moveSpeed, 0, {enableTransition:true}); } if (keyMap.KeyW === true) { - const curPos = camera_controls.getPosition(); - const newTar = camera_controls.getTarget(); - const newDiff = newTar - .sub(curPos) - .normalize() - .multiplyScalar(curPos.length()); - camera_controls.setTarget( - curPos.x + newDiff.x, - curPos.y + newDiff.y, - curPos.z + newDiff.z, - {enableTransition:true} - ); - camera_controls.dolly(moveSpeed, {enableTransition:true}); + translateForward(moveSpeed); } if (keyMap.KeyS === true) { - camera_controls.dolly(-moveSpeed, {enableTransition:true}); + translateForward(-moveSpeed); } if (keyMap.KeyQ === true) { camera_controls.truck(0, moveSpeed, {enableTransition:true});