[Bf-blender-cvs] [56d1f43] temp_custom_loop_normals: Fix clnors no more importing correctly.

Bastien Montagne noreply at git.blender.org
Wed Feb 4 18:17:21 CET 2015


Commit: 56d1f43179f1fcb4ca279fb9d30709b680f99fb6
Author: Bastien Montagne
Date:   Wed Feb 4 18:00:28 2015 +0100
Branches: temp_custom_loop_normals
https://developer.blender.org/rB56d1f43179f1fcb4ca279fb9d30709b680f99fb6

Fix clnors no more importing correctly.

Found out why I needed CD_MASK_NORMAL in CD_MASK_MESH: BKE_mesh_validate() removes
any CD layer that does not match that mask! And it is mandatory for importers to
be able to call mesh.validate() without deleting those 'temp' CD layers.

So instead of 'poluting' CD_MASK_MESH here, added an option to BKE_mesh_validate
to not remove those temp CD layers...

===================================================================

M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/intern/DerivedMesh.c
M	source/blender/blenkernel/intern/mesh_validate.c
M	source/blender/collada/MeshImporter.cpp
M	source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
M	source/blender/makesrna/intern/rna_mesh_api.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index c0de668..5d21625 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -335,7 +335,7 @@ void BKE_mesh_calc_relative_deform(
 
 /* *** mesh_validate.c *** */
 
-int BKE_mesh_validate(struct Mesh *me, const int do_verbose);
+int BKE_mesh_validate(struct Mesh *me, const int do_verbose, const int cddata_check_mask);
 void BKE_mesh_cd_validate(struct Mesh *me);
 int BKE_mesh_validate_material_indices(struct Mesh *me);
 
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index ad316e5..51f17f7 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -3485,7 +3485,7 @@ bool DM_is_valid(DerivedMesh *dm)
 	        dm->getEdgeDataLayout(dm),
 	        dm->getLoopDataLayout(dm),
 	        dm->getPolyDataLayout(dm),
-	        0,  /* setting mask here isn't useful, gives false positives */
+	        false,  /* setting mask here isn't useful, gives false positives */
 	        do_verbose, do_fixes, &changed);
 
 	is_valid &= BKE_mesh_validate_arrays(
diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c
index 3a6c949..4b2c2ab 100644
--- a/source/blender/blenkernel/intern/mesh_validate.c
+++ b/source/blender/blenkernel/intern/mesh_validate.c
@@ -963,7 +963,7 @@ bool BKE_mesh_validate_all_customdata(CustomData *vdata, CustomData *edata,
  *
  * \returns true if a change is made.
  */
-int BKE_mesh_validate(Mesh *me, const int do_verbose)
+int BKE_mesh_validate(Mesh *me, const int do_verbose, const int cddata_check_mask)
 {
 	bool is_valid = true;
 	bool changed;
@@ -974,7 +974,7 @@ int BKE_mesh_validate(Mesh *me, const int do_verbose)
 
 	is_valid &= BKE_mesh_validate_all_customdata(
 	        &me->vdata, &me->edata, &me->ldata, &me->pdata,
-	        true,
+	        cddata_check_mask,
 	        do_verbose, true,
 	        &changed);
 
diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp
index 3c6c900..02e78b9 100644
--- a/source/blender/collada/MeshImporter.cpp
+++ b/source/blender/collada/MeshImporter.cpp
@@ -818,7 +818,7 @@ void MeshImporter::bmeshConversion()
 			Mesh *me = (*m).second;
 			BKE_mesh_tessface_clear(me);
 			BKE_mesh_calc_normals(me);
-			//BKE_mesh_validate(me, 1);
+			/* BKE_mesh_validate(me, true, true); */
 		}
 	}
 }
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
index da3d55e..70de246 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
@@ -918,7 +918,7 @@ void BlenderStrokeRenderer::GenerateStrokeMesh(StrokeGroup *group, bool hasTex)
 	BLI_assert(mesh->totedge == edge_index);
 	BLI_assert(mesh->totloop == loop_index);
 	BLI_assert(mesh->totcol == material_index);
-	BKE_mesh_validate(mesh, true);
+	BKE_mesh_validate(mesh, true, true);
 #endif
 }
 
diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c
index 90a811a..40dad90 100644
--- a/source/blender/makesrna/intern/rna_mesh_api.c
+++ b/source/blender/makesrna/intern/rna_mesh_api.c
@@ -316,7 +316,9 @@ void RNA_api_mesh(StructRNA *srna)
 	func = RNA_def_function(srna, "validate", "BKE_mesh_validate");
 	RNA_def_function_ui_description(func, "Validate geometry, return True when the mesh has had "
 	                                "invalid geometry corrected/removed");
-	RNA_def_boolean(func, "verbose", 0, "Verbose", "Output information about the errors found");
+	RNA_def_boolean(func, "verbose", false, "Verbose", "Output information about the errors found");
+	RNA_def_boolean(func, "cleanup_cddata", true, "Cleanup CDData",
+	                "Remove temp/cached cdlayers, like e.g. normals...");
 	parm = RNA_def_boolean(func, "result", 0, "Result", "");
 	RNA_def_function_return(func, parm);




More information about the Bf-blender-cvs mailing list