From b900a5e4527035b7eaf02d5df4b5fcaaeee52703 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 23 Apr 2020 16:14:07 +1000 Subject: Fix T74172: Mirror with bisect results in holes Enable snap-to-center when bisecting. --- source/blender/blenkernel/intern/mesh_mirror.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source/blender/blenkernel/intern/mesh_mirror.c') diff --git a/source/blender/blenkernel/intern/mesh_mirror.c b/source/blender/blenkernel/intern/mesh_mirror.c index 9799d97d1cc..49ffa9561ce 100644 --- a/source/blender/blenkernel/intern/mesh_mirror.c +++ b/source/blender/blenkernel/intern/mesh_mirror.c @@ -77,7 +77,7 @@ Mesh *BKE_mesh_mirror_bisect_on_mirror_plane(MirrorModifierData *mmd, } plane_from_point_normal_v3(plane, plane_co, plane_no); - BM_mesh_bisect_plane(bm, plane, false, false, 0, 0, bisect_distance); + BM_mesh_bisect_plane(bm, plane, true, false, 0, 0, bisect_distance); /* Plane definitions for vert killing. */ float plane_offset[4]; -- cgit v1.2.3 From 2a2aa6abd0ae45133b083368be4bee77a1a420c4 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Thu, 7 May 2020 12:34:13 +0200 Subject: Fix T75793: Mirror modifier UV flip only works on first UDIM Tile Was flipping around the 0-1 range, now (optionally) flip around each tile. Also added this option for BMesh bmo_mirror. Reviewed By: campbellbarton Maniphest Tasks: T75793 Differential Revision: https://developer.blender.org/D7460 --- source/blender/blenkernel/intern/mesh_mirror.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'source/blender/blenkernel/intern/mesh_mirror.c') diff --git a/source/blender/blenkernel/intern/mesh_mirror.c b/source/blender/blenkernel/intern/mesh_mirror.c index 49ffa9561ce..d9be9a99b2b 100644 --- a/source/blender/blenkernel/intern/mesh_mirror.c +++ b/source/blender/blenkernel/intern/mesh_mirror.c @@ -290,6 +290,8 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis(MirrorModifierData *mmd, (is_zero_v2(mmd->uv_offset_copy) == false)) { const bool do_mirr_u = (mmd->flag & MOD_MIR_MIRROR_U) != 0; const bool do_mirr_v = (mmd->flag & MOD_MIR_MIRROR_V) != 0; + /* If set, flip around center of each tile. */ + const bool do_mirr_udim = (mmd->flag & MOD_MIR_MIRROR_UDIM) != 0; const int totuv = CustomData_number_of_layers(&result->ldata, CD_MLOOPUV); @@ -299,10 +301,22 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis(MirrorModifierData *mmd, dmloopuv += j; /* second set of loops only */ for (; j-- > 0; dmloopuv++) { if (do_mirr_u) { - dmloopuv->uv[0] = 1.0f - dmloopuv->uv[0] + mmd->uv_offset[0]; + float u = dmloopuv->uv[0]; + if (do_mirr_udim) { + dmloopuv->uv[0] = ceilf(u) - fmodf(u, 1.0f) + mmd->uv_offset[0]; + } + else { + dmloopuv->uv[0] = 1.0f - u + mmd->uv_offset[0]; + } } if (do_mirr_v) { - dmloopuv->uv[1] = 1.0f - dmloopuv->uv[1] + mmd->uv_offset[1]; + float v = dmloopuv->uv[1]; + if (do_mirr_udim) { + dmloopuv->uv[1] = ceilf(v) - fmodf(v, 1.0f) + mmd->uv_offset[1]; + } + else { + dmloopuv->uv[1] = 1.0f - v + mmd->uv_offset[1]; + } } dmloopuv->uv[0] += mmd->uv_offset_copy[0]; dmloopuv->uv[1] += mmd->uv_offset_copy[1]; -- cgit v1.2.3