Changed name of faces that couldn't be added to "invalid" faces instead of "degenerate" faces

This is because a face can still be rejected by being a duplicate, but it doesn't necessarily have to be degenerate (i.e., a line or point).
This commit is contained in:
Colin Basnett
2023-08-10 23:38:56 -07:00
parent e9b09dc651
commit d0d6deb63c

View File

@@ -150,17 +150,22 @@ def import_psk(psk: Psk, context, options: PskImportOptions) -> PskImportResult:
bm.verts.ensure_lookup_table() bm.verts.ensure_lookup_table()
degenerate_face_indices = set() invalid_face_indices = set()
for face_index, face in enumerate(psk.faces): for face_index, face in enumerate(psk.faces):
point_indices = [bm.verts[psk.wedges[i].point_index] for i in reversed(face.wedge_indices)] point_indices = map(lambda i: psk.wedges[i].point_index, reversed(face.wedge_indices))
points = [bm.verts[i] for i in point_indices]
try: try:
bm_face = bm.faces.new(point_indices) bm_face = bm.faces.new(points)
bm_face.material_index = face.material_index bm_face.material_index = face.material_index
except ValueError: except ValueError:
degenerate_face_indices.add(face_index) # This happens for two reasons:
# 1. Two or more of the face's points are the same. (i.e, point indices of [0, 0, 1])
# 2. The face is a duplicate of another face. (i.e., point indices of [0, 1, 2] and [0, 1, 2])
invalid_face_indices.add(face_index)
if len(degenerate_face_indices) > 0: # TODO: Handle invalid faces better.
result.warnings.append(f'Discarded {len(degenerate_face_indices)} degenerate face(s).') if len(invalid_face_indices) > 0:
result.warnings.append(f'Discarded {len(invalid_face_indices)} invalid face(s).')
bm.to_mesh(mesh_data) bm.to_mesh(mesh_data)
@@ -168,7 +173,7 @@ def import_psk(psk: Psk, context, options: PskImportOptions) -> PskImportResult:
data_index = 0 data_index = 0
uv_layer = mesh_data.uv_layers.new(name='VTXW0000') uv_layer = mesh_data.uv_layers.new(name='VTXW0000')
for face_index, face in enumerate(psk.faces): for face_index, face in enumerate(psk.faces):
if face_index in degenerate_face_indices: if face_index in invalid_face_indices:
continue continue
face_wedges = [psk.wedges[i] for i in reversed(face.wedge_indices)] face_wedges = [psk.wedges[i] for i in reversed(face.wedge_indices)]
for wedge in face_wedges: for wedge in face_wedges:
@@ -183,7 +188,7 @@ def import_psk(psk: Psk, context, options: PskImportOptions) -> PskImportResult:
data_index = 0 data_index = 0
uv_layer = mesh_data.uv_layers.new(name=f'EXTRAUV{extra_uv_index}') uv_layer = mesh_data.uv_layers.new(name=f'EXTRAUV{extra_uv_index}')
for face_index, face in enumerate(psk.faces): for face_index, face in enumerate(psk.faces):
if face_index in degenerate_face_indices: if face_index in invalid_face_indices:
continue continue
for wedge_index in reversed(face.wedge_indices): for wedge_index in reversed(face.wedge_indices):
u, v = psk.extra_uvs[wedge_index_offset + wedge_index] u, v = psk.extra_uvs[wedge_index_offset + wedge_index]