Skip to content
Snippets Groups Projects
Commit eda1a04d authored by Campbell Barton's avatar Campbell Barton
Browse files

patch [#30516] OBJ importer run out of memory fix

from Martijn Berger (juicyfruit) 

with some edits for efficient dict access.
parent d277ce11
No related branches found
No related tags found
No related merge requests found
...@@ -383,7 +383,7 @@ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP): ...@@ -383,7 +383,7 @@ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP):
faces_split = [] faces_split = []
verts_split = [] verts_split = []
unique_materials_split = {} unique_materials_split = {}
vert_remap = [-1] * len(verts_loc) vert_remap = {}
face_split_dict[key] = (verts_split, faces_split, unique_materials_split, vert_remap) face_split_dict[key] = (verts_split, faces_split, unique_materials_split, vert_remap)
...@@ -393,13 +393,13 @@ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP): ...@@ -393,13 +393,13 @@ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP):
# Remap verts to new vert list and add where needed # Remap verts to new vert list and add where needed
for enum, i in enumerate(face_vert_loc_indices): for enum, i in enumerate(face_vert_loc_indices):
if vert_remap[i] == -1: map_index = vert_remap.get(i)
new_index = len(verts_split) if map_index is None:
vert_remap[i] = new_index # set the new remapped index so we only add once and can reference next time. map_index = len(verts_split)
face_vert_loc_indices[enum] = new_index # remap to the local index vert_remap[i] = map_index # set the new remapped index so we only add once and can reference next time.
verts_split.append(verts_loc[i]) # add the vert to the local verts verts_split.append(verts_loc[i]) # add the vert to the local verts
else:
face_vert_loc_indices[enum] = vert_remap[i] # remap to the local index face_vert_loc_indices[enum] = map_index # remap to the local index
matname = face[2] matname = face[2]
if matname and matname not in unique_materials_split: if matname and matname not in unique_materials_split:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment