diff options
author | Aleksi Juvani <aleksijuvani> | 2022-04-07 00:58:59 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-04-07 00:58:59 +0300 |
commit | 236643606e7e8417bb5207d79d0762211cd8f6c1 (patch) | |
tree | c8d4a1c361d9c7a2ec6aca3dbf3f0c1bb74eada7 /source/blender/geometry | |
parent | 52af51708f0fb7e7f8d8bae1d72869222aa56770 (diff) |
Fix: Division by zero in UV packing function
If all islands had a size of zero, a division by zero would occur in
`GEO_uv_parametrizer_pack`, causing the UV coordinates to be set to
NaN. An alternative approach would be to skip packing islands with a
zero size, but If UV coordinates are for example outside the 0-1 range,
it's better if they get moved into that range.
Differential Revision: https://developer.blender.org/D14522
Diffstat (limited to 'source/blender/geometry')
-rw-r--r-- | source/blender/geometry/intern/uv_parametrizer.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/geometry/intern/uv_parametrizer.c b/source/blender/geometry/intern/uv_parametrizer.c index 7b63dcb5ff0..dd97a996b18 100644 --- a/source/blender/geometry/intern/uv_parametrizer.c +++ b/source/blender/geometry/intern/uv_parametrizer.c @@ -4841,10 +4841,10 @@ void GEO_uv_parametrizer_pack(ParamHandle *handle, BLI_box_pack_2d(boxarray, phandle->ncharts - unpacked, &tot_width, &tot_height); if (tot_height > tot_width) { - scale = 1.0f / tot_height; + scale = tot_height != 0.0f ? (1.0f / tot_height) : 1.0f; } else { - scale = 1.0f / tot_width; + scale = tot_width != 0.0f ? (1.0f / tot_width) : 1.0f; } for (i = 0; i < phandle->ncharts - unpacked; i++) { |