[Bf-blender-cvs] [ed5202ac6ad] blender2.8: Fix T58235: broken baking of tangent space normals.

Brecht Van Lommel noreply at git.blender.org
Fri Nov 30 16:29:25 CET 2018


Commit: ed5202ac6ad539d1c1734e8ea456245f42dc9bbf
Author: Brecht Van Lommel
Date:   Fri Nov 30 15:54:46 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBed5202ac6ad539d1c1734e8ea456245f42dc9bbf

Fix T58235: broken baking of tangent space normals.

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

M	source/blender/blenkernel/intern/mesh_tangent.c
M	source/blender/render/intern/source/bake_api.c

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

diff --git a/source/blender/blenkernel/intern/mesh_tangent.c b/source/blender/blenkernel/intern/mesh_tangent.c
index b8d260e6922..a222c681a5e 100644
--- a/source/blender/blenkernel/intern/mesh_tangent.c
+++ b/source/blender/blenkernel/intern/mesh_tangent.c
@@ -45,6 +45,7 @@
 #include "BKE_global.h"
 #include "BKE_mesh.h"
 #include "BKE_mesh_tangent.h"
+#include "BKE_mesh_runtime.h"
 #include "BKE_report.h"
 
 #include "BLI_strict_flags.h"
@@ -695,6 +696,8 @@ void BKE_mesh_calc_loop_tangents(
         Mesh *me_eval, bool calc_active_tangent,
         const char (*tangent_names)[MAX_NAME], int tangent_names_len)
 {
+	BKE_mesh_runtime_looptri_ensure(me_eval);
+
 	/* TODO(campbell): store in Mesh.runtime to avoid recalculation. */
 	short tangent_mask = 0;
 	BKE_mesh_calc_loop_tangent_ex(
diff --git a/source/blender/render/intern/source/bake_api.c b/source/blender/render/intern/source/bake_api.c
index ca3907e8b73..181d3744ad7 100644
--- a/source/blender/render/intern/source/bake_api.c
+++ b/source/blender/render/intern/source/bake_api.c
@@ -432,8 +432,7 @@ static TriTessFace *mesh_calc_tri_tessface(
 	            me->totloop, me->totpoly,
 	            looptri);
 
-
-	const float *precomputed_normals = me_eval ? CustomData_get_layer(&me_eval->pdata, CD_NORMAL) : NULL;
+	const float *precomputed_normals = me ? CustomData_get_layer(&me->pdata, CD_NORMAL) : NULL;
 	const bool calculate_normal = precomputed_normals ? false : true;
 
 	for (i = 0; i < tottri; i++) {
@@ -514,11 +513,11 @@ bool RE_bake_pixels_populate_from_objects(
 		tris_high[i] = mesh_calc_tri_tessface(highpoly[i].me, false, NULL);
 
 		me_highpoly[i] = highpoly[i].me;
-		BKE_mesh_tessface_ensure(me_highpoly[i]);
+		BKE_mesh_runtime_looptri_ensure(me_highpoly[i]);
 
-		if (me_highpoly[i]->totface != 0) {
+		if (me_highpoly[i]->runtime.looptris.len != 0) {
 			/* Create a bvh-tree for each highpoly object */
-			BKE_bvhtree_from_mesh_get(&treeData[i], me_highpoly[i], BVHTREE_FROM_FACES, 2);
+			BKE_bvhtree_from_mesh_get(&treeData[i], me_highpoly[i], BVHTREE_FROM_LOOPTRI, 2);
 
 			if (treeData[i].tree == NULL) {
 				printf("Baking: out of memory while creating BHVTree for object \"%s\"\n", highpoly[i].ob->id.name + 2);



More information about the Bf-blender-cvs mailing list