UV: fix unreported, bad uv packing with convex shape_method.

Pivot wasn't set with convex shape_method when an island has only one triangle.

Regression from 86b1e5e3b6
This commit is contained in:
Chris Blackbourn
2023-03-30 12:31:55 +13:00
parent 9ea6771d10
commit 3cfc3eab93
2 changed files with 7 additions and 1 deletions

View File

@@ -88,6 +88,7 @@ class PackIsland {
void finalize_geometry(const UVPackIsland_Params &params, MemArena *arena, Heap *heap);
private:
void calculate_pivot(); /* Choose a pivot based on triangles. */
blender::Vector<float2> triangle_vertices_;
friend class Occupancy;
};

View File

@@ -131,7 +131,8 @@ void PackIsland::finalize_geometry(const UVPackIsland_Params &params, MemArena *
if (shape_method == ED_UVPACK_SHAPE_CONVEX) {
/* Compute convex hull of existing triangles. */
if (triangle_vertices_.size() <= 3) {
return; /* Trivial case, nothing to do. */
calculate_pivot();
return; /* Trivial case, calculate pivot only. */
}
int vert_count = int(triangle_vertices_.size());
@@ -156,7 +157,11 @@ void PackIsland::finalize_geometry(const UVPackIsland_Params &params, MemArena *
BLI_heap_clear(heap, nullptr);
}
calculate_pivot();
}
void PackIsland::calculate_pivot()
{
Bounds<float2> triangle_bounds = *bounds::min_max(triangle_vertices_.as_span());
float2 aabb_min = triangle_bounds.min;
float2 aabb_max = triangle_bounds.max;