Hair - Medusa Nodes

Anybody know if the hair system proposals include features to import/export guide hairs to/from curves?
I have this functionality available through an addon for the current system, would be nice to have it integrated right from the start though.

Being able to not just style with comb tools but instead model guide hairs as curves and import them into the hair system is such a time saver for complicated/intricate work.

1 Like

Proper tennis hair! Now you’re the realest hairs G! Me this all the time I very like!

Not sure if this is the place to post this, but I think this post by Dalai Felinto is worth checking out.

5 Likes

A-anyone still alive in here? This looked so promising… The “new hair system” in blender till now is pretty much useless. I thought i could leave the old particle one soon, but eh…

Been learning GN for a while, I think we do need vertex list for spline to do interpolation. :smiling_face_with_tear:

My attempt at interpolation:

New updates in curve type greatly open up new things that are possible with geometry nodes and hairs.

After a long period of failures, I have managed to make interpolation using Barycentric Coordinates. Because of my poorman’s Delaunay Triangulation (which is slow and has some issues), the Interpolation does not depend on the mesh resolution like the prototype of @Xeofrios.

It would be great, if we could have some sort of Delaunay Texture just like we have Voronoi. It would make this nodegroup quite a bit faster. Is it even possible to develop this kind of texture, @HooglyBoogly?

Thanks.

16 Likes

Hi, can you use the interpolation for the setup as I did on Apr 6 ? I am interested to see that.
Hair grow on vertices of subdivided grid and guides evenly distributed on the circle.

geonodes_even_interpolation_test_001

Hello @TheWhisper, did I get your preset right?

4 Likes

It looks good to me, can you reduce the number of guides to something like 4,6 ?

4 guides:

6 guides:

Comparison with Xgen on the right:

6 Likes

Have you planned for a release date ?

I have no release date planned. It took me quite some time redoing clumping and sub-clumping, as well as interpolation.
These changes affect current prototype. Now I am reworking the design and the “modifier hierarchy”.

6 Likes

This is so amazing

1 Like

I just created a node group for interpolation, it’s based on math formula but I use individual guide input so the number of nodes is basically linearly dependent on the guide number.
I tried 2 ways, the first one is to distribute points on surface, calculate their distance to guides, then use linear interpolation. The result is decent except it creates higher density around guides and the instances can’t fill the convex hull of the guides.For weight function 1/x^alpha, as alpha increases, it fills the region more and creates higher density on the border.
The second one is create even sequence in n-dimensional cube (n is guide number) and use it as weight and finally delete these instances with weight sum higher than 1.The result for n=3 is very good, but higher n sometimes give weird result, maybe I made some mistake.
I have another thought, which is to use random point in n-dimension cube as weight, I’ll try that later.

4 Likes

I just modified the node group to take surface curvature into consideration.I first move the guide root to the nearest surface and align the vector based on the surface normal, do the interpolation and then align splines back to the surface.


7 Likes

In the 3 guide case, the splines are evenly distributed on the triangle of the guides’ roots.

1 Like

It looks very good to me. I believe calculating each “sub-triangle” area (u,v,w - colored triangles in the image) and dividing each triangle area by the sum of these 3 triangle areas should give you right weight.

Weight A = w / (u+v+w)
Weight B = u / (u+v+w)
Weight C = v / (u+v+w)

image

Handling spline indices order for more then 3 guides is something that is interesting as well. I have some issues with that.

1 Like

Yeah, I am doing the generalization of the method to n-guide with weight sum. The thing I am considering now is how to get reasonable weight. In the triangle case the weight is in the 3 dimensional unital cube with coordinate sum 1, or project to 2 dimensional cube with sum less or equal to 1.For point inside triangle that is the only representation of weight sum 1, but for higher dimension you can’t cuz there is no unique representation of weight sum 1.Therefore I have to directly use weight rather than get it from convex hull of the guides’ roots.

I am not sure I understood everything, but figuring out the right weight “mix” between the guides was and partially still is trouble for me. It definitely looks like you are almost there.

Maybe we’ll get remove point by density in geometry nodes just like density brush, in that case we only need to create dense curves.