Import_3ds: Preserve object hierarchy #104790

Merged
Sebastian Sille merged 33 commits from :main into main 2023-07-28 09:39:24 +02:00

View File

@ -1281,13 +1281,13 @@ def process_next_chunk(context, file, previous_chunk, imported_objects, CONSTRAI
elif parent not in object_dict: elif parent not in object_dict:
try: try:
ob.parent = object_list[parent] ob.parent = object_list[parent]
except: # seems one object is missing, so take previous one except: # seems object is None or not in list
ob.parent = object_list[parent - 1] object_list.pop(ind)
else: # get parent from node_id number else: # get parent from node_id number
try: try:
ob.parent = object_dict.get(parent) ob.parent = object_dict.get(parent)
except: # self to parent exception except: # object is None or self to parent exception
object_list.remove(ob) object_list.pop(ind)
#pivot_list[ind] += pivot_list[parent] # Not sure this is correct, should parent space matrix be applied before combining? #pivot_list[ind] += pivot_list[parent] # Not sure this is correct, should parent space matrix be applied before combining?
@ -1311,7 +1311,7 @@ def process_next_chunk(context, file, previous_chunk, imported_objects, CONSTRAI
# fix pivots # fix pivots
for ind, ob in enumerate(object_list): for ind, ob in enumerate(object_list):
if ob is None: # remove None if ob is None: # remove None
object_list.pop(ind) object_list.remove(ob)
elif ob.type == 'MESH': elif ob.type == 'MESH':
pivot = pivot_list[ind] pivot = pivot_list[ind]
pivot_matrix = object_matrix.get(ob, mathutils.Matrix()) # unlikely to fail pivot_matrix = object_matrix.get(ob, mathutils.Matrix()) # unlikely to fail