diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2017-05-22 17:15:03 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2017-05-22 17:43:46 +0300 |
commit | e3d63215308fc2c8b639ee00845344ea735a46e3 (patch) | |
tree | 7e6c42dce11d581ed6e654d9647ec02d204111d4 | |
parent | 81667b770ccdb41b3e63f5fdea75fe7da56b0d07 (diff) |
Fix T51520: Broken vertex weights after two mesh joining.
Root of the issue here was that two stupid modifiers could create named
vgroup CD layers (vgroup editing ones... shame on me :") ).
Fix that, and added some versionning code to also fix 'corrupted' blend
files created by those so far.
-rw-r--r-- | source/blender/blenloader/intern/versioning_270.c | 5 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_weightvgedit.c | 3 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_weightvgmix.c | 3 |
3 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c index 810e6507c91..008ef4e60cd 100644 --- a/source/blender/blenloader/intern/versioning_270.c +++ b/source/blender/blenloader/intern/versioning_270.c @@ -1643,6 +1643,11 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main) scene->r.im_format.exr_codec = R_IMF_EXR_CODEC_DWAA; } } + + /* Fix related to VGroup modifiers creating named defgroup CD layers! See T51520. */ + for (Mesh *me = main->mesh.first; me; me = me->id.next) { + CustomData_set_layer_name(&me->vdata, CD_MDEFORMVERT, 0, ""); + } } } diff --git a/source/blender/modifiers/intern/MOD_weightvgedit.c b/source/blender/modifiers/intern/MOD_weightvgedit.c index 2a822ac07b5..cd30b54350c 100644 --- a/source/blender/modifiers/intern/MOD_weightvgedit.c +++ b/source/blender/modifiers/intern/MOD_weightvgedit.c @@ -226,8 +226,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der if (!do_add) return dm; /* Else, add a valid data layer! */ - dvert = CustomData_add_layer_named(&dm->vertData, CD_MDEFORMVERT, CD_CALLOC, - NULL, numVerts, wmd->defgrp_name); + dvert = CustomData_add_layer(&dm->vertData, CD_MDEFORMVERT, CD_CALLOC, NULL, numVerts); /* Ultimate security check. */ if (!dvert) return dm; diff --git a/source/blender/modifiers/intern/MOD_weightvgmix.c b/source/blender/modifiers/intern/MOD_weightvgmix.c index 9bff7bf11f1..1b3188c83b3 100644 --- a/source/blender/modifiers/intern/MOD_weightvgmix.c +++ b/source/blender/modifiers/intern/MOD_weightvgmix.c @@ -282,8 +282,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der if (wmd->mix_set != MOD_WVG_SET_ALL) return dm; /* Else, add a valid data layer! */ - dvert = CustomData_add_layer_named(&dm->vertData, CD_MDEFORMVERT, CD_CALLOC, - NULL, numVerts, wmd->defgrp_name_a); + dvert = CustomData_add_layer(&dm->vertData, CD_MDEFORMVERT, CD_CALLOC, NULL, numVerts); /* Ultimate security check. */ if (!dvert) return dm; |