diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2007-01-22 03:30:00 +0300 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2007-01-22 03:30:00 +0300 |
commit | fef73f2b9294072b6606cfbd449fb01f72249348 (patch) | |
tree | 7517951fd8debf4c5753b01c368dcadbde615265 /source/blender/src/retopo.c | |
parent | 25372193f564b2a27b7d2739c8626e9c677932dd (diff) |
== Retopo ==
Fixed bug #5776, retopo - Retopo doesn't work with bezier curves
* Added check for 2D curves, since those obviously can't be wrapped onto a 3D surface
* Added check for bezier curves, those get processed in the same way as other curves now
* Added an object flush so that curves get redrawn properly after "Retopo All" is used
* Added retopo paint tooltip from ideasman
Diffstat (limited to 'source/blender/src/retopo.c')
-rw-r--r-- | source/blender/src/retopo.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/source/blender/src/retopo.c b/source/blender/src/retopo.c index 847a5edd99b..7796984cef9 100644 --- a/source/blender/src/retopo.c +++ b/source/blender/src/retopo.c @@ -55,6 +55,8 @@ #include "BIF_space.h" #include "BIF_toolbox.h" +#include "BKE_curve.h" +#include "BKE_depsgraph.h" #include "BKE_global.h" #include "BKE_mesh.h" @@ -803,6 +805,7 @@ void retopo_do_all() eve= eve->next; } + DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA); allqueue(REDRAWVIEW3D, 0); } } @@ -815,7 +818,20 @@ void retopo_do_all() for(nu= editNurb.first; nu; nu= nu->next) { - if((nu->type & 7)!=CU_BEZIER) { + if(nu->type & CU_2D) { + /* Can't wrap a 2D curve onto a 3D surface */ + } + else if(nu->type & CU_BEZIER) { + for(i=0; i<nu->pntsu; ++i) { + if(nu->bezt[i].f1 & 1) + retopo_do_vert(G.vd, nu->bezt[i].vec[0]); + if(nu->bezt[i].f2 & 1) + retopo_do_vert(G.vd, nu->bezt[i].vec[1]); + if(nu->bezt[i].f3 & 1) + retopo_do_vert(G.vd, nu->bezt[i].vec[2]); + } + } + else { bp= nu->bp; for(i=0; i<nu->pntsv; ++i) { for(j=0; j<nu->pntsu; ++j, ++bp) { @@ -824,8 +840,11 @@ void retopo_do_all() } } } + + testhandlesNurb(nu); } - + + DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA); allqueue(REDRAWVIEW3D, 0); } } |