From 863cc2bbd59361f196a10b08dc52f1f32ccc1e86 Mon Sep 17 00:00:00 2001 From: Jasper van de Gronde Date: Fri, 3 Apr 2009 15:16:18 +0000 Subject: And now gradients should be (almost) perfect... The gradient vector is set up to be a good approximation to the "true" gradient and it is used consistently throughout (I hope). Also some other, minor, tweaks and a small bugfix. (bzr r7616) --- src/display/nr-3dutils.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/display/nr-3dutils.cpp') diff --git a/src/display/nr-3dutils.cpp b/src/display/nr-3dutils.cpp index dd1419f2b..89c21940a 100644 --- a/src/display/nr-3dutils.cpp +++ b/src/display/nr-3dutils.cpp @@ -125,13 +125,14 @@ void compute_surface_normal(Fvector &N, gdouble ss, NRPixBlock *in, int i, int j alpha_idx_y = alpha_idx + 4*(k-1)*dy*w; for (l = START(x_carac); l <= FINISH(x_carac); l++) { alpha = (data + alpha_idx_y + 4*dx*(l-1))[3]; - accu_x += K_X[y_carac][x_carac][k][l] * alpha / 255; - accu_y += K_X[x_carac][y_carac][l][k] * alpha / 255; + accu_x += K_X[y_carac][x_carac][k][l] * alpha; + accu_y += K_X[x_carac][y_carac][l][k] * alpha; } } - N[X_3D] = -1 * ss * FACTOR_X[y_carac][x_carac] * accu_x / dx; - N[Y_3D] = -1 * ss * FACTOR_X[x_carac][y_carac] * accu_y / dy; - N[Z_3D] = 1; + ss /= 255.0; // Correction for scale of pixel values + N[X_3D] = -ss * FACTOR_X[y_carac][x_carac] * accu_x / dx; + N[Y_3D] = -ss * FACTOR_X[x_carac][y_carac] * accu_y / dy; + N[Z_3D] = 1.0; normalize_vector(N); //std::cout << "(" << N[X_3D] << ", " << N[Y_3D] << ", " << N[Z_3D] << ")" << std::endl; } -- cgit v1.2.3