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.
This commit is contained in:
parent
81667b770c
commit
e3d6321530
@ -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, "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user