[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32888] trunk/blender/source/blender/ blenkernel/intern/mesh.c: Fix bug with unneeded outline for filled 2d curves when converted to mesh
Sergey Sharybin
g.ulairi at gmail.com
Sat Nov 6 07:22:26 CET 2010
Revision: 32888
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32888
Author: nazgul
Date: 2010-11-06 07:22:25 +0100 (Sat, 06 Nov 2010)
Log Message:
-----------
Fix bug with unneeded outline for filled 2d curves when converted to mesh
- Revert of my old change in curve->mesh conversion
- Do not ignore DL_POLYs for surfaces -- they will never be filled,
but ignore them for 2d curves -- they'll be filled with INDEX3 parts.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/mesh.c
Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c 2010-11-05 21:49:36 UTC (rev 32887)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c 2010-11-06 06:22:25 UTC (rev 32888)
@@ -751,9 +751,13 @@
float *data;
int a, b, ofs, vertcount, startvert, totvert=0, totvlak=0;
int p1, p2, p3, p4, *index;
+ int conv_polys= 0;
cu= ob->data;
+ conv_polys|= cu->flag & CU_3D; /* 2d polys are filled with DL_INDEX3 displists */
+ conv_polys|= ob->type == OB_SURF; /* surf polys are never filled */
+
/* count */
dl= dispbase->first;
while(dl) {
@@ -762,8 +766,10 @@
totvlak+= dl->parts*(dl->nr-1);
}
else if(dl->type==DL_POLY) {
- totvert+= dl->parts*dl->nr;
- totvlak+= dl->parts*dl->nr;
+ if(conv_polys) {
+ totvert+= dl->parts*dl->nr;
+ totvlak+= dl->parts*dl->nr;
+ }
}
else if(dl->type==DL_SURF) {
totvert+= dl->parts*dl->nr;
@@ -815,24 +821,26 @@
}
else if(dl->type==DL_POLY) {
- startvert= vertcount;
- a= dl->parts*dl->nr;
- data= dl->verts;
- while(a--) {
- VECCOPY(mvert->co, data);
- data+=3;
- vertcount++;
- mvert++;
- }
+ if(conv_polys) {
+ startvert= vertcount;
+ a= dl->parts*dl->nr;
+ data= dl->verts;
+ while(a--) {
+ VECCOPY(mvert->co, data);
+ data+=3;
+ vertcount++;
+ mvert++;
+ }
- for(a=0; a<dl->parts; a++) {
- ofs= a*dl->nr;
- for(b=0; b<dl->nr; b++) {
- mface->v1= startvert+ofs+b;
- if(b==dl->nr-1) mface->v2= startvert+ofs;
- else mface->v2= startvert+ofs+b+1;
- if(smooth) mface->flag |= ME_SMOOTH;
- mface++;
+ for(a=0; a<dl->parts; a++) {
+ ofs= a*dl->nr;
+ for(b=0; b<dl->nr; b++) {
+ mface->v1= startvert+ofs+b;
+ if(b==dl->nr-1) mface->v2= startvert+ofs;
+ else mface->v2= startvert+ofs+b+1;
+ if(smooth) mface->flag |= ME_SMOOTH;
+ mface++;
+ }
}
}
}
More information about the Bf-blender-cvs
mailing list