[Bf-blender-cvs] [4b8ab16797c] soc-2021-knife-tools: Fix: Knife cut vertex sometimes placed in space

Cian Jinks noreply at git.blender.org
Sun Sep 5 14:12:14 CEST 2021


Commit: 4b8ab16797ce255ed3618ba1ef64f9d05ca46424
Author: Cian Jinks
Date:   Sun Sep 5 13:09:22 2021 +0100
Branches: soc-2021-knife-tools
https://developer.blender.org/rB4b8ab16797ce255ed3618ba1ef64f9d05ca46424

Fix: Knife cut vertex sometimes placed in space

When using relative constrained angle mode along an edge which has a face hidden from view, if a cut is added it can sometimes place the previous cut vertex in space, away from the edge.
This was caused by knife_snap_edge_constrained not working correctly when a cut is constrained along the edge it was started from.

Fixed by adding a quick check.

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

M	source/blender/editors/mesh/editmesh_knife.c

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

diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c
index 5bad09c6e9c..101a15ae636 100644
--- a/source/blender/editors/mesh/editmesh_knife.c
+++ b/source/blender/editors/mesh/editmesh_knife.c
@@ -3443,7 +3443,8 @@ static KnifeEdge *knife_find_closest_edge_of_face(KnifeTool_OpData *kcd,
     knife_project_v2(kcd, kfe->v2->cageco, kfv2_sco);
 
     /* Check if we're close enough and calculate 'lambda'. */
-    if (kcd->is_angle_snapping || kcd->axis_constrained) {
+    /* In constrained mode calculate lambda differently, unless constrained along kcd->prev.edge */
+    if ((kcd->is_angle_snapping || kcd->axis_constrained) && (kfe != kcd->prev.edge)) {
       dis_sq = curdis_sq;
       if (!knife_snap_edge_constrained(kcd, sco, kfv1_sco, kfv2_sco, &dis_sq, &lambda)) {
         continue;



More information about the Bf-blender-cvs mailing list