Commit: 9f69f7f70019cf9066e4bacce363b8364af4eee7
Author: Bastien Montagne
Date:   Tue Mar 17 18:14:38 2015 +0100
Branches: blender-v2.74-release
https://developer.blender.org/rB9f69f7f70019cf9066e4bacce363b8364af4eee7

Fix T44027: Normal Edit Mod : Radial from object normals affected by target 
object scale.

The way we were getting diff to apply to vcos from target object was just bad!

Also, fixed another related issue - negated scale would be clamped to nearly 
zero,
now only consider absolute version of size (we do not care about its sign here 
anyway).

This should be backported to 2.74 (with previous commit too).

===================================================================

M       source/blender/modifiers/intern/MOD_normal_edit.c

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_normal_edit.c 
b/source/blender/modifiers/intern/MOD_normal_edit.c
index db20823..88b721c 100644
--- a/source/blender/modifiers/intern/MOD_normal_edit.c
+++ b/source/blender/modifiers/intern/MOD_normal_edit.c
@@ -60,7 +60,8 @@ static void generate_vert_coordinates(
 
        /* Get size (i.e. deformation of the spheroid generating normals), 
either from target object, or own geometry. */
        if (ob_center) {
-               copy_v3_v3(r_size, ob_center->size);
+               /* Not we are not interested in signs here - they are even 
troublesome actually, due to security clamping! */
+               abs_v3_v3(r_size, ob_center->size);
        }
        else {
                minmax_v3v3_v3_array(min_co, max_co, r_cos, num_verts);
@@ -80,12 +81,10 @@ static void generate_vert_coordinates(
 
        if (ob_center) {
                /* Translate our coordinates so that center of ob_center is at 
(0, 0, 0). */
-               float mat[4][4];
-
-               /* Get ob_center coordinates in ob local coordinates. */
-               invert_m4_m4(mat, ob_center->obmat);
-               mul_m4_m4m4(mat, mat, ob->obmat);
-               copy_v3_v3(diff, mat[3]);
+               /* Get ob_center (world) coordinates in ob local coordinates.
+                * No need to take into accound ob_center's space here, see 
T44027. */
+               mul_v3_m4v3(diff, ob->obmat, ob_center->obmat[3]);
+               negate_v3(diff);
 
                do_diff = true;
        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to