[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54177] trunk/blender/source/blender/ editors/transform/transform.c: tweak to edge slide - use a quads opposite vertex when both edges share a quad , gives nicer results.
Campbell Barton
ideasman42 at gmail.com
Tue Jan 29 06:30:46 CET 2013
Revision: 54177
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54177
Author: campbellbarton
Date: 2013-01-29 05:30:39 +0000 (Tue, 29 Jan 2013)
Log Message:
-----------
tweak to edge slide - use a quads opposite vertex when both edges share a quad, gives nicer results.
Modified Paths:
--------------
trunk/blender/source/blender/editors/transform/transform.c
Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c 2013-01-29 05:18:30 UTC (rev 54176)
+++ trunk/blender/source/blender/editors/transform/transform.c 2013-01-29 05:30:39 UTC (rev 54177)
@@ -4917,10 +4917,19 @@
len_v3_ensure(vec_accum, vec_accum_len / (float)i);
}
else {
+ /* When there is no edge to slide along,
+ * we must slide along the vector defined by the face we're attach to */
BMLoop *l_tmp = BM_face_vert_share_loop(l_first->f, v);
+ float tvec[3];
- if (ELEM(l_tmp->e, e_prev, e_next) && ELEM(l_tmp->prev->e, e_prev, e_next)) {
- float tvec[3];
+ BLI_assert(ELEM(l_tmp->e, e_prev, e_next) && ELEM(l_tmp->prev->e, e_prev, e_next));
+
+ if (l_tmp->f->len == 4) {
+ /* we could use code below, but in this case
+ * sliding diagonally across the quad works well */
+ sub_v3_v3v3(vec_accum, l_tmp->next->next->v->co, v->co);
+ }
+ else {
BM_loop_calc_face_tangent(l_tmp, vec_accum);
if (!BM_loop_is_convex(l_tmp)) {
negate_v3(vec_accum);
@@ -4929,9 +4938,6 @@
cross_v3_v3v3(vec_accum, l_tmp->f->no, tvec);
len_v3_ensure(vec_accum, (BM_edge_calc_length(e_prev) + BM_edge_calc_length(e_next)) / 2.0f);
}
- else {
- BLI_assert(0);
- }
}
copy_v3_v3(r_slide_vec, vec_accum);
More information about the Bf-blender-cvs
mailing list