bill-jiang's picture
Init
4409449
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')