Files
streaming_world/assets/blender/scripts/mixamo/lib/objects.py
2025-01-28 11:30:59 +03:00

81 lines
2.4 KiB
Python

import bpy, os
def delete_object(obj):
bpy.data.objects.remove(obj, do_unlink=True)
def duplicate_object():
try:
bpy.ops.object.duplicate(linked=False, mode='TRANSLATION')
except:
bpy.ops.object.duplicate('TRANSLATION', False)
def get_object(name):
return bpy.data.objects.get(name)
def set_active_object(object_name):
bpy.context.view_layer.objects.active = bpy.data.objects[object_name]
bpy.data.objects[object_name].select_set(state=True)
def hide_object(obj_to_set):
obj_to_set.hide_set(True)
obj_to_set.hide_viewport = True
def is_object_hidden(obj_to_get):
if obj_to_get.hide_get() == False and obj_to_get.hide_viewport == False:
return False
else:
return True
def append_cs(names=[]):
context = bpy.context
scene = context.scene
addon_directory = os.path.dirname(os.path.abspath(__file__))
filepath = addon_directory + "\cs.blend"
# load the objects data in file
with bpy.data.libraries.load(filepath, link=False) as (data_from, data_to):
data_to.objects = [name for name in data_from.objects if name in names]
# Add the objects in the scene
for obj in data_to.objects:
if obj:
# link in collec
scene.collection.objects.link(obj)
cs_grp = bpy.data.objects.get("cs_grp")
if cs_grp == None:
cs_grp = bpy.data.objects.new(name="cs_grp", object_data=None)
bpy.context.collection.objects.link(cs_grp)
cs_grp.location = [0,0,0]
cs_grp.rotation_euler = [0,0,0]
cs_grp.scale = [1,1,1]
# parent the custom shape
obj.parent = cs_grp
# assign to new collection
assigned_collections = []
for collec in cs_grp.users_collection:
try:
collec.objects.link(obj)
assigned_collections.append(collec)
except:# already in collection
pass
if len(assigned_collections):
# remove previous collections
for i in obj.users_collection:
if not i in assigned_collections:
i.objects.unlink(obj)
# and the scene collection
try:
scene.collection.objects.unlink(obj)
except:
pass