From 98968a8623bd6ac69883e7c54645910d88500c13 Mon Sep 17 00:00:00 2001 From: Colin Basnett Date: Sat, 7 Jun 2025 19:17:39 -0700 Subject: [PATCH] Fix error when attempting to export mesh with no UV layers The fallback behaviour is now to just output zeroes for the UVs if a mesh has no UV layers. --- io_scene_psk_psa/psk/builder.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/io_scene_psk_psa/psk/builder.py b/io_scene_psk_psa/psk/builder.py index a948986..fc55852 100644 --- a/io_scene_psk_psa/psk/builder.py +++ b/io_scene_psk_psa/psk/builder.py @@ -291,19 +291,25 @@ def build_psk(context: Context, input_objects: PskInputObjects, options: PskBuil point.z = v.z psk.points.append(point) - uv_layer = mesh_data.uv_layers.active.data - - # Wedges +# Wedges mesh_data.calc_loop_triangles() + if mesh_data.uv_layers.active is None: + result.warnings.append(f'"{mesh_object.name}" has no active UV Map') + # Build a list of non-unique wedges. wedges = [] - for loop_index, loop in enumerate(mesh_data.loops): - wedges.append(Psk.Wedge( - point_index=loop.vertex_index + vertex_offset, - u=uv_layer[loop_index].uv[0], - v=1.0 - uv_layer[loop_index].uv[1] - )) + if mesh_data.uv_layers.active: + uv_layer = mesh_data.uv_layers.active.data + for loop_index, loop in enumerate(mesh_data.loops): + wedges.append(Psk.Wedge( + point_index=loop.vertex_index + vertex_offset, + u=uv_layer[loop_index].uv[0], + v=1.0 - uv_layer[loop_index].uv[1] + )) + else: + for loop_index, loop in enumerate(mesh_data.loops): + wedges.append(Psk.Wedge(point_index=loop.vertex_index + vertex_offset, u=0.0, v=0.0)) # Assign material indices to the wedges. for triangle in mesh_data.loop_triangles: