Revision: 28049
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28049
Author:   blendix
Date:     2010-04-06 17:01:04 +0200 (Tue, 06 Apr 2010)

Log Message:
-----------
Fix objects instanced on hair particles not giving consistent results
when the object is transformed.

Modified Paths:
--------------
    branches/render25/source/blender/blenkernel/intern/particle.c

Modified: branches/render25/source/blender/blenkernel/intern/particle.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/particle.c       
2010-04-06 14:41:40 UTC (rev 28048)
+++ branches/render25/source/blender/blenkernel/intern/particle.c       
2010-04-06 15:01:04 UTC (rev 28049)
@@ -4215,18 +4215,11 @@
        ParticleSystem *psys = sim->psys;
        ParticleSystemModifierData *psmd = sim->psmd;
        float loc[3], nor[3], vec[3], side[3], len, obrotmat[4][4], qmat[4][4];
-       float xvec[3] = {-1.0, 0.0, 0.0}, q[4];
+       float xvec[3] = {-1.0, 0.0, 0.0}, q[4], nmat[3][3];
 
        sub_v3_v3v3(vec, (cache+cache->steps-1)->co, cache->co);
        len= normalize_v3(vec);
 
-       if(pa)
-               
psys_particle_on_emitter(psmd,sim->psys->part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc,nor,0,0,0,0);
-       else
-               psys_particle_on_emitter(psmd,
-                       (psys->part->childtype == PART_CHILD_FACES)? 
PART_FROM_FACE: PART_FROM_PARTICLE,
-                       
cpa->num,DMCACHE_ISCHILD,cpa->fuv,cpa->foffset,loc,nor,0,0,0,0);
-       
        if(psys->part->rotmode) {
                if(!pa)
                        pa= psys->particles+cpa->pa[0];
@@ -4239,6 +4232,17 @@
                mul_m4_m4m4(mat, obrotmat, qmat);
        }
        else {
+               if(pa)
+                       
psys_particle_on_emitter(psmd,sim->psys->part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc,nor,0,0,0,0);
+               else
+                       psys_particle_on_emitter(psmd,
+                               (psys->part->childtype == PART_CHILD_FACES)? 
PART_FROM_FACE: PART_FROM_PARTICLE,
+                               
cpa->num,DMCACHE_ISCHILD,cpa->fuv,cpa->foffset,loc,nor,0,0,0,0);
+               
+               copy_m3_m4(nmat, ob->imat);
+               transpose_m3(nmat);
+               mul_m3_v3(nmat, nor);
+
                /* make sure that we get a proper side vector */
                if(fabs(dot_v3v3(nor,vec))>0.999999) {
                        if(fabs(dot_v3v3(nor,xvec))>0.999999) {


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to