From 0d4cca65933075ae26fd1dc0f51e56ad53f9205a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 24 Jun 2015 09:54:23 +1000 Subject: Fix edge/vert slide UV-correct & zero length edges When calculating loop angle weighting, skip overlapping vertices. --- source/blender/editors/transform/transform.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 3a8e7cfa91a..bf09fd3d00e 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -5324,12 +5324,22 @@ static void slide_origdata_create_data_vert( loop_weights = BLI_array_alloca(loop_weights, l_num); for (j = 0; j < l_num; j++) { BMLoop *l = BM_iter_step(&liter); + BMLoop *l_prev, *l_next; void **val_p; if (!BLI_ghash_ensure_p(sod->origfaces, l->f, &val_p)) { BMFace *f_copy = BM_face_copy(sod->bm_origfaces, bm, l->f, true, true); *val_p = f_copy; } - loop_weights[j] = BM_loop_calc_face_angle(l); + + if ((l_prev = BM_loop_find_prev_nodouble(l, l->next, FLT_EPSILON)) && + (l_next = BM_loop_find_next_nodouble(l, l_prev, FLT_EPSILON))) + { + loop_weights[j] = angle_v3v3v3(l_prev->v->co, l->v->co, l_next->v->co); + } + else { + loop_weights[j] = 0.0f; + } + } /* store cd_loop_groups */ -- cgit v1.2.3