MCPcopy Create free account
hub / github.com/thygate/stable-diffusion-webui-depthmap-script / plan_path_e2e

Function plan_path_e2e

inpaint/utils.py:341–436  ·  view source on GitHub ↗
(mesh, cc, end_pts, global_mesh, input_edge, mask, valid_map, inpaint_id, npath_map=None, fpath_map=None)

Source from the content-addressed store, hash-verified

339 return fpath_map, npath_map, False, npaths, fpaths, invalid_edge_ids
340
341def plan_path_e2e(mesh, cc, end_pts, global_mesh, input_edge, mask, valid_map, inpaint_id, npath_map=None, fpath_map=None):
342 my_npath_map = np.zeros_like(input_edge) - 1
343 my_fpath_map = np.zeros_like(input_edge) - 1
344 sub_mesh = mesh.subgraph(list(cc)).copy()
345 ends_1, ends_2 = end_pts[0], end_pts[1]
346 edge_id = global_mesh.nodes[ends_1]['edge_id']
347 npath = [*netx.shortest_path(sub_mesh, (ends_1[0], ends_1[1]), (ends_2[0], ends_2[1]), weight='length')]
348 for np_node in npath:
349 my_npath_map[np_node[0], np_node[1]] = edge_id
350 fpath = []
351 if global_mesh.nodes[ends_1].get('far') is None:
352 print("None far")
353 else:
354 fnodes = global_mesh.nodes[ends_1].get('far')
355 dmask = mask + 0
356 while True:
357 dmask = cv2.dilate(dmask, np.ones((3, 3)), iterations=1)
358 ffnode = [fnode for fnode in fnodes if (dmask[fnode[0], fnode[1]] > 0 and mask[fnode[0], fnode[1]] == 0 and\
359 global_mesh.nodes[fnode].get('inpaint_id') != inpaint_id + 1)]
360 if len(ffnode) > 0:
361 fnode = ffnode[0]
362 break
363 e_fnodes = global_mesh.nodes[ends_2].get('far')
364 dmask = mask + 0
365 while True:
366 dmask = cv2.dilate(dmask, np.ones((3, 3)), iterations=1)
367 e_ffnode = [e_fnode for e_fnode in e_fnodes if (dmask[e_fnode[0], e_fnode[1]] > 0 and mask[e_fnode[0], e_fnode[1]] == 0 and\
368 global_mesh.nodes[e_fnode].get('inpaint_id') != inpaint_id + 1)]
369 if len(e_ffnode) > 0:
370 e_fnode = e_ffnode[0]
371 break
372 fpath.append((fnode[0], fnode[1]))
373 if len(e_ffnode) == 0 or len(ffnode) == 0:
374 return my_npath_map, my_fpath_map, [], []
375 barrel_dir = np.array([[1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0], [-1, -1], [0, -1], [1, -1]])
376 n2f_dir = (int(fnode[0] - npath[0][0]), int(fnode[1] - npath[0][1]))
377 while True:
378 if barrel_dir[0, 0] == n2f_dir[0] and barrel_dir[0, 1] == n2f_dir[1]:
379 n2f_barrel = barrel_dir.copy()
380 break
381 barrel_dir = np.roll(barrel_dir, 1, axis=0)
382 for step in range(0, len(npath)):
383 if step == 0:
384 continue
385 elif step == 1:
386 next_dir = (npath[step][0] - npath[step - 1][0], npath[step][1] - npath[step - 1][1])
387 while True:
388 if barrel_dir[0, 0] == next_dir[0] and barrel_dir[0, 1] == next_dir[1]:
389 next_barrel = barrel_dir.copy()
390 break
391 barrel_dir = np.roll(barrel_dir, 1, axis=0)
392 barrel_pair = np.stack((n2f_barrel, next_barrel), axis=0)
393 n2f_dir = (barrel_pair[0, 0, 0], barrel_pair[0, 0, 1])
394 elif step > 1:
395 next_dir = (npath[step][0] - npath[step - 1][0], npath[step][1] - npath[step - 1][1])
396 while True:
397 if barrel_pair[1, 0, 0] == next_dir[0] and barrel_pair[1, 0, 1] == next_dir[1]:
398 next_barrel = barrel_pair.copy()

Callers 1

clean_far_edge_newFunction · 0.85

Calls 2

getMethod · 0.80
appendMethod · 0.80

Tested by

no test coverage detected