mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-04-18 14:32:49 +08:00
..
This commit is contained in:
parent
389a75ccae
commit
0a49718194
@ -394,11 +394,13 @@ def fill_holes_fn(vertices, faces, max_hole_perimeter=3e-2):
|
|||||||
visited_edges = set()
|
visited_edges = set()
|
||||||
processed_nodes = set()
|
processed_nodes = set()
|
||||||
for start_node in list(adj.keys()):
|
for start_node in list(adj.keys()):
|
||||||
if start_node in processed_nodes: continue
|
if start_node in processed_nodes:
|
||||||
|
continue
|
||||||
current_loop, curr = [], start_node
|
current_loop, curr = [], start_node
|
||||||
while curr in adj:
|
while curr in adj:
|
||||||
next_node = adj[curr]
|
next_node = adj[curr]
|
||||||
if (curr, next_node) in visited_edges: break
|
if (curr, next_node) in visited_edges:
|
||||||
|
break
|
||||||
visited_edges.add((curr, next_node))
|
visited_edges.add((curr, next_node))
|
||||||
processed_nodes.add(curr)
|
processed_nodes.add(curr)
|
||||||
current_loop.append(curr)
|
current_loop.append(curr)
|
||||||
@ -406,10 +408,12 @@ def fill_holes_fn(vertices, faces, max_hole_perimeter=3e-2):
|
|||||||
if curr == start_node:
|
if curr == start_node:
|
||||||
loops.append(current_loop)
|
loops.append(current_loop)
|
||||||
break
|
break
|
||||||
if len(current_loop) > len(edges_np): break
|
if len(current_loop) > len(edges_np):
|
||||||
|
break
|
||||||
|
|
||||||
if not loops:
|
if not loops:
|
||||||
if is_batched: return orig_vertices.unsqueeze(0), orig_faces.unsqueeze(0)
|
if is_batched:
|
||||||
|
return orig_vertices.unsqueeze(0), orig_faces.unsqueeze(0)
|
||||||
return orig_vertices, orig_faces
|
return orig_vertices, orig_faces
|
||||||
|
|
||||||
new_faces = []
|
new_faces = []
|
||||||
@ -417,13 +421,15 @@ def fill_holes_fn(vertices, faces, max_hole_perimeter=3e-2):
|
|||||||
valid_new_verts = []
|
valid_new_verts = []
|
||||||
|
|
||||||
for loop_indices in loops:
|
for loop_indices in loops:
|
||||||
if len(loop_indices) < 3: continue
|
if len(loop_indices) < 3:
|
||||||
|
continue
|
||||||
loop_tensor = torch.tensor(loop_indices, dtype=torch.long, device=device)
|
loop_tensor = torch.tensor(loop_indices, dtype=torch.long, device=device)
|
||||||
loop_verts = vertices[loop_tensor]
|
loop_verts = vertices[loop_tensor]
|
||||||
diffs = loop_verts - torch.roll(loop_verts, shifts=-1, dims=0)
|
diffs = loop_verts - torch.roll(loop_verts, shifts=-1, dims=0)
|
||||||
perimeter = torch.norm(diffs, dim=1).sum()
|
perimeter = torch.norm(diffs, dim=1).sum()
|
||||||
|
|
||||||
if perimeter > max_hole_perimeter: continue
|
if perimeter > max_hole_perimeter:
|
||||||
|
continue
|
||||||
|
|
||||||
center = loop_verts.mean(dim=0)
|
center = loop_verts.mean(dim=0)
|
||||||
valid_new_verts.append(center)
|
valid_new_verts.append(center)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user