Revision: 16877
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16877
Author:   zaghaghi
Date:     2008-10-02 08:01:50 +0200 (Thu, 02 Oct 2008)

Log Message:
-----------
easy weight editing using Alt+W or via Curve/Surface Menu-> Transform -> 
Weight, there is a known issue in that when you cancel weight editing it 
doesn't return to previous value

Modified Paths:
--------------
    branches/nurbs/blender/source/blender/include/BIF_transform.h
    branches/nurbs/blender/source/blender/include/transform.h
    branches/nurbs/blender/source/blender/src/header_view3d.c
    branches/nurbs/blender/source/blender/src/space.c
    branches/nurbs/blender/source/blender/src/transform.c

Modified: branches/nurbs/blender/source/blender/include/BIF_transform.h
===================================================================
--- branches/nurbs/blender/source/blender/include/BIF_transform.h       
2008-10-02 01:38:12 UTC (rev 16876)
+++ branches/nurbs/blender/source/blender/include/BIF_transform.h       
2008-10-02 06:01:50 UTC (rev 16877)
@@ -60,6 +60,7 @@
 #define TFM_BEVEL                      24
 #define TFM_BWEIGHT                    25
 #define TFM_ALIGN                      26
+#define TFM_CURVE_WEIGHT               27
 
 /* TRANSFORM CONTEXTS */
 #define CTX_NONE                       0

Modified: branches/nurbs/blender/source/blender/include/transform.h
===================================================================
--- branches/nurbs/blender/source/blender/include/transform.h   2008-10-02 
01:38:12 UTC (rev 16876)
+++ branches/nurbs/blender/source/blender/include/transform.h   2008-10-02 
06:01:50 UTC (rev 16877)
@@ -343,6 +343,9 @@
 void initRotation(TransInfo *t);
 int Rotation(TransInfo *t, short mval[2]);
 
+void initWeight(TransInfo *t);
+int CurveWeight(TransInfo *t, short mval[2]);
+
 void initShrinkFatten(TransInfo *t);
 int ShrinkFatten(TransInfo *t, short mval[2]);
 

Modified: branches/nurbs/blender/source/blender/src/header_view3d.c
===================================================================
--- branches/nurbs/blender/source/blender/src/header_view3d.c   2008-10-02 
01:38:12 UTC (rev 16876)
+++ branches/nurbs/blender/source/blender/src/header_view3d.c   2008-10-02 
06:01:50 UTC (rev 16877)
@@ -1849,6 +1849,10 @@
        case 21:
                alignmenu();
                break;
+       case 22: /* weight for nurbs*/
+               initTransform(TFM_CURVE_WEIGHT, CTX_NONE);
+               Transform();
+               break;
        }
        allqueue(REDRAWVIEW3D, 0);
 }
@@ -1876,9 +1880,13 @@
                if (G.obedit->type == OB_MESH)
                        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
"Shrink/Fatten Along Normals|Alt S",      0, yco-=20, menuwidth, 19, NULL, 0.0, 
0.0, 1, 9, "");
                else if (G.obedit->type == OB_CURVE) {
+                       uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
"Weight|Alt  W",  0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 22, "");
                        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Tilt|T", 
0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
                        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
"Shrink/Fatten Radius|Alt S",     0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 
14, "");
                }
+               if(G.obedit->type == OB_SURF){
+                       uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
"Weight|Alt  W",  0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 22, "");
+               }
        }
        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "To Sphere|Ctrl Shift S", 
        0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
        if (G.obedit) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Shear|Ctrl 
S",             0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");

Modified: branches/nurbs/blender/source/blender/src/space.c
===================================================================
--- branches/nurbs/blender/source/blender/src/space.c   2008-10-02 01:38:12 UTC 
(rev 16876)
+++ branches/nurbs/blender/source/blender/src/space.c   2008-10-02 06:01:50 UTC 
(rev 16877)
@@ -2742,6 +2742,10 @@
                                        else if (G.qual == 0)
                                                special_editmenu();
                                }
+                               else if(G.obedit && G.qual==LR_ALTKEY) {
+                                       initTransform(TFM_CURVE_WEIGHT, 
CTX_NONE);
+                                       Transform();
+                               }
                                else if((G.qual==LR_SHIFTKEY)) {
                                        initTransform(TFM_WARP, CTX_NONE);
                                        Transform();

Modified: branches/nurbs/blender/source/blender/src/transform.c
===================================================================
--- branches/nurbs/blender/source/blender/src/transform.c       2008-10-02 
01:38:12 UTC (rev 16876)
+++ branches/nurbs/blender/source/blender/src/transform.c       2008-10-02 
06:01:50 UTC (rev 16877)
@@ -94,6 +94,8 @@
 #include "BLI_blenlib.h"
 #include "BLI_editVert.h"
 
+#include "BDR_editcurve.h"
+
 #include "PIL_time.h"                  /* sleep                                
*/
 
 #include "blendef.h"
@@ -653,6 +655,8 @@
                        return "Key Time";
                case TFM_MIRROR:
                        return "Mirror";
+               case TFM_CURVE_WEIGHT:
+                       return "Curve Weight";
        }
        return "Transform";
 }
@@ -1139,6 +1143,9 @@
        case TFM_ALIGN:
                initAlign(&Trans);
                break;
+       case TFM_CURVE_WEIGHT:
+               initWeight(&Trans);
+               break;
        }
 }
 
@@ -3026,6 +3033,67 @@
        return 1;
 }
 
+/* ****************************** WEIGHT ****************************** */
+void initWeight(TransInfo *t)
+{
+       if (G.obedit!=NULL && ELEM(G.obedit->type, OB_CURVE, OB_SURF)) {
+               t->mode = TFM_CURVE_WEIGHT;
+               t->transform = CurveWeight;
+       
+               t->idx_max = 0;
+               t->num.idx_max = 0;
+               t->snap[0] = 0.0f;
+               t->snap[1] = 1.0f;
+               t->snap[2] = t->snap[1] * 0.1f;
+               t->fac = 100.0f;
+       }
+}
+
+int CurveWeight(TransInfo *t, short mval[2])
+{
+       TransData *td = t->data;
+       float distance;
+       int i;
+       char str[50];
+       
+       float dx= (float)(t->center2d[0] - mval[0]);
+       float dy= (float)(t->center2d[1] - mval[1]);
+       distance = (float)sqrt( dx*dx + dy*dy)/t->fac;
+
+       
+       snapGrid(t, &distance);
+       
+       applyNumInput(&t->num, &distance);
+       
+       /* header print for NumInput */
+       if (hasNumInput(&t->num)) {
+               char c[20];
+               
+               outputNumInput(&(t->num), c);
+               sprintf(str, "Weight: %s", c);
+       }
+       else {
+               sprintf(str, "Weight: %3f", distance);
+       }
+
+       for(i = 0 ; i < t->total; i++, td++) {
+               if (td->flag & TD_NOACTION)
+                       break;
+
+               if (td->flag & TD_SKIP)
+                       continue;
+
+               weightflagNurb(SELECT, distance, 0);    
+       }
+       recalcData(t);
+
+       headerprint(str);
+
+       viewRedrawForce(t);
+
+       return 1;
+}
+
 /* ************************** SHRINK/FATTEN *************************** */
 
 void initShrinkFatten(TransInfo *t) 


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

Reply via email to