4
0
mirror of https://github.com/nerfstudio-project/nerfstudio.git synced 2026-11-11 02:24:38 +08:00

Added up vector offset (#749)

* Added up vector offset

* Reset position when press space
This commit is contained in:
Abhik Ahuja 2022-10-10 14:18:24 -07:00 committed by GitHub
parent 0506de65cd
commit cb2107db02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 3 deletions

View File

@ -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);
}
});

View File

@ -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 (
<div className="CameraPanel">
<div className="CameraPanel-top-button">
<Button size="small" variant="outlined" onClick={setUp}>
Reset Up Direction
</Button>
</div>
<div>
<div className="CameraPanel-top-button">
<Button size="small" variant="outlined" onClick={add_camera}>
@ -624,7 +652,9 @@ export default function CameraPanel(props) {
<Button
size="small"
variant="outlined"
onClick={() => set_slider_value(Math.max(0.0, slider_value - step_size))}
onClick={() =>
set_slider_value(Math.max(0.0, slider_value - step_size))
}
>
<ArrowBackIosNewIcon />
</Button>
@ -665,7 +695,9 @@ export default function CameraPanel(props) {
<Button
size="small"
variant="outlined"
onClick={() => set_slider_value(Math.min(slider_max, slider_value + step_size))}
onClick={() =>
set_slider_value(Math.min(slider_max, slider_value + step_size))
}
>
<ArrowForwardIosIcon />
</Button>