(Ongoing Updates) Geometry-Nodes Based Flat-Modeled Toon/Anime Hair

I’m looking to make something similar to aVersionOfReality’s excellent flat-modelled anime hair setup in a way that will allow for faster and easier creation and more flexibility by using geometry nodes.

General Goals:

  • Create polygon hair which has minimal intersections and is thus best suited for NPR rendering which includes lineart and avoids overlaps and self-shading
  • Allow for different hair shapes to be swapped in to permit a variety of hair textures, including straight hair, curly hair, braids and locs
  • Allow for hair length to be easily controlled
  • Allow for hair to be shaped in clumps or set up to follow curves easily in order to create things such as buns, ponytails, etc.
  • Allow for quick and easy modification of hairstyles to create good variety
  • Require minimal setup and maximize reusability
  • Potentially allow for different levels of detail based on distance from camera so that we can see more detailed hair strands up close but have low-poly hairstyles at a distance.
  • Use geometry nodes for as much as possible, attempting to minimize configuration of multiple lattices, while maintaining as non-destructive a setup as possible

This is an extremely ambitious project and I am a serious newbie to geometry nodes. Let’s roll.

So far, by using the techniques in this tutorial series, I have managed to make this setup in 3.1:

Pretty far ways to go, obviously.

My two next steps which I’m struggling with are:

  1. Using geometry nodes, is it possible to procedurally merge the geometry within a certain radius? This is to say, I would like to merge the tops of these hair clumps together while leaving the bottoms untouched.
  2. Using geometry nodes, is it possible to then bend these along a curve in a way that will not cause gaps between the tops of the hair clumps? (I am looking at this tutorial right now, but the bricks themselves are not deformed, while I would be looking to bend the individual strands along the curve. Plus, this is in 2.93, which is more difficult to translate.)

EDIT: Oh, wow, there’s just literally a “merge by distance” node that I wasn’t aware of. Cool. So that’s #1 solved, and I’m considering an alternate tack for #2:

When I use this, though, it does merge in the x direction, which is undesired. Is there a way to limit it to only merge along the y and maybe axis?

3 Likes

hi, any updates?

1 Like