diff --git a/source/blender/io/stl/exporter/stl_export.cc b/source/blender/io/stl/exporter/stl_export.cc index 82e5cba5be0..8bd023e72be 100644 --- a/source/blender/io/stl/exporter/stl_export.cc +++ b/source/blender/io/stl/exporter/stl_export.cc @@ -122,13 +122,17 @@ void export_frame(Depsgraph *depsgraph, mul_v3_m3v3(xform[3], axes_transform, obj_eval->object_to_world().location()); xform[3][3] = obj_eval->object_to_world()[3][3]; + const bool mirrored = is_negative_m4(xform); + /* Write triangles. */ const Span positions = mesh->vert_positions(); const Span corner_verts = mesh->corner_verts(); for (const int3 &tri : mesh->corner_tris()) { PackedTriangle data{}; for (int i = 0; i < 3; i++) { - float3 pos = positions[corner_verts[tri[i]]]; + /* Reverse face order for mirrored objects. */ + int idx = mirrored ? 2 - i : i; + float3 pos = positions[corner_verts[tri[idx]]]; mul_m4_v3(xform, pos); pos *= global_scale; data.vertices[i] = pos; diff --git a/tests/data b/tests/data index 218087daf89..181a40d6c97 160000 --- a/tests/data +++ b/tests/data @@ -1 +1 @@ -Subproject commit 218087daf891d3eefd7ac2c66eb05f117f4510bd +Subproject commit 181a40d6c972c591996c49588d18d6154b9fbc6a