[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41149] branches/bmesh/blender/source/ blender/editors/mesh/knifetool.c: Trial fix for knife cut intermediate point snapping: snap intermediate points ( for edge intersections between clicks in knife tool) to midpoints or endpoints, depending on which is closest

Andrew Wiggin ender79bl at gmail.com
Thu Oct 20 15:41:52 CEST 2011


Revision: 41149
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41149
Author:   ender79
Date:     2011-10-20 13:41:52 +0000 (Thu, 20 Oct 2011)
Log Message:
-----------
Trial fix for knife cut intermediate point snapping: snap intermediate points (for edge intersections between clicks in knife tool) to midpoints or endpoints, depending on which is closest

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/editors/mesh/knifetool.c

Modified: branches/bmesh/blender/source/blender/editors/mesh/knifetool.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2011-10-20 12:15:39 UTC (rev 41148)
+++ branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2011-10-20 13:41:52 UTC (rev 41149)
@@ -858,8 +858,21 @@
 						copy_v3_v3(hit.realhit, p);
 						
 						if (kcd->snap_midpoints) {
-							interp_v3_v3v3(hit.hit, kfe->v1->co, kfe->v2->co, 0.5f);
-							interp_v3_v3v3(hit.cagehit, kfe->v1->cageco, kfe->v2->cageco, 0.5f);
+							float perc = hit.perc;
+
+							/* select the closest from the edge endpoints or the midpoint */
+							if (perc < 0.25f) {
+								perc = 0.0f;
+							}
+							else if (perc < 0.75f) {
+								perc = 0.5f;
+							}
+							else {
+								perc = 1.0f;
+							}
+							
+							interp_v3_v3v3(hit.hit, kfe->v1->co, kfe->v2->co, perc);
+							interp_v3_v3v3(hit.cagehit, kfe->v1->cageco, kfe->v2->cageco, perc);
 						} else {
 							copy_v3_v3(hit.hit, p);
 						}




More information about the Bf-blender-cvs mailing list