diff options
author | Ton Roosendaal <ton@blender.org> | 2006-03-07 00:44:08 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2006-03-07 00:44:08 +0300 |
commit | aa1d8162be2267f246c512b6591455a0c3815c7f (patch) | |
tree | 1c7ab140572df2daf706e2d6d27cb7afb4008976 /source | |
parent | f365dd2d91f0a97b12550d871e580eebc1ed93e5 (diff) |
Curves with bevel, but without front/back or extrude depth, now render
as a full circle instead of 2 halves.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/curve.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 9646ab3718e..315a1981354 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -1109,13 +1109,38 @@ void makebevelcurve(Object *ob, ListBase *disp) fp[3]= fp[4]= 0.0; fp[5]= cu->ext1; } + else if( (cu->flag & (CU_FRONT|CU_BACK))==0 && cu->ext1==0.0f) { // we make a full round bevel in that case + + nr= 4+ 2*cu->bevresol; + + dl= MEM_callocN(sizeof(DispList), "makebevelcurve p1"); + dl->verts= MEM_mallocN(nr*3*sizeof(float), "makebevelcurve p1"); + BLI_addtail(disp, dl); + dl->type= DL_POLY; + dl->parts= 1; + dl->flag= DL_BACK_CURVE; + dl->nr= nr; + + /* a circle */ + fp= dl->verts; + dhoek= (2.0f*M_PI/(nr)); + hoek= -(nr-1)*dhoek; + + for(a=0; a<nr; a++) { + fp[0]= 0.0; + fp[1]= (float)(cos(hoek)*(cu->ext2)); + fp[2]= (float)(sin(hoek)*(cu->ext2)) - cu->ext1; + hoek+= dhoek; + fp+= 3; + } + } else { short dnr; /* bevel now in three parts, for proper vertex normals */ /* part 1 */ dnr= nr= 2+ cu->bevresol; - if( (cu->flag & (CU_FRONT|CU_BACK))==0) // we make a full round bevel in that case + if( (cu->flag & (CU_FRONT|CU_BACK))==0) nr= 3+ 2*cu->bevresol; dl= MEM_callocN(sizeof(DispList), "makebevelcurve p1"); |