I animated a fur ball with geometry node hair and custom simulation node!

Hello All!

I was trying to simulate the geometry node-based hair. After trying a lot of stuff, I ended up building custom geometry nodes. (Yes, basically having a custom-built Blender.) Below is a video demonstrating the simulated movement on top of a keyframe-animated sphere.

Here’s how the node graph looks:

The node graph primarily stores and reads attributes (positions, velocities) and feeds them to the custom geometry node called “Curve Simulation Step” inside the simulation field. There is hair-object collision but I haven’t added hair-hair collision yet.

There are still a few things I’d like to work on:

  • making the parameters have more physical sense
  • hair-hair collision
  • reading a collection of force field values for wind and other elements (is there any solution for this now?)

And most importantly, does anyone know if it’s possible to wrap a C++ -built geometry node into an addon? I haven’t figured out a way to do that yet, so any pointer would be really helpful!!

26 Likes

:open_mouth:

Dang! Please accept my humble obeisance. Outstanding!!! :smiley:

1 Like

There is a creator that has managed to make some custom nodes in C++, you can reach out here:
https://twitter.com/Bbbn192
https://www.youtube.com/@CartesianCaramel

1 Like

Thanks for the info! Will look into that!

Glad you like it! :smiley:

Out of curiosity, what does your custom node provide under the hood that cannot be achieved with the currently available nodes, and could the extra functionality it provides be split into smaller building block nodes that could then be reused to do other interesting things? Substep, for example.

I ask partly to get an idea of how far away Blender is from doing this sort of simulation, and partly if you are hoping to provide an addon, the individual components might interest some people as much as the complete node.

No, that is not possible. Idea is to let user themself create this via node groups.

I think the biggest difference in the end is that I can solve the whole curve(s) in one linear system. At the beginning of digging into this problem, I tried to use existing nodes to solve it and quickly bumped into its limitation. (and it was before the ongoing development of matrix nodes for version 4.2) Substep was not the problem because of the repeat zone. I’ve also tried to use Blender Python for the custom node creation but it wasn’t really designed for this kind of operation.

1 Like

Oh, that’s what I was worried about. Thanks for the input anyway!

Solving of linear systems was the thing that Jacques experimented with: https://projects.blender.org/blender/blender/pulls/114757
In context of simulations, its seems this is enought to use just Blur Attribute node at least for begin.
But in general, if we’d like to have system solving fields, this might requers solving of non-liner systems.

1 Like

Woawww !!! great work !!!

1 Like

Thank you!!

Great work! And the node seams clean and readable :smiley:
This is what I wish most out of GN right now!
/Daniel

1 Like

A small update: Here’s a short WIP that shows a hairball sim influenced by a wind force field.

I’ll be making a better video later.

5 Likes