[Bf-blender-cvs] [7b94c959cae] temp-modifier-rm-cddm: Almost finished mirror modifier (still needs vertex merging)

Sybren A. Stüvel noreply at git.blender.org
Wed Apr 25 15:42:55 CEST 2018


Commit: 7b94c959caea7c05783f0304e94969d03524204f
Author: Sybren A. Stüvel
Date:   Wed Apr 25 14:29:08 2018 +0200
Branches: temp-modifier-rm-cddm
https://developer.blender.org/rB7b94c959caea7c05783f0304e94969d03524204f

Almost finished mirror modifier (still needs vertex merging)

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

M	source/blender/modifiers/intern/MOD_mirror.c

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

diff --git a/source/blender/modifiers/intern/MOD_mirror.c b/source/blender/modifiers/intern/MOD_mirror.c
index d31e4426b96..f3e45e6656b 100644
--- a/source/blender/modifiers/intern/MOD_mirror.c
+++ b/source/blender/modifiers/intern/MOD_mirror.c
@@ -142,19 +142,19 @@ static Mesh *doMirrorOnAxis(MirrorModifierData *mmd,
 
 	/* Subsurf for eg wont have mesh data in the custom data arrays.
 	 * now add mvert/medge/mpoly layers. */
-
-	if (!CustomData_has_layer(&dm->vertData, CD_MVERT)) {
-		dm->copyVertArray(dm, CDDM_get_verts(result));
+	if (!CustomData_has_layer(&mesh->vdata, CD_MVERT)) {
+		memcpy(result->mvert, mesh->mvert, sizeof(*result->mvert) * mesh->totvert);
 	}
-	if (!CustomData_has_layer(&dm->edgeData, CD_MEDGE)) {
-		dm->copyEdgeArray(dm, CDDM_get_edges(result));
+	if (!CustomData_has_layer(&mesh->edata, CD_MEDGE)) {
+		memcpy(result->medge, mesh->medge, sizeof(*result->medge) * mesh->totedge);
 	}
-	if (!CustomData_has_layer(&dm->polyData, CD_MPOLY)) {
-		dm->copyLoopArray(dm, CDDM_get_loops(result));
-		dm->copyPolyArray(dm, CDDM_get_polys(result));
+	if (!CustomData_has_layer(&mesh->pdata, CD_MPOLY)) {
+		memcpy(result->mloop, mesh->mloop, sizeof(*result->mloop) * mesh->totloop);
+		memcpy(result->mpoly, mesh->mpoly, sizeof(*result->mpoly) * mesh->totpoly);
 	}
 
-	/* copy customdata to new geometry */
+	/* copy customdata to new geometry,
+	 * copy from its self because this data may have been created in the checks above */
 	CustomData_copy_data(&result->vdata, &result->vdata, 0, maxVerts, maxVerts);
 	CustomData_copy_data(&result->edata, &result->edata, 0, maxEdges, maxEdges);
 	/* loops are copied later */
@@ -335,8 +335,8 @@ static Mesh *applyModifier(ModifierData *md, struct Depsgraph *UNUSED(depsgraph)
 	MirrorModifierData *mmd = (MirrorModifierData *) md;
 
 	result = mirrorModifier__doMirror(mmd, ob, mesh);
+	BKE_mesh_calc_normals(result);
 
-	/* TODO(sybren): recompute normals? */
 	return result;
 }



More information about the Bf-blender-cvs mailing list