From a80a8a868c2d794f92e45e4afaae2641df12aef4 Mon Sep 17 00:00:00 2001 From: Hunor Laczko Date: Fri, 30 Sep 2022 21:57:07 +0000 Subject: [PATCH] mu2v skirt trial, unsuccessful --- custom_utils/m2uv_skirt.py | 140 +++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 custom_utils/m2uv_skirt.py diff --git a/custom_utils/m2uv_skirt.py b/custom_utils/m2uv_skirt.py new file mode 100644 index 0000000..1264b1c --- /dev/null +++ b/custom_utils/m2uv_skirt.py @@ -0,0 +1,140 @@ +import os +from socket import close +import sys +import tqdm +import math +import time +import random +import shutil +import collections +import argparse +import threading +import numpy as np +import scipy as sp +import trimesh as tm +import cmapy as cm +import cv2 +import plotly.express as ex +import plotly.graph_objects as go + + +def m2uv_array(m2uv): + result = np.zeros((14475, 2), dtype=np.int32) + for k, v in m2uv.items(): + if len(v) == 2: + result[k] = list(v) + elif len(v) == 1: + x = v.pop() + result[k] = [x, x] + else: + assert False + + return result + + +if __name__ == '__main__': + F = np.load("custom_utils/smpl_faces.npy") + uv_map = np.load('custom_utils/stretched_uv_map_3.npy') + m2uv = np.load('custom_utils/m2uv.npy', allow_pickle=True).item() + uv_mask = np.load('custom_utils/mask_256x512.npy') + + left = [10602, 14090, 10601, 14299, 10623, 14102, 8739, 13152, 8738, 14292, 10737, 14244, 10738, 14288, 10736, 14243, 8728, 13149, 8730, 13982, 10419, 14241, 8721, 13147, 8723, 14239, 8717, 13145, 8716, 14237, 8711, 13143, 8710, 14235, 10734, 14283, 10729, 14226, 10381, 13948, 10383, 14225, 10725, 14222, 8620, 13107, 8622, 14305, 10761, 14293, 10732, 14233, 10720, 14214, 10721, 14217, 7114] + right = list(reversed([12418, 7113, 12415, 7112, 12434, 7125, 12494, 7155, 12506, 4964, 11308, 4963, 12423, 7118, 12426, 6752, 12149, 6751, 12427, 7122, 12484, 7127, 12436, 5054, 11344, 5056, 12438, 5060, 11346, 5062, 12440, 5067, 11348, 5066, 12442, 6788, 12183, 5074, 11350, 5072, 12444, 7129, 12489, 7131, 12445, 7130, 12493, 5082, 11353, 5084, 12303, 7009, 12500, 6987, 12291, 6989])) + corners = np.array([[0,0],[0,1],[2,0],[2,1]]) + + # left_orig = [] + # for l in left: + # left_orig.append(list(m2uv[l])[0]) + # left_orig.append(list(m2uv[l])[1]) + # ex.scatter(x=np.concatenate((uv_map[left_orig, 0], corners[:,0]), axis=-1), y=np.concatenate((uv_map[left_orig, 1], corners[:,1]), axis=-1)).show() + + + # left_1 = [[0,0],[0,1],[2,0],[2,1]] + # right_1 = [[0,0],[0,1],[2,0],[2,1]] + # left_2 = [[0,0],[0,1],[2,0],[2,1]] + # right_2 = [[0,0],[0,1],[2,0],[2,1]] + left_1 = [] + right_1 = [] + left_2 = [] + right_2 = [] + for l in left: + print(list(m2uv[l])[0]) + if uv_map[list(m2uv[l])[0], 0] < 1: + left_1.append(list(m2uv[l])[0]) + else: + left_2.append(list(m2uv[l])[0]) + if uv_map[list(m2uv[l])[1], 0] < 1: + left_1.append(list(m2uv[l])[1]) + else: + left_2.append(list(m2uv[l])[1]) + left_1 = np.array(left_1)[:56] + left_2 = np.array(left_2)[:56] + + # ex.scatter(x=uv_map[:, 0], y=uv_map[:, 1]).show() + + for r in right: + print(list(m2uv[r])[0]) + if uv_map[list(m2uv[r])[0], 0] < 1: + right_1.append(list(m2uv[r])[0]) + else: + right_2.append(list(m2uv[r])[0]) + if uv_map[list(m2uv[r])[1], 0] < 1: + right_1.append(list(m2uv[r])[1]) + else: + right_2.append(list(m2uv[r])[1]) + right_1 = np.array(right_1) + right_2 = np.array(right_2) + + c = np.ones((60, 3), dtype=np.int32) * 50 + c[5, :] = 200 + # ex.scatter(x=np.concatenate((uv_map[left_1, 0], corners[:,0]), axis=-1), y=np.concatenate((uv_map[left_1, 1], corners[:,1]), axis=-1), color=c[:,0]).show() + # ex.scatter(x=np.concatenate((uv_map[right_1, 0], corners[:,0]), axis=-1), y=np.concatenate((uv_map[right_1, 1], corners[:,1]), axis=-1), color=c[:,0]).show() + # # ex.scatter(x=uv_map[right_1, 0], y=uv_map[right_1, 1], color=c[:,0]).show() + + # ex.scatter(x=np.concatenate((uv_map[left_2, 0], corners[:,0]), axis=-1), y=np.concatenate((uv_map[left_2, 1], corners[:,1]), axis=-1), color=c[:,0]).show() + # ex.scatter(x=np.concatenate((uv_map[right_2, 0], corners[:,0]), axis=-1), y=np.concatenate((uv_map[right_2, 1], corners[:,1]), axis=-1), color=c[:,0]).show() + # # ex.scatter(x=uv_map[left_2, 0], y=uv_map[left_2, 1]).show() + # # ex.scatter(x=uv_map[right_2, 0], y=uv_map[right_2, 1]).show() + + # new_pairs_1 = np.concatenate((left_1, right_1), axis=-1) + # new_pairs_2 = np.concatenate((left_2, right_2), axis=-1) + + # ex.scatter(x=uv_map[new_pairs_1, 0], y=uv_map[new_pairs_1, 1]).show() + # ex.scatter(x=uv_map[new_pairs_2, 0], y=uv_map[new_pairs_2, 1]).show() + + + for i, l in enumerate(left[:56]): + m2uv[l] = {left_2[i], right_2[i]} + for i, r in enumerate(right): + m2uv[r] = {left_1[i], right_1[i]} + + m2uv[left[-1]] = {7131} #7133 + + p = uv_map[7133, :] + closest = None + min_dist = 10000 + for i in range(uv_map.shape[0]): + dist = np.sqrt((p[0] - uv_map[i, 0])**2 + (p[1] - uv_map[i, 1])) + if dist < min_dist and i != 7133: + min_dist = dist + closest = i + + mesh_coord = None + for key in m2uv.keys(): + if len(list(m2uv[key])) == 2: + continue + if list(m2uv[key])[0] == closest: + mesh_coord = key + + assert m2uv[mesh_coord] == { closest } + + m2uv[mesh_coord] = { closest, 7133 } + + np.save('custom_utils/m2uv_skirt.npy', m2uv) + + # m2uv = m2uv_array(m2uv) + # uv_counter = np.zeros((uv_map.shape[0])) + # uv_counter[m2uv[:, 0]] = 1 + # uv_counter[m2uv[:, 1]] += 1 + + print() \ No newline at end of file