This commit is contained in:
2023-02-13 10:03:19 +00:00
parent 11a8c7e63e
commit 19938273c3
3 changed files with 40 additions and 40 deletions
+29 -29
View File
@@ -106,40 +106,40 @@ def generate_curvatures(folder, neighbourhood, frames):
k_neighbors_cache = calculate_dist(folder, neighbourhood, frames)
for frame in tqdm.tqdm(frames):
# for frame in tqdm.tqdm(frames):
id = frame.split('_')[0]
frame_nr = frame.split('_')[1].split('.')[0]
# id = frame.split('_')[0]
# frame_nr = frame.split('_')[1].split('.')[0]
# bodies = readPC2(os.path.join(folder, id, 'Body_posed.pc16'), True)['V']
# offsetss = readPC2(os.path.join(folder, id, garment + '_registered.pc16'), True)['V']
mask = np.load(os.path.join(folder, 'mesh_mask', f'{id}.npy')).astype(bool)
_, faces = _maskFaces(np.zeros((14475,3)), F, mask) #np.load(os.path.join(folder, 'faces', f'{id}.npy'))
v = np.load(os.path.join(folder, 'mesh_posed', f'{id}_{frame_nr}.npz'))['mesh_posed'][mask,:]
# # bodies = readPC2(os.path.join(folder, id, 'Body_posed.pc16'), True)['V']
# # offsetss = readPC2(os.path.join(folder, id, garment + '_registered.pc16'), True)['V']
# mask = np.load(os.path.join(folder, 'mesh_mask', f'{id}.npy')).astype(bool)
# _, faces = _maskFaces(np.zeros((14475,3)), F, mask) #np.load(os.path.join(folder, 'faces', f'{id}.npy'))
# v = np.load(os.path.join(folder, 'mesh_posed', f'{id}_{frame_nr}.npz'))['mesh_posed'][mask,:]
m = tm.Trimesh(v, faces, process=False, validate=False)
# m = tm.Trimesh(v, faces, process=False, validate=False)
outliers = np.array([len(v) for v in m.vertex_neighbors]) == 0
outliers = np.nonzero(outliers)[0]
outliers_n_neighbours = get_closest_n_points(v, outliers, 2)
outliers_faces = np.concatenate((outliers[:, np.newaxis], outliers_n_neighbours), axis=-1)
faces = np.concatenate((faces, outliers_faces), axis=0)
# outliers = np.array([len(v) for v in m.vertex_neighbors]) == 0
# outliers = np.nonzero(outliers)[0]
# outliers_n_neighbours = get_closest_n_points(v, outliers, 2)
# outliers_faces = np.concatenate((outliers[:, np.newaxis], outliers_n_neighbours), axis=-1)
# faces = np.concatenate((faces, outliers_faces), axis=0)
verts = v
# verts = v
m = tm.Trimesh(verts, faces, process=False, validate=False)
export_to_ply(m, temp_file)
# m = tm.Trimesh(verts, faces, process=False, validate=False)
# export_to_ply(m, temp_file)
cloud = PyntCloud.from_file(temp_file)
# cloud = PyntCloud.from_file(temp_file)
k_neighbors = k_neighbors_cache[id] # np.argsort(dist[mask, :][:, mask], axis=-1)[:, :neighbourhood] #cloud.get_neighbors(k=neighbourhood)
ev = cloud.add_scalar_field("eigen_values", k_neighbors=k_neighbors)
cloud.add_scalar_field("curvature", ev=ev)
curvature = np.array(cloud.points["curvature(" + str(neighbourhood+1) + ")"])
out = np.zeros((14475), dtype=np.float32)
out[mask] = curvature
# k_neighbors = k_neighbors_cache[id] # np.argsort(dist[mask, :][:, mask], axis=-1)[:, :neighbourhood] #cloud.get_neighbors(k=neighbourhood)
# ev = cloud.add_scalar_field("eigen_values", k_neighbors=k_neighbors)
# cloud.add_scalar_field("curvature", ev=ev)
# curvature = np.array(cloud.points["curvature(" + str(neighbourhood+1) + ")"])
# out = np.zeros((14475), dtype=np.float32)
# out[mask] = curvature
np.savez_compressed(os.path.join(folder, f'mesh_curvature_raw_{neighbourhood}', f'{id}_{frame_nr}.npz'), mesh_curvature_raw=out)
# np.savez_compressed(os.path.join(folder, f'mesh_curvature_raw_{neighbourhood}', f'{id}_{frame_nr}.npz'), mesh_curvature_raw=out)
return None
@@ -285,12 +285,12 @@ if __name__ == '__main__':
# lines = [line.strip() for line in lines]
# frames = lines[int(args.start):int(args.end)]
# generate_curvatures(folder, neighbourhood, frames)
curvatures = read_raw_curvatures(folder, frames, neighbourhood)
generate_curvatures(folder, neighbourhood, frames)
# curvatures = read_raw_curvatures(folder, frames, neighbourhood)
# bins = get_bins(curvatures, nr_of_labels)
# np.save(f'custom_data/train_bins_skirt_{neighbourhood}.npy', bins)
bins = np.load(f'custom_data/train_bins_skirt_{neighbourhood}.npy')
generate_curvature_labels(folder, bins, curvatures, frames, neighbourhood)
# bins = np.load(f'custom_data/train_bins_skirt_{neighbourhood}.npy')
# generate_curvature_labels(folder, bins, curvatures, frames, neighbourhood)
# visualize_curvature_labels(folder)
pass