Skip to content

Commit a68aee7

Browse files
committed
Fixed issue #496 by allowing for multiple triangles with the same vertices used.
1 parent 814fd8c commit a68aee7

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

  • io_scene_niftools/modules/nif_import/geometry/vertex

io_scene_niftools/modules/nif_import/geometry/vertex/groups.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)