[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60578] branches/soc-2013-paint/source/ blender/editors/sculpt_paint/paint_stroke.c: Slightly better calculation for overlap factor in paint stroke system,

Antony Riakiotakis kalast at gmail.com
Mon Oct 7 01:53:41 CEST 2013


Revision: 60578
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60578
Author:   psy-fi
Date:     2013-10-06 23:53:40 +0000 (Sun, 06 Oct 2013)
Log Message:
-----------
Slightly better calculation for overlap factor in paint stroke system,
it was being calculated from spacing multiplied by size instead of only
spacing. Now brush spacing should be scaled according to all factors
(pressure, size etc) by using a ratio factor between default and scaled
sizing.

Modified Paths:
--------------
    branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_stroke.c

Modified: branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_stroke.c
===================================================================
--- branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_stroke.c	2013-10-06 14:32:53 UTC (rev 60577)
+++ branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_stroke.c	2013-10-06 23:53:40 UTC (rev 60578)
@@ -634,13 +634,15 @@
 	return sum;
 }
 
-static float paint_stroke_integrate_overlap(Brush *br, float spacing)
+static float paint_stroke_integrate_overlap(Brush *br, float factor)
 {
 	int i;
 	int m;
 	float g;
 	float max;
 
+	float spacing = br->spacing * factor;
+
 	if (!(br->flag & BRUSH_SPACE_ATTEN && (br->spacing < 100)))
 		return 1.0;
 
@@ -694,6 +696,7 @@
 	float pressure, dpressure;
 	float mouse[2], dmouse[2];
 	float length;
+	float no_pressure_spacing = paint_space_stroke_spacing(scene, stroke, 1.0f, 1.0f);
 
 	sub_v2_v2v2(dmouse, final_mouse, stroke->last_mouse_position);
 
@@ -710,7 +713,7 @@
 			mouse[1] = stroke->last_mouse_position[1] + dmouse[1] * spacing;
 			pressure = stroke->last_pressure + (spacing / length) * dpressure;
 
-			ups->overlap_factor = paint_stroke_integrate_overlap(stroke->brush, spacing/stroke->zoom_2d);
+			ups->overlap_factor = paint_stroke_integrate_overlap(stroke->brush, spacing/no_pressure_spacing);
 
 			stroke->stroke_distance += spacing / stroke->zoom_2d;
 			paint_brush_stroke_add_step(C, op, mouse, pressure);
@@ -983,7 +986,7 @@
 			mouse[0] = stroke->last_mouse_position[0] + dmouse[0] * spacing_final;
 			mouse[1] = stroke->last_mouse_position[1] + dmouse[1] * spacing_final;
 
-			ups->overlap_factor = paint_stroke_integrate_overlap(stroke->brush, spacing/stroke->zoom_2d);
+			ups->overlap_factor = paint_stroke_integrate_overlap(stroke->brush, 1.0);
 
 			stroke->stroke_distance += spacing / stroke->zoom_2d;
 			paint_brush_stroke_add_step(C, op, mouse, 1.0);
@@ -1016,7 +1019,7 @@
 			MEM_freeN(plast);
 		}
 
-		stroke->ups->overlap_factor = paint_stroke_integrate_overlap(br, br->spacing);
+		stroke->ups->overlap_factor = paint_stroke_integrate_overlap(br, 1.0);
 
 		if (p->next)
 			paint_brush_stroke_add_step(C, op, p->pos, 1.0);
@@ -1036,7 +1039,7 @@
 		CurvePoint *cp = stroke->line.first;
 		float length_residue = 0.0f;
 
-		stroke->ups->overlap_factor = paint_stroke_integrate_overlap(br, br->spacing);
+		stroke->ups->overlap_factor = paint_stroke_integrate_overlap(br, 1.0);
 
 		if (cp->next)
 			paint_brush_stroke_add_step(C, op, &cp->bez.vec[1][0], 1.0);
@@ -1309,7 +1312,7 @@
 	    paint_space_stroke_enabled(br, mode) &&
 	    !(br->flag & BRUSH_SMOOTH_STROKE))
 	{
-		stroke->ups->overlap_factor = paint_stroke_integrate_overlap(br, br->spacing);
+		stroke->ups->overlap_factor = paint_stroke_integrate_overlap(br, 1.0);
 		paint_brush_stroke_add_step(C, op, sample_average.mouse, sample_average.pressure);
 		redraw = true;
 	}




More information about the Bf-blender-cvs mailing list