From 71ac500fc2bc675ab34b91759c0712854fe7ee8c Mon Sep 17 00:00:00 2001 From: Lukas Toenne Date: Fri, 20 Apr 2012 12:55:57 +0000 Subject: 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. --- source/blender/blenkernel/intern/anim.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'source/blender/blenkernel/intern/anim.c') 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 -- cgit v1.2.3