[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31073] branches/render25/source/blender: Render Branch: quick durian hack for final tweaks, hair particle system can now

Brecht Van Lommel brecht at blender.org
Thu Aug 5 19:19:35 CEST 2010


Revision: 31073
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31073
Author:   blendix
Date:     2010-08-05 19:19:35 +0200 (Thu, 05 Aug 2010)

Log Message:
-----------
Render Branch: quick durian hack for final tweaks, hair particle system can now
copy coordinates from a mesh object (set Source object in Render panel).

The mesh object can be created by using Convert on the particle system modifier,
after which any mesh modifiers can be applied to it. Ensure that the render path
steps is the same as display path steps, otherwise this doesn't work.

Modified Paths:
--------------
    branches/render25/source/blender/blenkernel/intern/depsgraph.c
    branches/render25/source/blender/blenkernel/intern/object.c
    branches/render25/source/blender/blenkernel/intern/particle.c
    branches/render25/source/blender/blenloader/intern/readfile.c
    branches/render25/source/blender/makesdna/DNA_particle_types.h
    branches/render25/source/blender/makesrna/intern/rna_particle.c

Modified: branches/render25/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/depsgraph.c	2010-08-05 16:55:01 UTC (rev 31072)
+++ branches/render25/source/blender/blenkernel/intern/depsgraph.c	2010-08-05 17:19:35 UTC (rev 31073)
@@ -576,6 +576,11 @@
 			   }
 			}
 
+			if(psys->source_ob) {
+				node2 = dag_get_node(dag, psys->source_ob);
+				dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA, "Particle Coordinate Copy");
+			}
+
 			if(part->ren_as == PART_DRAW_OB && part->dup_ob) {
 				node2 = dag_get_node(dag, part->dup_ob);
 				dag_add_relation(dag, node, node2, DAG_RL_OB_OB, "Particle Object Visualisation");

Modified: branches/render25/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/object.c	2010-08-05 16:55:01 UTC (rev 31072)
+++ branches/render25/source/blender/blenkernel/intern/object.c	2010-08-05 17:19:35 UTC (rev 31073)
@@ -478,6 +478,11 @@
 					obt->recalc |= OB_RECALC_DATA;
 				}
 
+				if(tpsys->source_ob==ob) {
+					tpsys->source_ob= NULL;
+					obt->recalc |= OB_RECALC_DATA;
+				}
+
 				if(tpsys->part->dup_ob==ob)
 					tpsys->part->dup_ob= NULL;
 

Modified: branches/render25/source/blender/blenkernel/intern/particle.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/particle.c	2010-08-05 16:55:01 UTC (rev 31072)
+++ branches/render25/source/blender/blenkernel/intern/particle.c	2010-08-05 17:19:35 UTC (rev 31073)
@@ -2837,6 +2837,15 @@
 
 			VECCOPY(ca->co, result.co);
 			VECCOPY(ca->col, col);
+
+			if(psys->source_ob) {
+				DerivedMesh *dm = psys->source_ob->derivedFinal;
+				int vert = (steps+1)*p + k;
+
+				if(dm)
+					if(vert < dm->getNumVerts(dm))
+						dm->getVertCo(dm, vert, ca->co);
+			}
 		}
 		
 		/*--modify paths and calculate rotation & velocity--*/

Modified: branches/render25/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/render25/source/blender/blenloader/intern/readfile.c	2010-08-05 16:55:01 UTC (rev 31072)
+++ branches/render25/source/blender/blenloader/intern/readfile.c	2010-08-05 17:19:35 UTC (rev 31073)
@@ -3116,6 +3116,7 @@
 
 			psys->parent= newlibadr_us(fd, id->lib, psys->parent);
 			psys->target_ob = newlibadr(fd, id->lib, psys->target_ob);
+			psys->source_ob= newlibadr_us(fd, id->lib, psys->source_ob);
 
 			if(psys->clmd) {
 				/* XXX - from reading existing code this seems correct but intended usage of
@@ -12003,8 +12004,10 @@
 	if(ob->proxy_group)
 		expand_doit(fd, mainvar, ob->proxy_group);
 
-	for(psys=ob->particlesystem.first; psys; psys=psys->next)
+	for(psys=ob->particlesystem.first; psys; psys=psys->next) {
 		expand_doit(fd, mainvar, psys->part);
+		expand_doit(fd, mainvar, psys->source_ob);
+	}
 
 	sens= ob->sensors.first;
 	while(sens) {

Modified: branches/render25/source/blender/makesdna/DNA_particle_types.h
===================================================================
--- branches/render25/source/blender/makesdna/DNA_particle_types.h	2010-08-05 16:55:01 UTC (rev 31072)
+++ branches/render25/source/blender/makesdna/DNA_particle_types.h	2010-08-05 17:19:35 UTC (rev 31073)
@@ -230,6 +230,7 @@
 	struct Object *target_ob;
 	struct Object *lattice;
 	struct Object *parent;					/* particles from global space -> parent space */
+	struct Object *source_ob;
 
 	struct ListBase targets;				/* used for keyed and boid physics */
 

Modified: branches/render25/source/blender/makesrna/intern/rna_particle.c
===================================================================
--- branches/render25/source/blender/makesrna/intern/rna_particle.c	2010-08-05 16:55:01 UTC (rev 31072)
+++ branches/render25/source/blender/makesrna/intern/rna_particle.c	2010-08-05 17:19:35 UTC (rev 31073)
@@ -2285,6 +2285,13 @@
 	RNA_def_property_ui_text(prop, "Vertex Group Field Negate", "Negate the effect of the field vertex group");
 	RNA_def_property_update(prop, 0, "rna_Particle_reset");
 
+	/* source object */
+	prop= RNA_def_property(srna, "source_object", PROP_POINTER, PROP_NONE);
+	RNA_def_property_pointer_sdna(prop, NULL, "source_ob");
+	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_ui_text(prop, "Source Object", "Mesh to copy coordinates from, when using path visualization");
+	RNA_def_property_update(prop, 0, "rna_Particle_redo");
+
 	/* pointcache */
 	prop= RNA_def_property(srna, "point_cache", PROP_POINTER, PROP_NONE);
 	RNA_def_property_flag(prop, PROP_NEVER_NULL);





More information about the Bf-blender-cvs mailing list