[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60799] branches/vgroup_modifiers/source/ blender/blenkernel/intern: Attempt to fix bmesh crashes by adding tess-to-poly code for loop normals, but no luck so far.

Bastien Montagne montagne29 at wanadoo.fr
Wed Oct 16 14:42:52 CEST 2013


Revision: 60799
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60799
Author:   mont29
Date:     2013-10-16 12:42:51 +0000 (Wed, 16 Oct 2013)
Log Message:
-----------
Attempt to fix bmesh crashes by adding tess-to-poly code for loop normals, but no luck so far.

Modified Paths:
--------------
    branches/vgroup_modifiers/source/blender/blenkernel/intern/customdata.c
    branches/vgroup_modifiers/source/blender/blenkernel/intern/mesh_evaluate.c

Modified: branches/vgroup_modifiers/source/blender/blenkernel/intern/customdata.c
===================================================================
--- branches/vgroup_modifiers/source/blender/blenkernel/intern/customdata.c	2013-10-16 07:55:52 UTC (rev 60798)
+++ branches/vgroup_modifiers/source/blender/blenkernel/intern/customdata.c	2013-10-16 12:42:51 UTC (rev 60799)
@@ -2277,6 +2277,9 @@
 		else if (fdata->layers[i].type == CD_MDISPS) {
 			CustomData_add_layer_named(ldata, CD_MDISPS, CD_CALLOC, NULL, totloop, fdata->layers[i].name);
 		}
+		else if (fdata->layers[i].type == CD_TESSLOOPNORMAL) {
+			CustomData_add_layer_named(ldata, CD_NORMAL, CD_CALLOC, NULL, totloop, fdata->layers[i].name);
+		}
 	}
 }
 

Modified: branches/vgroup_modifiers/source/blender/blenkernel/intern/mesh_evaluate.c
===================================================================
--- branches/vgroup_modifiers/source/blender/blenkernel/intern/mesh_evaluate.c	2013-10-16 07:55:52 UTC (rev 60798)
+++ branches/vgroup_modifiers/source/blender/blenkernel/intern/mesh_evaluate.c	2013-10-16 12:42:51 UTC (rev 60799)
@@ -1823,6 +1823,16 @@
 		}
 	}
 
+	if (CustomData_has_layer(fdata, CD_TESSLOOPNORMAL)) {
+		float (*lnors)[3] = CustomData_get(ldata, loopstart, CD_NORMAL);
+		float (*tlnors)[3] = CustomData_get(fdata, findex, CD_TESSLOOPNORMAL);
+		const int max = mf->v4 ? 4 : 3;
+
+		for (i = 0; i < max; i++, lnors++, tlnors++) {
+			copy_v3_v3(*lnors, *tlnors);
+		}
+	}
+
 	if (CustomData_has_layer(fdata, CD_MDISPS)) {
 		MDisps *ld = CustomData_get(ldata, loopstart, CD_MDISPS);
 		MDisps *fd = CustomData_get(fdata, findex, CD_MDISPS);




More information about the Bf-blender-cvs mailing list