import bpy import numpy as np def style_detect(data): is_mesh = False is_smplx = False jointstyle = 'mmm' # heuristic if data.shape[1] > 1000: is_mesh = True if data.shape[1] == 10475: is_smplx = True if data.shape[1] == 22: jointstyle = 'humanml3d' return is_mesh, is_smplx, jointstyle # see this for more explanation # https://gist.github.com/iyadahmed/7c7c0fae03c40bd87e75dc7059e35377 # This should be solved with new version of blender class ndarray_pydata(np.ndarray): def __bool__(self) -> bool: return len(self) > 0 def load_numpy_vertices_into_blender(vertices, faces, name, mat): mesh = bpy.data.meshes.new(name) mesh.from_pydata(vertices, [], faces.view(ndarray_pydata)) mesh.validate() obj = bpy.data.objects.new(name, mesh) bpy.context.scene.collection.objects.link(obj) bpy.ops.object.select_all(action='DESELECT') obj.select_set(True) obj.active_material = mat bpy.context.view_layer.objects.active = obj bpy.ops.object.shade_smooth() bpy.ops.object.select_all(action='DESELECT') return True def delete_objs(names): if not isinstance(names, list): names = [names] # bpy.ops.object.mode_set(mode='OBJECT') bpy.ops.object.select_all(action='DESELECT') for obj in bpy.context.scene.objects: for name in names: if obj.name.startswith(name) or obj.name.endswith(name): obj.select_set(True) bpy.ops.object.delete() bpy.ops.object.select_all(action='DESELECT')