nurbs surface resolution is now per segment rather then being distributed over the whole surface.

This is what 2D do alredy and makes resolution settings more like subsurf level.

- This makes it impossible to have a lower resolution output then the nurbs cage, however this dosnt seem a very useful feature.
- Using the do-versions from recent curve interpolation fix.

Tested with these files.

http://digilander.libero.it/pafurijaz/Files/Blender/Libellula.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Martello.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Punta.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Phones.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Tubo.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Pipe.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Tire.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Cotton.zip
This commit is contained in:
2008-09-26 19:00:49 +00:00
parent 8e1cf42dbd
commit 3ad55e1541
4 changed files with 46 additions and 38 deletions

View File

@@ -828,7 +828,6 @@ short extrudeflagNurb(int flag)
MEM_freeN(nu->bp);
nu->bp= newbp;
nu->pntsv++;
if(nu->resolv<3) nu->resolv++;
makeknots(nu, 2, nu->flagv>>1);
}
else if(v==0 || v== nu->pntsu-1) { /* collumn in v-direction selected */
@@ -856,7 +855,6 @@ short extrudeflagNurb(int flag)
MEM_freeN(nu->bp);
nu->bp= newbp;
nu->pntsu++;
if(nu->resolu<3) nu->resolu++;
makeknots(nu, 1, nu->flagu>>1);
}
}
@@ -2470,8 +2468,6 @@ void merge_2_nurb(Nurb *nu1, Nurb *nu2)
/* merge */
origu= nu1->pntsu;
nu1->pntsu+= nu2->pntsu;
nu1->resolu+= nu2->pntsu;
if(nu1->resolv < nu2->resolv) nu1->resolv= nu2->resolv;
if(nu1->orderu<3) nu1->orderu++;
if(nu1->orderv<3) nu1->orderv++;
temp= nu1->bp;
@@ -2997,7 +2993,6 @@ void addvert_Nurb(int mode)
if(bp) {
nu->pntsu++;
if(nu->resolu<3) nu->resolu++;
makeknots(nu, 1, nu->flagu>>1);
if(mode=='e') {
@@ -4120,8 +4115,8 @@ Nurb *addNurbprim(int type, int stype, int newname)
if ELEM5(stype, 0, 1, 2, 4, 6) {
nu = (Nurb*)MEM_callocN(sizeof(Nurb), "addNurbprim");
nu->type= type;
nu->resolu= 12;
nu->resolv= 12;
nu->resolu= 4;
nu->resolv= 4;
}
switch(stype) {
@@ -4203,7 +4198,7 @@ Nurb *addNurbprim(int type, int stype, int newname)
nu->pntsv= 1;
nu->orderu= 5;
nu->flagu= 2; /* endpoint */
nu->resolu= 32;
nu->resolu= 8;
nu->bp= callocstructN(BPoint, 5, "addNurbprim3");
bp= nu->bp;
@@ -4361,7 +4356,7 @@ Nurb *addNurbprim(int type, int stype, int newname)
}
nu= addNurbprim(4, 1, newname); /* circle */
nu->resolu= 32;
nu->resolu= 4;
nu->flag= CU_SMOOTH;
BLI_addtail(&editNurb, nu); /* temporal for extrude and translate */
vec[0]=vec[1]= 0.0;
@@ -4394,8 +4389,8 @@ Nurb *addNurbprim(int type, int stype, int newname)
nu->pntsu= 5;
nu->pntsv= 1;
nu->orderu= 3;
nu->resolu= 24;
nu->resolv= 32;
nu->resolu= 4;
nu->resolv= 4;
nu->flag= CU_SMOOTH;
nu->bp= callocstructN(BPoint, 5, "addNurbprim6");
nu->flagu= 0;
@@ -4441,8 +4436,8 @@ Nurb *addNurbprim(int type, int stype, int newname)
xzproj= 1;
nu= addNurbprim(4, 1, newname); /* circle */
xzproj= 0;
nu->resolu= 24;
nu->resolv= 32;
nu->resolu= 4;
nu->resolv= 4;
nu->flag= CU_SMOOTH;
BLI_addtail(&editNurb, nu); /* temporal for extrude and translate */
if(newname && (U.flag & USER_ADD_VIEWALIGNED) == 0)