[Bf-blender-cvs] [b22831e] master: Modifiers: consider all constructive modifiers as 'preview' ones as well.

Bastien Montagne noreply at git.blender.org
Fri Aug 15 10:13:20 CEST 2014


Commit: b22831e5cee300258129d86b3dba01931c42bfc5
Author: Bastien Montagne
Date:   Fri Aug 15 10:07:39 2014 +0200
Branches: master
https://developer.blender.org/rBb22831e5cee300258129d86b3dba01931c42bfc5

Modifiers: consider all constructive modifiers as 'preview' ones as well.

Indeed, constructive modifiers are highly likely to modify CDLayers like vgroups or vcols!

See vertexgroup2.blend file ({F93770}) in T40523, especially obvious with subsurf modifier.

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

M	source/blender/blenkernel/intern/DerivedMesh.c
M	source/blender/blenkernel/intern/modifier.c

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

diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 46f04ff..7771b45 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -2022,9 +2022,7 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D
 		previewmd = modifiers_getLastPreview(scene, md, required_mode);
 		/* even if the modifier doesn't need the data, to make a preview it may */
 		if (previewmd) {
-			if (do_mod_wmcol) {
-				previewmask = CD_MASK_MDEFORMVERT;
-			}
+			previewmask = CD_MASK_MDEFORMVERT;
 		}
 	}
 
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 1c42603..074a91e 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -171,11 +171,14 @@ bool modifier_isPreview(ModifierData *md)
 {
 	ModifierTypeInfo *mti = modifierType_getInfo(md->type);
 
-	if (!(mti->flags & eModifierTypeFlag_UsesPreview))
+	/* Constructive modifiers are highly likely to also modify data like vgroups or vcol! */
+	if (!((mti->flags & eModifierTypeFlag_UsesPreview) || (mti->type == eModifierTypeType_Constructive))) {
 		return false;
+	}
 
-	if (md->mode & eModifierMode_Realtime)
+	if (md->mode & eModifierMode_Realtime) {
 		return true;
+	}
 
 	return false;
 }




More information about the Bf-blender-cvs mailing list