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

debugged logic to make change camera interrupt faster

This commit is contained in:
evonneng 2022-07-07 23:38:42 +00:00
parent 31345faed5
commit b04cbdf380
2 changed files with 11 additions and 14 deletions

View File

@ -198,7 +198,6 @@ class Graph(AbstractGraph):
self.vis_outputs = outputs
return outputs
except CameraChangeException:
print(traceback.format_exc())
return None
def get_outputs_for_camera(self, camera: Camera):

View File

@ -72,7 +72,6 @@ class VisualizerState:
# visualizer specific variables
self.prev_camera_matrix = None
self.res_upscale_factor = 1
self.lock = threading.Lock()
self.check_interrupt_vis = False
self.check_done_render = True
@ -89,14 +88,18 @@ class VisualizerState:
def _check_interrupt(self, frame, event, arg):
if event == "line":
if self.check_interrupt_vis and self.res_upscale_factor > 1:
self.res_upscale_factor = 1
raise CameraChangeException
return self._check_interrupt
def _is_render_step(self, step, default_steps=10):
def _is_render_step(self, step, default_steps=5):
"""dynamically calculate when to render grapic based on resolution of image"""
if self.vis and step != 0:
steps_per_render_image = min(default_steps * self.res_upscale_factor, 100)
return step % steps_per_render_image == 0
if self.res_upscale_factor == 1:
return True
else:
steps_per_render_image = min(default_steps * self.res_upscale_factor, 100)
return step % steps_per_render_image == 0
return False
def _draw_scene_in_viewer(self, image_dataset, dataset_inputs):
@ -122,18 +125,14 @@ class VisualizerState:
def _async_check_camera_update(self):
"""Async function to check whether camera has been updated in visualizer"""
with self.lock:
self.check_done_render = False
self.check_done_render = False
while not self.check_done_render:
data = self.vis["/Cameras/Main Camera"].get_object()
if data is None:
return
camera_object = data["object"]["object"]
if self.prev_camera_matrix is None or not np.array_equal(camera_object["matrix"], self.prev_camera_matrix):
with self.lock:
self.check_interrupt_vis = True
self.prev_camera_matrix = camera_object["matrix"]
self.res_upscale_factor = 1
self.check_interrupt_vis = True
time.sleep(0.001)
@torch.no_grad()
@ -141,9 +140,8 @@ class VisualizerState:
"""async getter function for visualizer without returning"""
with SetTrace(self._check_interrupt):
graph.get_outputs_for_camera_ray_bundle(camera_ray_bundle)
with self.lock:
self.check_done_render = True
self.check_interrupt_vis = False
self.check_done_render = True
self.check_interrupt_vis = False
@profiler.time_function
def _render_image_in_viewer(self, graph):