[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25415] trunk/blender/source/blender: Sculpt:

Brecht Van Lommel brecht at blender.org
Wed Dec 16 20:19:08 CET 2009


Revision: 25415
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25415
Author:   blendix
Date:     2009-12-16 20:19:08 +0100 (Wed, 16 Dec 2009)

Log Message:
-----------
Sculpt:
* Increase epsilon for intersection a bit more, ortho view + small
  faces are problematic.
* Fix a redraw issue with one partial redraw too much at the end of
  the stroke.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/math_geom.c
    trunk/blender/source/blender/blenlib/intern/pbvh.c
    trunk/blender/source/blender/editors/sculpt_paint/sculpt.c

Modified: trunk/blender/source/blender/blenlib/intern/math_geom.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/math_geom.c	2009-12-16 18:26:27 UTC (rev 25414)
+++ trunk/blender/source/blender/blenlib/intern/math_geom.c	2009-12-16 19:19:08 UTC (rev 25415)
@@ -474,15 +474,16 @@
 	sub_v3_v3v3(s, p1, v0);
 	
 	cross_v3_v3v3(q, s, e1);
-	*lambda = f * dot_v3v3(e2, q);
-	if ((*lambda < 0.0)) return 0;
-	
+
 	u = f * dot_v3v3(s, p);
-	if ((u < -epsilon)||(u > 1.0+epsilon)) return 0;
+	if ((u < -epsilon)||(u > 1.0f+epsilon)) return 0;
 	
 	v = f * dot_v3v3(d, q);
-	if ((v < -epsilon)||((u + v) > 1.0+epsilon)) return 0;
+	if ((v < -epsilon)||((u + v) > 1.0f+epsilon)) return 0;
 
+	*lambda = f * dot_v3v3(e2, q);
+	if ((*lambda < 0.0f)) return 0;
+
 	if(uv) {
 		uv[0]= u;
 		uv[1]= v;

Modified: trunk/blender/source/blender/blenlib/intern/pbvh.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/pbvh.c	2009-12-16 18:26:27 UTC (rev 25414)
+++ trunk/blender/source/blender/blenlib/intern/pbvh.c	2009-12-16 19:19:08 UTC (rev 25415)
@@ -1142,7 +1142,7 @@
 		float dist = FLT_MAX;
 			
 		if(!isect_ray_tri_epsilon_v3(ray_start, ray_normal, t0, t1, t2,
-					 &dist, NULL, 0.001f))
+					 &dist, NULL, 0.1f))
 			dist = FLT_MAX;
 
 		if(dist >= 0 && dist < *fdist) {

Modified: trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2009-12-16 18:26:27 UTC (rev 25414)
+++ trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2009-12-16 19:19:08 UTC (rev 25415)
@@ -1843,6 +1843,7 @@
 	invert_m4_m4(obimat, ss->ob->obmat);
 	mul_m4_v3(obimat, ray_start);
 	mul_mat3_m4_v3(obimat, ray_normal);
+	normalize_v3(ray_normal);
 
 	srd.ss = vc->obact->sculpt;
 	srd.ray_start = ray_start;
@@ -2055,6 +2056,7 @@
 
 		if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob);
 
+		ss->partial_redraw = 0;
 		WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
 	}
 }





More information about the Bf-blender-cvs mailing list