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; 


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to