[Bf-blender-cvs] [280de3df079] blender2.8: Multires: Use proper subdivision level for reshape

Sergey Sharybin noreply at git.blender.org
Wed Sep 26 15:08:43 CEST 2018


Commit: 280de3df07919d62a3d9ada4989342c3fc7a251f
Author: Sergey Sharybin
Date:   Wed Sep 26 15:08:04 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB280de3df07919d62a3d9ada4989342c3fc7a251f

Multires: Use proper subdivision level for reshape

Apparently, part of code got lost last minute prior to push.

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

M	source/blender/blenkernel/intern/object.c
M	source/blender/makesdna/DNA_mesh_types.h
M	source/blender/modifiers/intern/MOD_multires.c

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

diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 0c1da652d0d..cf6f2e5d842 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -385,9 +385,10 @@ static void object_update_from_subsurf_ccg(Object *object)
 	if (!subdiv_ccg->dirty.coords && !subdiv_ccg->dirty.hidden) {
 		return;
 	}
+	const int tot_level = mesh_eval->runtime.subdiv_ccg_tot_level;
 	Object *object_orig = DEG_get_original_object(object);
 	Mesh *mesh_orig = (Mesh *)object_orig->data;
-	multiresModifier_reshapeFromCCG(6, mesh_orig, subdiv_ccg);
+	multiresModifier_reshapeFromCCG(tot_level, mesh_orig, subdiv_ccg);
 	/* NOTE: we need to reshape into an original mesh from main database,
 	 * allowing:
 	 *
diff --git a/source/blender/makesdna/DNA_mesh_types.h b/source/blender/makesdna/DNA_mesh_types.h
index e8eb59cb5e0..656f9fa3034 100644
--- a/source/blender/makesdna/DNA_mesh_types.h
+++ b/source/blender/makesdna/DNA_mesh_types.h
@@ -84,8 +84,11 @@ struct MLoopTri_Store {
 typedef struct Mesh_Runtime {
 	struct EditMeshData *edit_data;
 	void *batch_cache;
+
 	struct SubdivCCG *subdiv_ccg;
 	void  *pad1;
+	int subdiv_ccg_tot_level;
+	int pad2;
 
 	int64_t cd_dirty_vert;
 	int64_t cd_dirty_edge;
diff --git a/source/blender/modifiers/intern/MOD_multires.c b/source/blender/modifiers/intern/MOD_multires.c
index 8c055536834..18b6dc5d846 100644
--- a/source/blender/modifiers/intern/MOD_multires.c
+++ b/source/blender/modifiers/intern/MOD_multires.c
@@ -236,6 +236,7 @@ static Mesh *applyModifier_subdiv(ModifierData *md,
 	if ((ctx->object->mode & OB_MODE_SCULPT) && !for_orco) {
 		/* NOTE: CCG takes ownership over Subdiv. */
 		result = multires_as_ccg(mmd, ctx, mesh, subdiv);
+		result->runtime.subdiv_ccg_tot_level = mmd->totlvl;
 		// BKE_subdiv_stats_print(&subdiv->stats);
 	}
 	else {



More information about the Bf-blender-cvs mailing list