(self, width: int, height: int)
| 222 | self._dirty_camera = True |
| 223 | |
| 224 | def init_renderer(self, width: int, height: int): |
| 225 | o3d = _import_open3d() |
| 226 | self.render_width = width |
| 227 | self.render_height = height |
| 228 | self._renderer = o3d.visualization.rendering.OffscreenRenderer(width, height) |
| 229 | |
| 230 | cg = o3d.visualization.rendering.ColorGrading( |
| 231 | o3d.visualization.rendering.ColorGrading.Quality.ULTRA, |
| 232 | o3d.visualization.rendering.ColorGrading.ToneMapping.LINEAR, |
| 233 | ) |
| 234 | self._renderer.scene.view.set_color_grading(cg) |
| 235 | |
| 236 | bg = self.background |
| 237 | self._renderer.scene.set_background(np.array([bg[0], bg[1], bg[2], 1.0])) |
| 238 | |
| 239 | self._mat = o3d.visualization.rendering.MaterialRecord() |
| 240 | self._mat.shader = "defaultUnlit" |
| 241 | self._mat.point_size = self.point_size |
| 242 | self._mat.sRGB_color = True |
| 243 | |
| 244 | self._pcd = o3d.geometry.PointCloud() |
| 245 | self._pcd.points = o3d.utility.Vector3dVector( |
| 246 | np.zeros((1, 3), dtype=np.float64) |
| 247 | ) |
| 248 | self._pcd.colors = o3d.utility.Vector3dVector( |
| 249 | np.zeros((1, 3), dtype=np.float64) |
| 250 | ) |
| 251 | self._renderer.scene.add_geometry("pcd", self._pcd, self._mat) |
| 252 | |
| 253 | def update_geometry(self): |
| 254 | """Rebuild point cloud geometry using octree LOD selection.""" |
no test coverage detected