(vertices, faces, detail="normal")
| 50 | |
| 51 | |
| 52 | def old_fix_mesh(vertices, faces, detail="normal"): |
| 53 | bbox_min = np.amin(vertices, axis=0) |
| 54 | bbox_max = np.amax(vertices, axis=0) |
| 55 | diag_len = norm(bbox_max - bbox_min) |
| 56 | if detail == "normal": |
| 57 | target_len = diag_len * 5e-3 |
| 58 | elif detail == "high": |
| 59 | target_len = diag_len * 2.5e-3 |
| 60 | elif detail == "low": |
| 61 | target_len = diag_len * 1e-2 |
| 62 | print("Target resolution: {} mm".format(target_len)) |
| 63 | |
| 64 | count = 0 |
| 65 | vertices, faces = pymesh.split_long_edges(vertices, faces, target_len) |
| 66 | num_vertices = len(vertices) |
| 67 | while True: |
| 68 | vertices, faces = pymesh.collapse_short_edges(vertices, faces, 1e-6) |
| 69 | vertices, faces = pymesh.collapse_short_edges(vertices, faces, |
| 70 | target_len, preserve_feature=True) |
| 71 | vertices, faces = pymesh.remove_obtuse_triangles(vertices, faces, 150.0, 100) |
| 72 | if num_vertices == len(vertices): |
| 73 | break |
| 74 | num_vertices = len(vertices) |
| 75 | print("#v: {}".format(num_vertices)) |
| 76 | count += 1 |
| 77 | if count > 10: break |
| 78 | |
| 79 | vertices, faces = pymesh.resolve_self_intersection(vertices, faces) |
| 80 | vertices, faces = pymesh.remove_duplicated_faces(vertices, faces) |
| 81 | vertices, faces, _ = pymesh.compute_outer_hull(vertices, faces, False) |
| 82 | vertices, faces = pymesh.remove_duplicated_faces(vertices, faces) |
| 83 | vertices, faces = pymesh.remove_obtuse_triangles(vertices, faces, 179.0, 5) |
| 84 | vertices, faces, voxels = pymesh.remove_isolated_vertices(vertices, faces) |
| 85 | return vertices, faces |
| 86 | |
| 87 | |
| 88 | def parse_args(): |
nothing calls this directly
no test coverage detected