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:
- 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.
- 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?