[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45008] trunk/blender/source/blender/ modifiers/intern/MOD_boolean_util.c: partial fix for bug where booleans were using invalid face/poly normals.

Campbell Barton ideasman42 at gmail.com
Tue Mar 20 01:51:42 CET 2012


Revision: 45008
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45008
Author:   campbellbarton
Date:     2012-03-20 00:51:37 +0000 (Tue, 20 Mar 2012)
Log Message:
-----------
partial fix for bug where booleans were using invalid face/poly normals.

the problem remains (though not quite as bad) but think this is because of a bug elsewhere.

Modified Paths:
--------------
    trunk/blender/source/blender/modifiers/intern/MOD_boolean_util.c

Modified: trunk/blender/source/blender/modifiers/intern/MOD_boolean_util.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_boolean_util.c	2012-03-19 22:29:16 UTC (rev 45007)
+++ trunk/blender/source/blender/modifiers/intern/MOD_boolean_util.c	2012-03-20 00:51:37 UTC (rev 45008)
@@ -354,9 +354,9 @@
 
 	// create a new DerivedMesh
 	result = CDDM_new(vertex_it->num_elements, 0, face_it->num_elements, 0, 0);
-	CustomData_merge(&dm1->faceData, &result->faceData, CD_MASK_DERIVEDMESH,
+	CustomData_merge(&dm1->faceData, &result->faceData, CD_MASK_DERIVEDMESH & ~CD_MASK_NORMAL,
 					  CD_DEFAULT, face_it->num_elements); 
-	CustomData_merge(&dm2->faceData, &result->faceData, CD_MASK_DERIVEDMESH,
+	CustomData_merge(&dm2->faceData, &result->faceData, CD_MASK_DERIVEDMESH & ~CD_MASK_NORMAL,
 					  CD_DEFAULT, face_it->num_elements); 
 
 	// step through the vertex iterators:
@@ -466,6 +466,17 @@
 	CDDM_calc_edges_tessface(result);
 
 	CDDM_tessfaces_to_faces(result); /*builds ngon faces from tess (mface) faces*/
+
+	/* this fixes shading issues but SHOULD NOT.
+	 * TODO, find out why face normals are wrong & flicker - campbell */
+#if 0
+	DM_debug_print(result);
+
+	CustomData_free(&result->faceData, result->numTessFaceData);
+	result->numTessFaceData = 0;
+	DM_ensure_tessface(result);
+#endif
+
 	CDDM_calc_normals(result);
 
 	return result;




More information about the Bf-blender-cvs mailing list