Fix T101883: Issue applying modifier to mesh with shape keys
Caused by 21f2bacad9
which misunderstood the logic handling
shape keys in this function. The shape key on the original mesh in the
main data-base should be cleared if the "no-main" mesh doesn't have any
shape key layers and the vertex count has changed. The complexity is
necessary because shape keys are stored differently on original and
evaluated meshes.
Also change to "Warn" because this is expected behavior in some cases,
like when applying a geometry nodes modifier that creates a new mesh
from scratch.
This commit is contained in:
parent
d57352b114
commit
be32882e1c
Notes:
blender-bot
2023-02-14 08:08:56 +01:00
Referenced by issue #101883, Regression: Visual Geometry to Mesh create bonkers mesh if the applied mesh has shapekeys.
|
@ -1313,6 +1313,7 @@ void BKE_mesh_nomain_to_mesh(Mesh *mesh_src, Mesh *mesh_dst, Object *ob)
|
|||
CustomData_duplicate_referenced_layers(&mesh_src->pdata, mesh_src->totpoly);
|
||||
CustomData_duplicate_referenced_layers(&mesh_src->ldata, mesh_src->totloop);
|
||||
|
||||
const bool verts_num_changed = mesh_dst->totvert != mesh_src->totvert;
|
||||
mesh_dst->totvert = mesh_src->totvert;
|
||||
mesh_dst->totedge = mesh_src->totedge;
|
||||
mesh_dst->totpoly = mesh_src->totpoly;
|
||||
|
@ -1339,11 +1340,10 @@ void BKE_mesh_nomain_to_mesh(Mesh *mesh_src, Mesh *mesh_dst, Object *ob)
|
|||
const int uid_active = ob ? find_object_active_key_uid(*key_dst, *ob) : -1;
|
||||
move_shapekey_layers_to_keyblocks(*mesh_dst, mesh_src->vdata, *key_dst, uid_active);
|
||||
}
|
||||
else if (mesh_src->totvert != mesh_dst->totvert) {
|
||||
CLOG_ERROR(&LOG, "Mesh in Main '%s' lost shape keys", mesh_src->id.name);
|
||||
if (mesh_src->key) {
|
||||
id_us_min(&mesh_src->key->id);
|
||||
}
|
||||
else if (verts_num_changed) {
|
||||
CLOG_WARN(&LOG, "Shape key data lost when replacing mesh '%s' in Main", mesh_src->id.name);
|
||||
id_us_min(&mesh_dst->key->id);
|
||||
mesh_dst->key = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue