Spaces:
Runtime error
Runtime error
| import bpy | |
| import csv | |
| import os | |
| import json | |
| # Get the path to the current Blender file | |
| blend_file_path = bpy.data.filepath | |
| # Get the directory of the Blender file | |
| blend_dir = os.path.dirname(blend_file_path) | |
| path = './' | |
| # Construct the absolute path to the "data.csv" file | |
| data_file_path = os.path.join(blend_dir, path) | |
| data_file_path = os.path.join(data_file_path, "scene_reference_points.json") # TODO: Depends on the scene | |
| print('Points file path:', data_file_path) | |
| # Get data | |
| obj = bpy.context.active_object | |
| m = bpy.context.object.evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh() | |
| vertices = m.vertices | |
| print("Number of vertices:", len(m.vertices)) | |
| # Initialize dict | |
| res_dict = {} | |
| res_dict['matrix_world'] = [[obj.matrix_world[i][j] for j in range(4)] for i in range(4)] | |
| res_dict['reference_points'] = [] | |
| res_dict['groups'] = [] | |
| res_dict['weights'] = [] | |
| # Get names of all vertex groups | |
| vertex_group_names = {} | |
| print("Vertex groups:") | |
| for i in range(len(obj.vertex_groups)): | |
| group = obj.vertex_groups[i] | |
| print(group.index, ":", group.name) | |
| vertex_group_names[str(group.index)] = group.name | |
| for i in range(len(vertices)): | |
| # Add coordinates | |
| v = obj.matrix_world @ vertices[i].co | |
| res_dict['reference_points'].append([v[0], v[1], v[2]]) | |
| # Add the names of the corresponding vertex groups | |
| group_list = [] | |
| weight_list = [] | |
| for group in vertices[i].groups: | |
| group_list.append(vertex_group_names[str(group.group)]) | |
| weight_list.append(group.weight) | |
| res_dict['groups'].append(group_list) | |
| res_dict['weights'].append(weight_list) | |
| with open(data_file_path, "w") as outfile: | |
| json.dump(res_dict, outfile) | |
| print(f'Results saved to "{data_file_path}".') | |