Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-01-24 20:18:20 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-01-24 20:18:20 +0400
commit4af4863baf64e14959454a10443e0ae06b518e7e (patch)
tree06696b03fd54211a971e60f01fd176fcfe963fb9 /source/blender/blenkernel/intern/constraint.c
parent644e44e7b6f5d10915f44282fcd728153d71e4fe (diff)
parent1f9e25ac1a7851ab2503b88564c0d480b9e125cf (diff)
svn merge ^/trunk/blender -r43639:43664
Diffstat (limited to 'source/blender/blenkernel/intern/constraint.c')
-rw-r--r--source/blender/blenkernel/intern/constraint.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index 7cdd61e1402..e207334bd45 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -2777,8 +2777,7 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
/* store Z orientation before destroying obmat */
normalize_v3_v3(zz, cob->matrix[2]);
- dist = len_v3v3(cob->matrix[3], ct->matrix[3]);
- /* XXX What was all that for??? Makes the constraint buggy with scaled objects, see #29940. */
+ /* XXX That makes the constraint buggy with asymmetrically scaled objects, see #29940. */
/* sub_v3_v3v3(vec, cob->matrix[3], ct->matrix[3]);*/
/* vec[0] /= size[0];*/
/* vec[1] /= size[1];*/
@@ -2786,10 +2785,14 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
/* dist = normalize_v3(vec);*/
+ dist = len_v3v3(cob->matrix[3], ct->matrix[3]);
+ /* Only Y constrained object axis scale should be used, to keep same length when scaling it. */
+ dist /= size[1];
+
/* data->orglength==0 occurs on first run, and after 'R' button is clicked */
- if (data->orglength == 0)
+ if (data->orglength == 0)
data->orglength = dist;
- if (data->bulge == 0)
+ if (data->bulge == 0)
data->bulge = 1.0;
scale[1] = dist/data->orglength;