[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29650] trunk/blender/source/blender: Fix #21369: normals on extruded text and curve objects were flipped

Brecht Van Lommel brecht at blender.org
Wed Jun 23 15:18:51 CEST 2010


Revision: 29650
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29650
Author:   blendix
Date:     2010-06-23 15:18:50 +0200 (Wed, 23 Jun 2010)

Log Message:
-----------
Fix #21369: normals on extruded text and curve objects were flipped
for the backside, giving problems with e.g. boolean operations.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_displist.h
    trunk/blender/source/blender/blenkernel/intern/displist.c
    trunk/blender/source/blender/editors/mesh/editmesh_mods.c
    trunk/blender/source/blender/python/generic/geometry.c

Modified: trunk/blender/source/blender/blenkernel/BKE_displist.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_displist.h	2010-06-23 12:53:27 UTC (rev 29649)
+++ trunk/blender/source/blender/blenkernel/BKE_displist.h	2010-06-23 13:18:50 UTC (rev 29650)
@@ -99,7 +99,7 @@
 int surfindex_displist(DispList *dl, int a, int *b, int *p1, int *p2, int *p3, int *p4);
 void imagestodisplist(void);
 void reshadeall_displist(struct Scene *scene);
-void filldisplist(struct ListBase *dispbase, struct ListBase *to);
+void filldisplist(struct ListBase *dispbase, struct ListBase *to, int flipnormal);
 
 void fastshade_free_render(void);
 

Modified: trunk/blender/source/blender/blenkernel/intern/displist.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/displist.c	2010-06-23 12:53:27 UTC (rev 29649)
+++ trunk/blender/source/blender/blenkernel/intern/displist.c	2010-06-23 13:18:50 UTC (rev 29650)
@@ -925,7 +925,7 @@
 }
 
 
-void filldisplist(ListBase *dispbase, ListBase *to)
+void filldisplist(ListBase *dispbase, ListBase *to, int flipnormal)
 {
 	EditVert *eve, *v1, *vlast;
 	EditFace *efa;
@@ -1019,6 +1019,9 @@
 					index[0]= (intptr_t)efa->v1->tmp.l;
 					index[1]= (intptr_t)efa->v2->tmp.l;
 					index[2]= (intptr_t)efa->v3->tmp.l;
+
+					if(flipnormal)
+						SWAP(int, index[0], index[2]);
 					
 					index+= 3;
 					efa= efa->next;
@@ -1095,13 +1098,13 @@
 		dl= dl->next;
 	}
 
-	filldisplist(&front, dispbase);
-	filldisplist(&back, dispbase);
+	filldisplist(&front, dispbase, 1);
+	filldisplist(&back, dispbase, 0);
 	
 	freedisplist(&front);
 	freedisplist(&back);
 
-	filldisplist(dispbase, dispbase);
+	filldisplist(dispbase, dispbase, 0);
 	
 }
 
@@ -1113,7 +1116,7 @@
 		bevels_to_filledpoly(cu, dispbase);
 	}
 	else {
-		filldisplist(dispbase, dispbase);
+		filldisplist(dispbase, dispbase, 0);
 	}
 }
 
@@ -1315,7 +1318,7 @@
 	ModifierData *preTesselatePoint;
 	Curve *cu= ob->data;
 	ListBase *nurb= cu->editnurb?cu->editnurb:&cu->nurb;
-	int required_mode, totvert;
+	int required_mode, totvert = 0;
 	int editmode = (!forRender && cu->editnurb);
 	DerivedMesh *dm= NULL, *ndm;
 	float (*vertCos)[3] = NULL;

Modified: trunk/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2010-06-23 12:53:27 UTC (rev 29649)
+++ trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2010-06-23 13:18:50 UTC (rev 29650)
@@ -186,7 +186,7 @@
 	}
 	
 	/* do the fill */
-	filldisplist(&lb, &lb);
+	filldisplist(&lb, &lb, 0);
 
 	/* do the draw */
 	dl= lb.first;	/* filldisplist adds in head of list */

Modified: trunk/blender/source/blender/python/generic/geometry.c
===================================================================
--- trunk/blender/source/blender/python/generic/geometry.c	2010-06-23 12:53:27 UTC (rev 29649)
+++ trunk/blender/source/blender/python/generic/geometry.c	2010-06-23 13:18:50 UTC (rev 29650)
@@ -419,7 +419,7 @@
 	}
 	else if (totpoints) {
 		/* now make the list to return */
-		filldisplist(&dispbase, &dispbase);
+		filldisplist(&dispbase, &dispbase, 0);
 		
 		/* The faces are stored in a new DisplayList
 		thats added to the head of the listbase */





More information about the Bf-blender-cvs mailing list