[Bf-blender-cvs] [51f8dbe081f] master: Mask: Fix possible nan values in the weight interpolation

Sergey Sharybin noreply at git.blender.org
Mon Mar 29 16:19:41 CEST 2021


Commit: 51f8dbe081f61825c532f5acc3d0918561b6e142
Author: Sergey Sharybin
Date:   Mon Mar 29 15:46:48 2021 +0200
Branches: master
https://developer.blender.org/rB51f8dbe081f61825c532f5acc3d0918561b6e142

Mask: Fix possible nan values in the weight interpolation

Noticed while looking into animation data being created as per
steps to reproduce bug in T76872.

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

M	source/blender/blenkernel/intern/mask.c

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

diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 3a3ad9ef051..a3f122115d8 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -1893,10 +1893,17 @@ static void interp_weights_uv_v2_calc(float r_uv[2],
                                       const float pt_a[2],
                                       const float pt_b[2])
 {
+  const float segment_len = len_v2v2(pt_a, pt_b);
+  if (segment_len == 0.0f) {
+    r_uv[0] = 1.0f;
+    r_uv[1] = 0.0f;
+    return;
+  }
+
   float pt_on_line[2];
   r_uv[0] = closest_to_line_v2(pt_on_line, pt, pt_a, pt_b);
 
-  r_uv[1] = (len_v2v2(pt_on_line, pt) / len_v2v2(pt_a, pt_b)) *
+  r_uv[1] = (len_v2v2(pt_on_line, pt) / segment_len) *
             /* This line only sets the sign. */
             ((line_point_side_v2(pt_a, pt_b, pt) < 0.0f) ? -1.0f : 1.0f);
 }



More information about the Bf-blender-cvs mailing list