mirror of
https://github.com/nerfstudio-project/nerfstudio.git
synced 2026-11-13 11:24:00 +08:00
Fix a couple of viewer bugs (#430)
This commit is contained in:
1 parent
1d7051e4fe
commit
cdb68aef60
3 files changed
+22
-6
No files matched your search
@@ -31,18 +31,16 @@ export function get_scene_tree() {
|
||||
main_camera.up = new THREE.Vector3(0, 0, 1);
|
||||
sceneTree.set_object_from_path(['Cameras', 'Main Camera'], main_camera);
|
||||
|
||||
sceneTree.set_object_from_path(
|
||||
['Cameras', 'Main Camera', 'Helper'],
|
||||
new CameraHelper(main_camera),
|
||||
);
|
||||
sceneTree.metadata.camera = main_camera;
|
||||
|
||||
// Render camera
|
||||
const render_camera = main_camera.clone();
|
||||
const render_camera_helper = new CameraHelper(render_camera, '#4eb570');
|
||||
render_camera_helper.set_visibility(false);
|
||||
sceneTree.set_object_from_path(['Cameras', 'Render Camera'], render_camera);
|
||||
sceneTree.set_object_from_path(
|
||||
['Cameras', 'Render Camera', 'Helper'],
|
||||
new CameraHelper(render_camera),
|
||||
render_camera_helper,
|
||||
);
|
||||
|
||||
// Renderer
|
||||
|
||||
@@ -31,6 +31,7 @@ class CameraHelper extends THREE.Mesh {
|
||||
const material = new MeshLineMaterial({
|
||||
color,
|
||||
lineWidth: 0.01,
|
||||
sizeAttenuation: false,
|
||||
});
|
||||
|
||||
const vertices = [];
|
||||
@@ -96,6 +97,12 @@ class CameraHelper extends THREE.Mesh {
|
||||
}
|
||||
|
||||
update() {
|
||||
if (!this.visible) {
|
||||
const camera_vis = new MeshLine();
|
||||
this.geometry = camera_vis.geometry;
|
||||
return;
|
||||
}
|
||||
|
||||
const geometry = this.line_geometry;
|
||||
const pointMap = this.pointMap;
|
||||
|
||||
@@ -128,6 +135,11 @@ class CameraHelper extends THREE.Mesh {
|
||||
this.geometry = camera_vis.geometry;
|
||||
}
|
||||
|
||||
set_visibility(visible) {
|
||||
this.visible = visible;
|
||||
this.update();
|
||||
}
|
||||
|
||||
dispose() {
|
||||
this.geometry.dispose();
|
||||
this.material.dispose();
|
||||
|
||||
@@ -81,6 +81,11 @@ export default function CameraPanel(props) {
|
||||
const sceneTree = props.sceneTree;
|
||||
const camera_main = sceneTree.find_object(['Cameras', 'Main Camera']);
|
||||
const camera_render = sceneTree.find_object(['Cameras', 'Render Camera']);
|
||||
const camera_render_helper = sceneTree.find_object([
|
||||
'Cameras',
|
||||
'Render Camera',
|
||||
'Helper',
|
||||
]);
|
||||
const transform_controls = sceneTree.find_object(['Transform Controls']);
|
||||
|
||||
// redux store state
|
||||
@@ -141,6 +146,7 @@ export default function CameraPanel(props) {
|
||||
const new_camera_list = cameras.concat(camera_main_copy);
|
||||
setCameras(new_camera_list);
|
||||
set_camera_position(camera_render, camera_main_copy.matrix);
|
||||
camera_render_helper.set_visibility(true);
|
||||
};
|
||||
|
||||
// force a rerender if the cameras are dragged around
|
||||
@@ -170,7 +176,7 @@ export default function CameraPanel(props) {
|
||||
for (let i = 0; i < cameras.length; i += 1) {
|
||||
const camera = cameras[i];
|
||||
// camera.aspect = render_width / render_height;
|
||||
const camera_helper = new CameraHelper(camera, 0xfc0303);
|
||||
const camera_helper = new CameraHelper(camera, 0x393e46);
|
||||
// camera
|
||||
sceneTree.set_object_from_path(
|
||||
['Camera Path', 'Cameras', i.toString(), 'Camera'],
|
||||
|
||||
Reference in new issue
Block a user