[Bf-blender-cvs] [1e96bd87dbf] hair_guides_grooming: Extended hair follicle distribution function that allows geometry filtering.

Lukas Tönne noreply at git.blender.org
Thu May 24 19:43:56 CEST 2018


Commit: 1e96bd87dbf5fe463217fd3ea6d2a2cfa58022e2
Author: Lukas Tönne
Date:   Thu May 24 18:32:13 2018 +0100
Branches: hair_guides_grooming
https://developer.blender.org/rB1e96bd87dbf5fe463217fd3ea6d2a2cfa58022e2

Extended hair follicle distribution function that allows geometry filtering.

===================================================================

M	source/blender/blenkernel/BKE_hair.h
M	source/blender/blenkernel/intern/hair.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_hair.h b/source/blender/blenkernel/BKE_hair.h
index c7c6a87c677..f10d3971153 100644
--- a/source/blender/blenkernel/BKE_hair.h
+++ b/source/blender/blenkernel/BKE_hair.h
@@ -43,6 +43,7 @@ struct HairDrawSettings;
 struct HairGuideData;
 struct Mesh;
 struct MeshSample;
+struct MLoop;
 struct Object;
 
 /* Create a new hair system instance */
@@ -106,6 +107,18 @@ void BKE_hair_generate_follicles(
         unsigned int seed,
         int count);
 
+/* Distribute hair follicles on a scalp mesh.
+ * Loop weight function controls follicle density on the scalp.
+ */
+typedef float (*HairMeshLoopWeightFp)(struct Mesh *mesh, struct MLoop *loop, unsigned int index, void *userdata);
+void BKE_hair_generate_follicles_ex(
+        struct HairSystem* hsys,
+        struct Mesh *scalp,
+        unsigned int seed,
+        int count,
+        HairMeshLoopWeightFp loop_weight_cb,
+        void *userdata);
+
 void BKE_hair_bind_follicles(struct HairSystem *hsys, struct Mesh *scalp);
 
 /* === Draw Settings === */
diff --git a/source/blender/blenkernel/intern/hair.c b/source/blender/blenkernel/intern/hair.c
index 560e242dd0d..fd4bd499928 100644
--- a/source/blender/blenkernel/intern/hair.c
+++ b/source/blender/blenkernel/intern/hair.c
@@ -169,6 +169,20 @@ void BKE_hair_generate_follicles(
         struct Mesh *scalp,
         unsigned int seed,
         int count)
+{
+	BKE_hair_generate_follicles_ex(hsys, scalp, seed, count, NULL, NULL);
+}
+
+/* Distribute hair follicles on a scalp mesh.
+ * Loop weight function controls follicle density on the scalp.
+ */
+void BKE_hair_generate_follicles_ex(
+        HairSystem* hsys,
+        struct Mesh *scalp,
+        unsigned int seed,
+        int count,
+        HairMeshLoopWeightFp loop_weight_cb,
+        void *userdata)
 {
 	HairPattern *pattern = hsys->pattern;
 	
@@ -184,7 +198,7 @@ void BKE_hair_generate_follicles(
 	pattern->follicles = MEM_callocN(sizeof(HairFollicle) * count, "hair follicles");
 	
 	{
-		MeshSampleGenerator *gen = BKE_mesh_sample_gen_surface_poissondisk(seed, min_distance, count, NULL, NULL);
+		MeshSampleGenerator *gen = BKE_mesh_sample_gen_surface_poissondisk(seed, min_distance, count, loop_weight_cb, userdata);
 		
 		BKE_mesh_sample_generator_bind(gen, scalp);



More information about the Bf-blender-cvs mailing list