Load mesh files as o3d meshes. Args: mesh_filenames: list of filenames Returns: list of o3d meshes
(
mesh_filenames: T.Union[str, T.List[str]],
mesh_scale: float = 1.,
printout: bool = True,
)
| 306 | |
| 307 | |
| 308 | def load_mesh_filename( |
| 309 | mesh_filenames: T.Union[str, T.List[str]], |
| 310 | mesh_scale: float = 1., |
| 311 | printout: bool = True, |
| 312 | ) -> T.List[structures.Mesh]: |
| 313 | """ |
| 314 | Load mesh files as o3d meshes. |
| 315 | |
| 316 | Args: |
| 317 | mesh_filenames: |
| 318 | list of filenames |
| 319 | Returns: |
| 320 | list of o3d meshes |
| 321 | """ |
| 322 | |
| 323 | if isinstance(mesh_filenames, str): # str, list, or tuple |
| 324 | mesh_filenames = [mesh_filenames] |
| 325 | |
| 326 | meshes = [] |
| 327 | for i in range(len(mesh_filenames)): |
| 328 | mesh_filename = mesh_filenames[i] |
| 329 | |
| 330 | # In default, clean_mesh is true, note that even bunny should be cleaned to multiply Kd and texture map |
| 331 | if printout: |
| 332 | print(f'Loading {i}/{len(mesh_filenames)} mesh: {mesh_filename}...', flush=True) |
| 333 | |
| 334 | mesh = o3d.io.read_triangle_mesh(mesh_filename, enable_post_processing=True) |
| 335 | # preprocess the mesh after reading mesh, before building mesh dataset |
| 336 | mesh = mesh_utils.preprocess_mesh(mesh, scale=mesh_scale) |
| 337 | |
| 338 | # convert o3d mesh to structures.mesh |
| 339 | mesh = structures.Mesh( |
| 340 | mesh=mesh, |
| 341 | scale=mesh_scale, |
| 342 | ) |
| 343 | meshes.append(mesh) |
| 344 | |
| 345 | return meshes |
| 346 | |
| 347 | |
| 348 | def load_and_mix_mesh_filename( |