| 4 | |
| 5 | |
| 6 | class VisOpen3D: |
| 7 | |
| 8 | def __init__(self, width=640, height=480, visible=True): |
| 9 | self.__vis = open3d.visualization.Visualizer() |
| 10 | self.__vis.create_window(width=width, height=height, visible=visible) |
| 11 | self.__width = width |
| 12 | self.__height = height |
| 13 | |
| 14 | if visible: |
| 15 | self.poll_events() |
| 16 | self.update_renderer() |
| 17 | |
| 18 | def __del__(self): |
| 19 | self.__vis.destroy_window() |
| 20 | |
| 21 | def render(self): |
| 22 | self.__vis.poll_events() |
| 23 | self.__vis.update_renderer() |
| 24 | self.__vis.run() |
| 25 | |
| 26 | def poll_events(self): |
| 27 | self.__vis.poll_events() |
| 28 | |
| 29 | def update_renderer(self): |
| 30 | self.__vis.update_renderer() |
| 31 | |
| 32 | def run(self): |
| 33 | self.__vis.run() |
| 34 | |
| 35 | def destroy_window(self): |
| 36 | self.__vis.destroy_window() |
| 37 | |
| 38 | def add_geometry(self, data): #ply |
| 39 | self.__vis.add_geometry(data) |
| 40 | |
| 41 | def remove_geometry(self, data): #ply |
| 42 | self.__vis.remove_geometry(data) |
| 43 | |
| 44 | def update_view_point(self, intrinsic, extrinsic): |
| 45 | ctr = self.__vis.get_view_control() |
| 46 | param = self.convert_to_open3d_param(intrinsic, extrinsic) |
| 47 | ctr.convert_from_pinhole_camera_parameters(param, allow_arbitrary=True) |
| 48 | self.__vis.update_renderer() |
| 49 | |
| 50 | def get_view_point_intrinsics(self): |
| 51 | ctr = self.__vis.get_view_control() |
| 52 | param = ctr.convert_to_pinhole_camera_parameters() |
| 53 | intrinsic = param.intrinsic.intrinsic_matrix |
| 54 | return intrinsic |
| 55 | |
| 56 | def get_view_point_extrinsics(self): |
| 57 | ctr = self.__vis.get_view_control() |
| 58 | param = ctr.convert_to_pinhole_camera_parameters() |
| 59 | extrinsic = param.extrinsic |
| 60 | return extrinsic |
| 61 | |
| 62 | def get_view_control(self): |
| 63 | return self.__vis.get_view_control() |