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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to