[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