Fix a couple of viewer bugs (#430)

This commit is contained in:
Matthew Tancik authored and GitHub committed 2022-09-14 00:00:30 -07:00
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'],