Revision: 38141
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38141
Author:   blendix
Date:     2011-07-06 10:05:27 +0000 (Wed, 06 Jul 2011)
Log Message:
-----------
Fix #27876: particles instancing a whole group didn't take group offset into 
account.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/anim.c

Modified: trunk/blender/source/blender/blenkernel/intern/anim.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/anim.c       2011-07-06 
09:58:29 UTC (rev 38140)
+++ trunk/blender/source/blender/blenkernel/intern/anim.c       2011-07-06 
10:05:27 UTC (rev 38141)
@@ -719,12 +719,13 @@
                /* note, if you check on layer here, render goes wrong... it 
still deforms verts and uses parent imat */
                if(go->ob!=ob) {
                        
-                       /* Group Dupli Offset, should apply after everything 
else */
-                       if (group->dupli_ofs[0] || group->dupli_ofs[1] || 
group->dupli_ofs[2]) {
+                       /* group dupli offset, should apply after everything 
else */
+                       if(!is_zero_v3(group->dupli_ofs)) {
                                copy_m4_m4(tmat, go->ob->obmat);
                                sub_v3_v3v3(tmat[3], tmat[3], group->dupli_ofs);
                                mul_m4_m4m4(mat, tmat, ob->obmat);
-                       } else {
+                       }
+                       else {
                                mul_m4_m4m4(mat, go->ob->obmat, ob->obmat);
                        }
                        
@@ -1395,7 +1396,17 @@
 
                        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++) {
-                                       mul_m4_m4m4(tmat, oblist[b]->obmat, 
pamat);
+
+                                       /* group dupli offset, should apply 
after everything else */
+                                       
if(!is_zero_v3(part->dup_group->dupli_ofs)) {
+                                               copy_m4_m4(tmat, 
oblist[b]->obmat);
+                                               sub_v3_v3v3(tmat[3], tmat[3], 
part->dup_group->dupli_ofs);
+                                               mul_m4_m4m4(tmat, tmat, pamat);
+                                       }
+                                       else {
+                                               mul_m4_m4m4(tmat, 
oblist[b]->obmat, pamat);
+                                       }
+
                                        mul_mat3_m4_fl(tmat, size*scale);
                                        if(par_space_mat)
                                                mul_m4_m4m4(mat, tmat, 
par_space_mat);

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

Reply via email to