[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29556] branches/soc-2010-jwilkins/source/ blender/editors/sculpt_paint/sculpt.c: * Bug Fix: Fixed rotate and thumb brushes to work with symmetry.

Jason Wilkins Jason.A.Wilkins at gmail.com
Sat Jun 19 08:26:08 CEST 2010


Revision: 29556
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29556
Author:   jwilkins
Date:     2010-06-19 08:26:07 +0200 (Sat, 19 Jun 2010)

Log Message:
-----------
* Bug Fix: Fixed rotate and thumb brushes to work with symmetry.  

Modified Paths:
--------------
    branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c

Modified: branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c	2010-06-19 05:22:03 UTC (rev 29555)
+++ branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c	2010-06-19 06:26:07 UTC (rev 29556)
@@ -1218,7 +1218,9 @@
 
 				if(vd.mvert) {
 					vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
-					if(brush->flag & BRUSH_SUBDIV) vd.mvert->flag = 1; 
+
+					if(brush->flag & BRUSH_SUBDIV)
+						vd.mvert->flag = 1; 
 				}
 			}
 		}
@@ -1233,11 +1235,15 @@
 	float grab_delta[3];
 	int n;
 	float an[3];
+	float tmp[3], cono[3];
 
 	copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry);
 
 	calc_area_normal(sd, ss, an, nodes, totnode);
 
+	cross_v3_v3v3(tmp, an, grab_delta);
+	cross_v3_v3v3(cono, tmp, an);
+
 	for(n = 0; n < totnode; n++) {
 		PBVHVertexIter vd;
 		SculptBrushTest test;
@@ -1248,13 +1254,8 @@
 			if(sculpt_brush_test(&test, vd.co)) {
 				float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist);
 				float val[3];
-				float tmp[3];
 
-				cross_v3_v3v3(tmp, an, grab_delta);
-				cross_v3_v3v3(val, an, tmp);
-
-				mul_v3_v3fl(val, grab_delta, fade);
-				symmetry_feather(sd, ss, vd.co, val);
+				mul_v3_v3fl(val, cono, fade);
 				add_v3_v3(val, vd.co);
 
 				sculpt_clip(sd, ss, vd.co, val);
@@ -1327,37 +1328,38 @@
 	float grab_delta[3];
 	int n;
 	float an[3];
+	float tmp[3], cono[3];
 
 	copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry);
 
 	calc_area_normal(sd, ss, an, nodes, totnode);
 
+	cross_v3_v3v3(tmp, an, grab_delta);
+	cross_v3_v3v3(cono, tmp, an);
+
 	for(n = 0; n < totnode; n++) {
 		PBVHVertexIter vd;
 		SculptBrushTest test;
 		float (*origco)[3];
+		float (*proxy)[3];
 
-		origco=sculpt_undo_push_node(ss, nodes[n])->co;
+		origco= sculpt_undo_push_node(ss, nodes[n])->co;
+
+		proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co;
+
 		sculpt_brush_test_init(ss, &test);
 
 		BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
 			if(sculpt_brush_test(&test, origco[vd.i])) {
 				float fade = bstrength*tex_strength(ss, brush, origco[vd.i], test.dist);
-				float val[3];
-				float tmp[3];
 
-				cross_v3_v3v3(tmp, an, grab_delta);
-				cross_v3_v3v3(val, an, tmp);
+				mul_v3_v3fl(proxy[vd.i], cono, fade);
 
-				mul_v3_v3fl(val, grab_delta, fade);
-				symmetry_feather(sd, ss, origco[vd.i], val);
-				add_v3_v3(val, origco[vd.i]);
-
-				sculpt_clip(sd, ss, vd.co, val);
-
 				if(vd.mvert) {
 					vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
-					if(brush->flag & BRUSH_SUBDIV) vd.mvert->flag = 1; 
+
+					if(brush->flag & BRUSH_SUBDIV)
+						vd.mvert->flag = 1; 
 				}
 			}
 		}
@@ -1383,24 +1385,22 @@
 		PBVHVertexIter vd;
 		SculptBrushTest test;
 		float (*origco)[3];
+		float (*proxy)[3];
 	
 		origco= sculpt_undo_push_node(ss, nodes[n])->co;
 
+		proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co;
+
 		sculpt_brush_test_init(ss, &test);
 
 		BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
 			if(sculpt_brush_test(&test, origco[vd.i])) {
 				float fade = bstrength*tex_strength(ss, brush, origco[vd.i], test.dist);
-				float val[3];
 
-				mul_v3_m3v3(val, m, origco[vd.i]);
-				sub_v3_v3(val, origco[vd.i]);
-				mul_v3_fl(val, fade);
-				symmetry_feather(sd, ss, origco[vd.i], val);
-				add_v3_v3(val, origco[vd.i]);
+				mul_v3_m3v3(proxy[vd.i], m, origco[vd.i]);
+				sub_v3_v3(proxy[vd.i], origco[vd.i]);
+				mul_v3_fl(proxy[vd.i], fade);
 
-				sculpt_clip(sd, ss, vd.co, val);
-
 				if(vd.mvert) {
 					vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
 					if(brush->flag & BRUSH_SUBDIV) vd.mvert->flag = 1; 





More information about the Bf-blender-cvs mailing list