[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35693] trunk/blender/source/blender/ blenkernel/intern/particle_system.c: Fixing the particle emitter interpolation (#25385 & #26493) further

Janne Karhu jhkarh at gmail.com
Tue Mar 22 13:53:19 CET 2011


Revision: 35693
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35693
Author:   jhk
Date:     2011-03-22 12:53:18 +0000 (Tue, 22 Mar 2011)
Log Message:
-----------
Fixing the particle emitter interpolation (#25385 & #26493) further
* The interpolation should only be done if the dynamics were calculated, since otherwise animation keys can't be set after parenting.

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

Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c	2011-03-22 11:44:46 UTC (rev 35692)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c	2011-03-22 12:53:18 UTC (rev 35693)
@@ -1577,7 +1577,7 @@
 	part=psys->part;
 	
 	/* get precise emitter matrix if particle is born */
-	if(part->type!=PART_HAIR && pa->time < cfra && pa->time >= sim->psys->cfra) {
+	if(part->type!=PART_HAIR && dtime > 0.f && pa->time < cfra && pa->time >= sim->psys->cfra) {
 		/* we have to force RECALC_ANIM here since where_is_objec_time only does drivers */
 		while(ob) {
 			BKE_animsys_evaluate_animdata(&ob->id, ob->adt, pa->time, ADT_RECALC_ANIM);
@@ -4334,17 +4334,19 @@
 		}
 	}
 
+	if(psys->cfra < cfra) {
+		/* make sure emitter is left at correct time (particle emission can change this) */
+		while(ob) {
+			BKE_animsys_evaluate_animdata(&ob->id, ob->adt, cfra, ADT_RECALC_ANIM);
+			ob = ob->parent;
+		}
+		ob = sim.ob;
+		where_is_object_time(scene, ob, cfra);
+	}
+
 	psys->cfra = cfra;
 	psys->recalc = 0;
 
-	/* make sure emitter is left at correct time (particle emission can change this) */
-	while(ob) {
-		BKE_animsys_evaluate_animdata(&ob->id, ob->adt, cfra, ADT_RECALC_ANIM);
-		ob = ob->parent;
-	}
-	ob = sim.ob;
-	where_is_object_time(scene, ob, cfra);
-
 	/* save matrix for duplicators, at rendertime the actual dupliobject's matrix is used so don't update! */
 	if(psys->renderdata==0)
 		invert_m4_m4(psys->imat, ob->obmat);




More information about the Bf-blender-cvs mailing list