@@ -164,8 +164,14 @@ def import_skin(ni_block, b_obj):
164164 v_group .add ([vert ], w , 'REPLACE' )
165165
166166 # import body parts as face maps
167- # get faces (triangles) as map of tuples to index
168- tri_map = {frozenset (polygon .vertices ): polygon .index for polygon in b_obj .data .polygons }
167+ # get faces (triangles) as map of unordered vertices to list of indices
168+ tri_map = {}
169+ for polygon in b_obj .data .polygons :
170+ vertices = frozenset (polygon .vertices )
171+ if vertices in tri_map :
172+ tri_map [vertices ].append (polygon .index )
173+ else :
174+ tri_map [vertices ] = [polygon .index ]
169175 if isinstance (skininst , NifFormat .BSDismemberSkinInstance ):
170176 skinpart = ni_block .get_skin_partition ()
171177 for bodypart , skinpartblock in zip (skininst .partitions , skinpart .skin_partition_blocks ):
@@ -178,4 +184,5 @@ def import_skin(ni_block, b_obj):
178184 f_group = b_obj .face_maps .new (name = group_name )
179185
180186 # add the triangles to the face map
181- f_group .add ([tri_map [frozenset (vertices )] for vertices in skinpartblock .get_mapped_triangles ()])
187+ for vertices in skinpartblock .get_mapped_triangles ():
188+ f_group .add (tri_map [frozenset (vertices )])
0 commit comments