[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31919] trunk/blender/source/blender/ blenkernel/intern/anim.c: Fix for [#20350] particles are offset from emittor in dupli-objects
Janne Karhu
jhkarh at gmail.com
Tue Sep 14 03:43:51 CEST 2010
Revision: 31919
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31919
Author: jhk
Date: 2010-09-14 03:43:46 +0200 (Tue, 14 Sep 2010)
Log Message:
-----------
Fix for [#20350] particles are offset from emittor in dupli-objects
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 2010-09-14 01:11:54 UTC (rev 31918)
+++ trunk/blender/source/blender/blenkernel/intern/anim.c 2010-09-14 01:43:46 UTC (rev 31919)
@@ -1357,19 +1357,25 @@
VECCOPY(vec, obmat[3]);
obmat[3][0] = obmat[3][1] = obmat[3][2] = 0.0f;
- copy_m4_m4(mat, pamat);
+ /* Normal particles and cached hair live in global space so we need to
+ * remove the real emitter's transformation before 2nd order duplication.
+ */
+ if(par_space_mat)
+ mul_m4_m4m4(mat, pamat, psys->imat);
+ else
+ copy_m4_m4(mat, pamat);
mul_m4_m4m4(tmat, obmat, mat);
mul_mat3_m4_fl(tmat, size*scale);
- if(part->draw & PART_DRAW_GLOBAL_OB)
- VECADD(tmat[3], tmat[3], vec);
-
if(par_space_mat)
mul_m4_m4m4(mat, tmat, par_space_mat);
else
copy_m4_m4(mat, tmat);
+ if(part->draw & PART_DRAW_GLOBAL_OB)
+ VECADD(mat[3], mat[3], vec);
+
dob= new_dupli_object(lb, ob, mat, ob->lay, counter, OB_DUPLIPARTS, animated);
copy_m4_m4(dob->omat, oldobmat);
if(G.rendering)
More information about the Bf-blender-cvs
mailing list