eliphatfs commited on
Commit
b3bdbc8
·
1 Parent(s): 1faee00
Files changed (1) hide show
  1. misc_utils.py +6 -2
misc_utils.py CHANGED
@@ -33,7 +33,11 @@ def model_to_pc(mesh: trimesh.Trimesh, n_sample_points=10000):
33
  rgba = mesh.visual.face_colors[face_idx]
34
  elif isinstance(mesh.visual, trimesh.visual.TextureVisuals):
35
  bc = trimesh.proximity.points_to_barycentric(mesh.triangles[face_idx], pcd)
36
- uv = numpy.einsum('ntc,nt->nc', mesh.visual.uv[mesh.faces[face_idx]], bc)
 
 
 
 
37
  material = mesh.visual.material
38
  if hasattr(material, 'materials'):
39
  if len(material.materials) == 0:
@@ -79,7 +83,7 @@ def trimesh_to_pc(scene_or_mesh):
79
  geometry = geometry.apply_transform(transform)
80
  meshes.append(model_to_pc(geometry, 10000 // len(scene_or_mesh.geometry)))
81
  if not len(meshes):
82
- return None
83
  return numpy.concatenate(meshes)
84
  else:
85
  assert isinstance(scene_or_mesh, trimesh.Trimesh)
 
33
  rgba = mesh.visual.face_colors[face_idx]
34
  elif isinstance(mesh.visual, trimesh.visual.TextureVisuals):
35
  bc = trimesh.proximity.points_to_barycentric(mesh.triangles[face_idx], pcd)
36
+ if mesh.visual.uv is None or len(mesh.visual.uv) < mesh.faces[face_idx].max():
37
+ uv = numpy.zeros([len(bc), 2])
38
+ st.warning("Invalid UV, filling with zeroes")
39
+ else:
40
+ uv = numpy.einsum('ntc,nt->nc', mesh.visual.uv[mesh.faces[face_idx]], bc)
41
  material = mesh.visual.material
42
  if hasattr(material, 'materials'):
43
  if len(material.materials) == 0:
 
83
  geometry = geometry.apply_transform(transform)
84
  meshes.append(model_to_pc(geometry, 10000 // len(scene_or_mesh.geometry)))
85
  if not len(meshes):
86
+ raise ValueError("Unsupported mesh object: no triangles found")
87
  return numpy.concatenate(meshes)
88
  else:
89
  assert isinstance(scene_or_mesh, trimesh.Trimesh)