[Bf-blender-cvs] [236643606e7] master: Fix: Division by zero in UV packing function

Aleksi Juvani noreply at git.blender.org
Wed Apr 6 23:59:36 CEST 2022


Commit: 236643606e7e8417bb5207d79d0762211cd8f6c1
Author: Aleksi Juvani
Date:   Wed Apr 6 16:58:59 2022 -0500
Branches: master
https://developer.blender.org/rB236643606e7e8417bb5207d79d0762211cd8f6c1

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

===================================================================

M	source/blender/geometry/intern/uv_parametrizer.c

===================================================================

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++) {



More information about the Bf-blender-cvs mailing list