import trimesh import numpy as np cases = [ # ('06461_237_Trousers', 'temp/sampling_pyramid/06461_237_Trousers', [0,8,12,13]), # ('01171_213_Dress', 'temp/sampling_pyramid/01171_213_Dress', [0,6,10,15]), ('01852_70_Tshirt_lvl_0', 'temp/sampling_pro_pyramid/01852_70_Tshirt', [15,10,1,5,13]), ('01852_70_Tshirt_lvl_1', 'temp/sampling_pro_pyramid/01852_70_Tshirt', [15,14,3,5,0 ]), ('01852_70_Tshirt_lvl_2', 'temp/sampling_pro_pyramid/01852_70_Tshirt', [15,12,0,8,6]), ('01852_70_Tshirt_lvl_3', 'temp/sampling_pro_pyramid/01852_70_Tshirt', [15,2,8,1,0]), ] for case in cases: # Load the original mesh folder = case[1] original_mesh = trimesh.load(f'{folder}/{case[0]}_{case[2][0]}.stl') # Load the variation meshes variation_meshes = [] for i in case[2][1:]: variation_meshes.append(trimesh.load(f'{folder}/{case[0]}_{i}.stl')) # Calculate area of original mesh # original_area = original_mesh.area # Calculate area difference for each variation area_diffs = [] for variation_mesh in variation_meshes: # calculate per vertex euclid distance euclid = np.linalg.norm(original_mesh.vertices - variation_mesh.vertices, axis=1) * 1000 euclid_diff = np.mean(euclid) # area_diff = abs(variation_mesh.area - original_area) / original_area area_diffs.append(euclid_diff) # Average area differences # avg_area_diff = np.mean(area_diffs) variance = np.var(area_diffs) # Print results print(f'Case: {case[0]}') # print('Original area:', original_area) print('Euclidean differences:', area_diffs) print('Euclidean variance:', variance) # print('Average Euclidean difference:', avg_area_diff)