MCPcopy Create free account
hub / github.com/TheMariday/marimapper / reload_geometry__

Method reload_geometry__

marimapper/visualize_process.py:97–155  ·  view source on GitHub ↗
(self, leds: list[LED3D], first=False)

Source from the content-addressed store, hash-verified

95 logger.debug("Renderer3D process initialised visualiser")
96
97 def reload_geometry__(self, leds: list[LED3D], first=False):
98
99 logger.debug("Renderer3D process reloading geometry")
100
101 logger.debug(f"Fetched led map with size {len(leds)}")
102 all_views = get_all_views(leds)
103
104 p, l, c = view_to_points_lines_colors(all_views)
105
106 if self.point_cloud is None:
107 self.point_cloud = open3d.geometry.PointCloud()
108 if self.line_set is None:
109 self.line_set = open3d.geometry.LineSet()
110 if self.strip_set is None:
111 self.strip_set = open3d.geometry.LineSet()
112
113 self.line_set.points = open3d.utility.Vector3dVector(p)
114 self.line_set.lines = open3d.utility.Vector2iVector(l)
115 self.line_set.colors = open3d.utility.Vector3dVector(c)
116
117 self.point_cloud.points = open3d.utility.Vector3dVector(
118 np.array([led.point.position for led in leds])
119 )
120 self.point_cloud.normals = open3d.utility.Vector3dVector(
121 np.array([led.point.normal for led in leds]) * 0.2
122 )
123 self.point_cloud.colors = open3d.utility.Vector3dVector(
124 np.array([led.get_color() for led in leds])
125 )
126
127 self.strip_set.points = self.point_cloud.points
128
129 strips = []
130 for led_index, led in enumerate(leds):
131 next_led = get_next(led, leds)
132 if next_led is not None and (next_led.led_id - led.led_id == 1):
133 if get_distance(led, next_led) < 1.50: # + 50%
134 strips.append((led_index, leds.index(next_led)))
135
136 self.strip_set.lines = open3d.utility.Vector2iVector(strips)
137 self.strip_set.colors = open3d.utility.Vector3dVector(
138 [[0.8, 0.8, 0.8] for _ in range(len(self.strip_set.lines))]
139 )
140
141 if first:
142 self._vis.add_geometry(
143 open3d.geometry.TriangleMesh.create_coordinate_frame()
144 )
145 # We only update the bounding box on the point cloud in case
146 # the camera has shot off into the distance
147 self._vis.add_geometry(self.point_cloud, reset_bounding_box=True)
148 self._vis.add_geometry(self.line_set, reset_bounding_box=False)
149 self._vis.add_geometry(self.strip_set, reset_bounding_box=False)
150 else:
151 self._vis.update_geometry(self.point_cloud)
152 self._vis.update_geometry(self.line_set)
153 self._vis.update_geometry(self.strip_set)
154

Callers 1

runMethod · 0.95

Calls 5

get_nextFunction · 0.90
get_distanceFunction · 0.90
get_all_viewsFunction · 0.85
get_colorMethod · 0.80

Tested by

no test coverage detected