[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32224] trunk/blender/source/blender: Add distance check in lasso generation to get a smoother lasso.

Nathan Letwory nathan at letworyinteractive.com
Fri Oct 1 10:12:37 CEST 2010


Revision: 32224
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32224
Author:   jesterking
Date:     2010-10-01 10:12:37 +0200 (Fri, 01 Oct 2010)

Log Message:
-----------
Add distance check in lasso generation to get a smoother lasso.

Hopefully this helps with lasso select troubles [#21179].

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/editmesh_mods.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2010-10-01 07:49:00 UTC (rev 32223)
+++ trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2010-10-01 08:12:37 UTC (rev 32224)
@@ -284,7 +284,7 @@
 	
 	/* yah, opengl doesn't do concave... tsk! */
 	ED_region_pixelspace(vc->ar);
-	 draw_triangulated(mcords, tot);	
+	draw_triangulated(mcords, tot);
 	
 	glBegin(GL_LINE_LOOP);	/* for zero sized masks, lines */
 	for(a=0; a<tot; a++) glVertex2s(mcords[a][0], mcords[a][1]);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2010-10-01 07:49:00 UTC (rev 32223)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2010-10-01 08:12:37 UTC (rev 32224)
@@ -2435,11 +2435,21 @@
 			}
 
 			{
+				short x, y;
 				short *lasso= gesture->customdata;
-				lasso += 2 * gesture->points;
-				lasso[0] = event->x - sx;
-				lasso[1] = event->y - sy;
-				gesture->points++;
+				
+				lasso += (2 * gesture->points - 2);
+				x = (event->x - sx - lasso[0]);
+				y = (event->y - sy - lasso[1]);
+				
+				/* make a simple distance check to get a smoother lasso
+				   add only when at least 2 pixels between this and previous location */
+				if((x*x+y*y) > 4) {
+					lasso += 2;
+					lasso[0] = event->x - sx;
+					lasso[1] = event->y - sy;
+					gesture->points++;
+				}
 			}
 			break;
 			





More information about the Bf-blender-cvs mailing list