I want to make hair cards, but with the following properties:
-The particles bend according to the hair curves
-The particles stretch to match the curve, but only on their "local z"
-The particles should all be rotated consistently to be perpendicular to the z axis
-The ability to select random particles
I've tried several methods for this.
1) Normal hair particle system
Pros:
-Proper rotation
-Can select random particle variation from a collection
-Good combing tools, can use interpolated children
Cons:
-Cannot follow curves
-Cannot scale along only one axis
So we can rule this out because it is impossible to make the particles follow the curves, which is the most important part, I think
2) Particle Instance modifier
Pros:
-Can follow curves
-Proper scaling along only one direction
Cons:
-Bad combing as interpolated children do not work/show up/blender crashes
-Bad, uncontrollable rotation
-Cannot select random particles
So I'll rule this one out because of the bad rotation. The other issues I could work with, but I cannot figure out a reason why the particles rotation seems to random when using this modifier.
3) New Hair Curve Geonodes
Now this one has a lot of potential, and while it has bad combing tools, I can simply convert an old particle system to this new system, which solves the issue.
Pros:
-Can use the full extent of geometry nodes
-I've been able to recreate the normal particle system's object option, though I haven't been able to figure out rotation nor bending along a curve
Cons:
-I'm not sure if I can make the individual instances bend to the specific curve they belong to
-I cannot figure out how to do it
This here is what I managed to do using the new hair curves. The particles can scale exclusively along the length, I can get them to face the general direction of the curve using the curve tangent of the curve's first point. I however cannot figure out anything else.
And here are the nodes for what I have so far. I tried a bunch of things to rotate them properly by using the rotate instance node, but with no luck, since I'm pretty much trying to brute force the math. Does anyone have any idea how I could do this? Or if there's a better approach entirely?