How to align curve handles to vertex normals in Geometry Nodes?

I have this simple setup of curve arches distributed between random mesh points. Currently curves have hardcoded direction in Z axis. I want to replace this with the system where the curve arc is pointing along face normal. I think the best approach is to set curve handles so they conform with the normal of the vertex to witch they are attached.

I tried many different approaches and here is what I came up with, but it obviously doesn’t work.

Random offset in Z direction (from Random Value nodes) should be replaced with scaling curve handles so the curve have bigger arc. If the scaling would work I would like to multiply it by some random value then. But I don’t know how to achieve this honestly.

1 Like

Order is important…

Set the end-positions first:

Then set the handles:


…forcing handle positions to the curve positions, offset by closest normals. Scaling the handles by curve length here. (There is an issue in 3.2 where capturing curve lengths resets handle types so you need to do that after the capture for it to work (can capture in point or spline domain; makes no difference))

Good luck!

5 Likes

Thanks. It works, and it’s perfect!

2 Likes