diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-08-22 17:10:43 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-08-22 17:10:43 +0400 |
commit | 97ee630dcd18d98bb04dbcef9fdfe6bcc897ce4b (patch) | |
tree | 6589de559d9d6822c0629a59bc4e4f818ebc9e5b /source/blender/blenkernel/intern | |
parent | 61dddcb800963390b348c977d307bec3620a443a (diff) |
Fix #32201: particle size compatibility broken for object/group duplication.
After 2.63 there was a bugfix to take object scale into account for the duplicated
objects, but this breaks compatibility on earlier files. Now there is an option to
control if the scale should be used or not.
Scale is used by default on newer files, and not used on older ones.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/anim.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 33cdede6fce..6e857bacb1b 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -1469,6 +1469,18 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p quat_to_mat4(obmat, q); obmat[3][3] = 1.0f; + /* add scaling if requested */ + if ((part->draw & PART_DRAW_NO_SCALE_OB) == 0) + mult_m4_m4m4(obmat, obmat, size_mat); + } + else if (part->draw & PART_DRAW_NO_SCALE_OB) { + /* remove scaling */ + float size_mat[4][4], original_size[3]; + + mat4_to_size(original_size, obmat); + size_to_mat4(size_mat, original_size); + invert_m4(size_mat); + mult_m4_m4m4(obmat, obmat, size_mat); } |