diff --git a/nerfstudio/viewer/app/src/modules/Scene/Scene.jsx b/nerfstudio/viewer/app/src/modules/Scene/Scene.jsx index 4ab87fd45..c968f3949 100644 --- a/nerfstudio/viewer/app/src/modules/Scene/Scene.jsx +++ b/nerfstudio/viewer/app/src/modules/Scene/Scene.jsx @@ -122,7 +122,7 @@ export function get_scene_tree() { window.addEventListener('keydown', (event) => { if (event.code === 'Space') { - camera_controls.setTarget(0, 0, 0); + camera_controls.setLookAt(0.7, -0.7, 0.3, 0, 0, 0); } }); diff --git a/nerfstudio/viewer/app/src/modules/SidePanel/CameraPanel/CameraPanel.jsx b/nerfstudio/viewer/app/src/modules/SidePanel/CameraPanel/CameraPanel.jsx index 836cd8248..948e166f4 100644 --- a/nerfstudio/viewer/app/src/modules/SidePanel/CameraPanel/CameraPanel.jsx +++ b/nerfstudio/viewer/app/src/modules/SidePanel/CameraPanel/CameraPanel.jsx @@ -497,8 +497,36 @@ export default function CameraPanel(props) { }); }; + const setUp = () => { + const rot = camera_main.rotation; + const unitY = new THREE.Vector3(0, 1, 0); + const upVec = unitY.applyEuler(rot); + + const grid = sceneTree.find_object_no_create(['Grid']); + grid.setRotationFromEuler(rot); + + const pos = new THREE.Vector3(); + camera_main.getWorldPosition(pos); + camera_main.up.set(upVec.x, upVec.y, upVec.z); + sceneTree.metadata.camera_controls.updateCameraUp(); + sceneTree.metadata.camera_controls.setLookAt(pos.x, pos.y, pos.z, 0, 0, 0); + const points = [new THREE.Vector3(0, 0, 0), upVec.multiplyScalar(2)]; + const geometry = new THREE.BufferGeometry().setFromPoints(points); + const material = new THREE.LineBasicMaterial({ + color: 0xaa46fc, + linewidth: 1, + }); + const line = new THREE.LineSegments(geometry, material); + sceneTree.set_object_from_path(['Viewer Up Vector'], line); + }; + return (
+
+ +
@@ -665,7 +695,9 @@ export default function CameraPanel(props) {