diff options
author | Lukas Toenne <lukas.toenne@googlemail.com> | 2012-04-20 16:55:57 +0400 |
---|---|---|
committer | Lukas Toenne <lukas.toenne@googlemail.com> | 2012-04-20 16:55:57 +0400 |
commit | 71ac500fc2bc675ab34b91759c0712854fe7ee8c (patch) | |
tree | 5fc42f62ed0e7b78ea4600a17d26cb2d7c87ca3b /source/blender/blenkernel | |
parent | 5874106ea7d9d6813b7f60027d3ee8febb98b8c7 (diff) |
Fix for particle dupli group relative offsets. The relative transforms of objects in the instanced group were not scaled according to the particle size, which would be expected when rendering as 'Whole Group'. Requested by Francesco Siddi (fsiddi) over IRC.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/anim.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 55b3a3f3e42..b547fedebb5 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -1407,17 +1407,16 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p if (part->ren_as==PART_DRAW_GR && psys->part->draw & PART_DRAW_WHOLE_GR) { for (go= part->dup_group->gobject.first, b=0; go; go= go->next, b++) { + copy_m4_m4(tmat, oblist[b]->obmat); + /* apply particle scale */ + mul_mat3_m4_fl(tmat, size*scale); + mul_v3_fl(tmat[3], size*scale); /* group dupli offset, should apply after everything else */ - if (!is_zero_v3(part->dup_group->dupli_ofs)) { - copy_m4_m4(tmat, oblist[b]->obmat); + if (!is_zero_v3(part->dup_group->dupli_ofs)) sub_v3_v3v3(tmat[3], tmat[3], part->dup_group->dupli_ofs); - mult_m4_m4m4(tmat, pamat, tmat); - } - else { - mult_m4_m4m4(tmat, pamat, oblist[b]->obmat); - } + /* individual particle transform */ + mult_m4_m4m4(tmat, pamat, tmat); - mul_mat3_m4_fl(tmat, size*scale); if (par_space_mat) mult_m4_m4m4(mat, par_space_mat, tmat); else |