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;
 }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to