[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32424] trunk/blender/source/blender/ editors: bugfix [#23191] Ctrl-LMB quick extrude problem with non-perpendicular edges/faces.
Campbell Barton
ideasman42 at gmail.com
Tue Oct 12 05:23:45 CEST 2010
Revision: 32424
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32424
Author: campbellbarton
Date: 2010-10-12 05:23:44 +0200 (Tue, 12 Oct 2010)
Log Message:
-----------
bugfix [#23191] Ctrl-LMB quick extrude problem with non-perpendicular edges/faces.
also remove is_mat4_flipped() from transform_manipulator.c.
Modified Paths:
--------------
trunk/blender/source/blender/editors/mesh/editmesh_add.c
trunk/blender/source/blender/editors/transform/transform_manipulator.c
Modified: trunk/blender/source/blender/editors/mesh/editmesh_add.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_add.c 2010-10-11 22:25:28 UTC (rev 32423)
+++ trunk/blender/source/blender/editors/mesh/editmesh_add.c 2010-10-12 03:23:44 UTC (rev 32424)
@@ -141,7 +141,16 @@
done= 1;
}
}
- if(done) normalize_v3(nor);
+ if(done) {
+ float view_vec[3], cross[3];
+
+ /* correct the normal to be aligned on the view plane */
+ copy_v3_v3(view_vec, vc.rv3d->viewinv[2]);
+ mul_mat3_m4_v3(vc.obedit->imat, view_vec);
+ cross_v3_v3v3(cross, nor, view_vec);
+ cross_v3_v3v3(nor, view_vec, cross);
+ normalize_v3(nor);
+ }
/* center */
add_v3_v3v3(cent, min, max);
Modified: trunk/blender/source/blender/editors/transform/transform_manipulator.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_manipulator.c 2010-10-11 22:25:28 UTC (rev 32423)
+++ trunk/blender/source/blender/editors/transform/transform_manipulator.c 2010-10-12 03:23:44 UTC (rev 32424)
@@ -101,16 +101,6 @@
#define MAN_GHOST 1
#define MAN_MOVECOL 2
-
-static int is_mat4_flipped(float mat[][4])
-{
- float vec[3];
-
- cross_v3_v3v3(vec, mat[0], mat[1]);
- if( dot_v3v3(vec, mat[2]) < 0.0 ) return 1;
- return 0;
-}
-
/* transform widget center calc helper for below */
static void calc_tw_center(Scene *scene, float *co)
{
@@ -753,7 +743,7 @@
orthogonalize_m4(omat, axis);
glPushMatrix();
glMultMatrixf(omat);
- glFrontFace( is_mat4_flipped(omat)?GL_CW:GL_CCW);
+ glFrontFace(is_negative_m4(omat) ? GL_CW:GL_CCW);
}
}
@@ -850,12 +840,12 @@
// XXX mul_m4_m3m4(matt, t->mat, rv3d->twmat);
if (ortho) {
glMultMatrixf(matt);
- glFrontFace( is_mat4_flipped(matt)?GL_CW:GL_CCW);
+ glFrontFace(is_negative_m4(matt) ? GL_CW:GL_CCW);
}
}
else {
if (ortho) {
- glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW);
+ glFrontFace(is_negative_m4(rv3d->twmat) ? GL_CW:GL_CCW);
glMultMatrixf(rv3d->twmat);
}
}
@@ -1116,11 +1106,11 @@
copy_m4_m4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
// XXX mul_m4_m3m4(matt, t->mat, rv3d->twmat);
glMultMatrixf(matt);
- glFrontFace( is_mat4_flipped(matt)?GL_CW:GL_CCW);
+ glFrontFace(is_negative_m4(matt) ? GL_CW:GL_CCW);
}
else {
glMultMatrixf(rv3d->twmat);
- glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW);
+ glFrontFace(is_negative_m4(rv3d->twmat) ? GL_CW:GL_CCW);
}
/* axis */
@@ -1327,7 +1317,7 @@
glMultMatrixf(rv3d->twmat);
}
- glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW);
+ glFrontFace(is_negative_m4(rv3d->twmat) ? GL_CW:GL_CCW);
/* axis */
if( (G.f & G_PICKSEL)==0 ) {
More information about the Bf-blender-cvs
mailing list