diff options
author | Campbell Barton <campbell@blender.org> | 2022-05-05 13:36:15 +0300 |
---|---|---|
committer | Campbell Barton <campbell@blender.org> | 2022-05-05 13:36:15 +0300 |
commit | 78fc5ea1c398f70d22cda72be33c105146c0d542 (patch) | |
tree | 84482209d4a5bf317a6dae196ade6e0c67df9d57 /source/blender/blenkernel/BKE_mesh.h | |
parent | 598917f49b3564c1ca1b28907547332d69a85328 (diff) |
Workaround T81065: Merge UV's when applying modifiers
Support merging UV's that share the same vertex and are very close when
applying modifiers.
This is needed to prevent UV's becoming "detached" which can happen when
applying the subdivision surface modifier.
This regression was caused by [0] which removed selection threshold for
nearby coordinates. While restoring the UV selection threshold could be
done - some selection operations that walk around connected UV fans
wouldn't behave in a deterministic way (such as select shortest path).
There are also other cases where UV's may be compared without a
threshold such as tangent calculation and exporters which have their own
logic to handling UV's.
Also resolves T86896, T89903.
[0]: b88dd3b8e7b9c02ae08d4679bb427963c5d21250
Reviewed By: sergey
Ref D14841
Diffstat (limited to 'source/blender/blenkernel/BKE_mesh.h')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index bd9bacb52c1..091f30825ae 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -893,6 +893,14 @@ struct Mesh *BKE_mesh_merge_verts(struct Mesh *mesh, int tot_vtargetmap, int merge_mode); +/** + * Account for custom-data such as UV's becoming detached because of of imprecision + * in custom-data interpolation. + * Without running this operation subdivision surface can cause UV's to be disconnected, + * see: T81065. + */ +void BKE_mesh_merge_customdata_for_apply_modifier(struct Mesh *me); + /* Flush flags. */ /** |