MCPcopy Create free account
hub / github.com/Robotics-STAR-Lab/H2-Mapping / marching_cubes

Method marching_cubes

mapping/src/utils/mesh_util.py:145–172  ·  view source on GitHub ↗
(self, voxels, sdf)

Source from the content-addressed store, hash-verified

143
144 @torch.no_grad()
145 def marching_cubes(self, voxels, sdf):
146 voxels = voxels[:, :3] # (num_voxels,3)
147 sdf = sdf[..., 0] # extract sdf
148 res = 1.0 / (sdf.shape[1] - 1) # 1/(8-1)
149 spacing = [res, res, res]
150
151 num_verts = 0
152 total_verts = []
153 total_faces = []
154 for i in range(len(voxels)):
155 sdf_volume = sdf[i].detach().cpu().numpy() # (res,res,res)
156 if np.min(sdf_volume) > 0 or np.max(sdf_volume) < 0:
157 continue
158 try:
159 verts, faces, _, _ = marching_cubes(sdf_volume, 0, spacing=spacing)
160 except:
161 continue
162 verts -= 0.5
163 verts *= self.voxel_size
164 verts += voxels[i].detach().cpu().numpy()
165 faces += num_verts
166 num_verts += verts.shape[0]
167
168 total_verts += [verts]
169 total_faces += [faces]
170 total_verts = np.concatenate(total_verts)
171 total_faces = np.concatenate(total_faces)
172 return total_verts, total_faces

Callers 1

create_meshMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected