[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29785] branches/render25/source/blender/ render/intern/source/object_particle.c: Render Branch: quick durian hack, particle settings and material

Brecht Van Lommel brecht at blender.org
Tue Jun 29 11:48:12 CEST 2010


Revision: 29785
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29785
Author:   blendix
Date:     2010-06-29 11:48:11 +0200 (Tue, 29 Jun 2010)

Log Message:
-----------
Render Branch: quick durian hack, particle settings and material
animation are now evaluated according to particle lifetime. This
is how it worked before by default, but was disabled, maybe to be
replaced by a better system? Probably won't be merged to trunk.

Modified Paths:
--------------
    branches/render25/source/blender/render/intern/source/object_particle.c

Modified: branches/render25/source/blender/render/intern/source/object_particle.c
===================================================================
--- branches/render25/source/blender/render/intern/source/object_particle.c	2010-06-29 05:02:51 UTC (rev 29784)
+++ branches/render25/source/blender/render/intern/source/object_particle.c	2010-06-29 09:48:11 UTC (rev 29785)
@@ -29,6 +29,7 @@
 
 #include "MEM_guardedalloc.h"
 
+#include "DNA_anim_types.h"
 #include "DNA_material_types.h"
 #include "DNA_meshdata_types.h"
 #include "DNA_modifier_types.h"
@@ -37,6 +38,7 @@
 #include "BLI_math.h"
 #include "BLI_rand.h"
 
+#include "BKE_animsys.h"
 #include "BKE_DerivedMesh.h"
 #include "BKE_global.h"
 #include "BKE_lattice.h"
@@ -591,6 +593,12 @@
 	}
 }
 
+static void particle_evaluate_animation(ID *id, float ctime)
+{
+	AnimData *adt= BKE_animdata_from_id(id);
+	BKE_animsys_evaluate_animdata(id, adt, ctime, ADT_RECALC_ANIM);
+}
+
 void init_render_particle_system(Render *re, ObjectRen *obr, ParticleSystem *psys, int timeoffset)
 {
 	Object *ob= obr->ob;
@@ -836,6 +844,12 @@
 			}
 #endif // XXX old animation system
 
+			/* XXX durian hack: evaluate animation according to particle lifetime */
+			if(1) {
+				particle_evaluate_animation(&ma->id, 100.0f*pa_time);
+				particle_evaluate_animation(&part->id, 100.0f*pa_time);
+			}
+
 			hasize = ma->hasize;
 
 			/* get orco */
@@ -898,6 +912,12 @@
 			}
 #endif // XXX old animation system
 
+			/* XXX durian hack: evaluate animation according to particle lifetime */
+			if(1) {
+				particle_evaluate_animation(&ma->id, 100.0f*pa_time);
+				particle_evaluate_animation(&part->id, 100.0f*pa_time);
+			}
+
 			pa_size = psys_get_child_size(psys, cpa, cfra, &pa_time);
 
 			r_tilt = 2.0f*(PSYS_FRAND(a + 21) - 0.5f);
@@ -1118,6 +1138,12 @@
 #if 0 // XXX old animation system
 	if(ma) do_mat_ipo(re->db.scene, ma);
 #endif // XXX old animation system
+
+	/* XXX durian hack: restore animation to current frame */
+	if(1) {
+		particle_evaluate_animation(&ma->id, cfra);
+		particle_evaluate_animation(&part->id, cfra);
+	}
 	
 	if(sd.uvco)
 		MEM_freeN(sd.uvco);





More information about the Bf-blender-cvs mailing list