[Bf-blender-cvs] [7c04c3c] master: Use simpler method to check the planes view aligned
Campbell Barton
noreply at git.blender.org
Tue Feb 2 02:48:20 CET 2016
Commit: 7c04c3c960bc1351433f43aa7e83ff041a2c2cc3
Author: Campbell Barton
Date: Tue Feb 2 12:03:32 2016 +1100
Branches: master
https://developer.blender.org/rB7c04c3c960bc1351433f43aa7e83ff041a2c2cc3
Use simpler method to check the planes view aligned
===================================================================
M source/blender/editors/transform/transform_constraints.c
===================================================================
diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c
index 17adff9..beeba7c 100644
--- a/source/blender/editors/transform/transform_constraints.c
+++ b/source/blender/editors/transform/transform_constraints.c
@@ -280,9 +280,7 @@ static void axisProjection(TransInfo *t, const float axis[3], const float in[3],
*/
static bool isPlaneProjectionViewAligned(TransInfo *t)
{
- RegionView3D *rv3d = t->ar->regiondata;
const float eps = 0.001f;
-
const float *constraint_vector[2];
int n = 0;
for (int i = 0; i < 3; i++) {
@@ -295,28 +293,15 @@ static bool isPlaneProjectionViewAligned(TransInfo *t)
}
BLI_assert(n == 2);
- float points[2][3];
- add_v3_v3v3(points[0], constraint_vector[0], t->center_global);
- add_v3_v3v3(points[1], constraint_vector[1], t->center_global);
-
- float coords[3][2];
- projectFloatView(t, points[0], coords[0]);
- projectFloatView(t, t->center_global, coords[1]);
- projectFloatView(t, points[1], coords[2]);
-
- float dir[2][2];
-
- sub_v2_v2v2(dir[0], coords[0], coords[1]);
- sub_v2_v2v2(dir[1], coords[2], coords[1]);
+ float view_to_plane[3], plane_normal[3];
- /* remove pixel scaling */
- float scale = mul_project_m4_v3_zfac((float(*)[4])rv3d->persmat, t->center_global) * rv3d->pixsize;
- mul_v2_fl(dir[0], scale);
- mul_v2_fl(dir[1], scale);
+ getViewVector(t, t->center_global, view_to_plane);
- float area = fabsf(cross_v2v2(dir[0], dir[1]));
+ cross_v3_v3v3(plane_normal, constraint_vector[0], constraint_vector[1]);
+ normalize_v3(plane_normal);
- return (area < eps);
+ float factor = dot_v3v3(plane_normal, view_to_plane);
+ return fabsf(factor) < eps;
}
static void planeProjection(TransInfo *t, const float in[3], float out[3])
More information about the Bf-blender-cvs
mailing list