0
$\begingroup$

How to generate geometry points based on curve roots in Geometry Nodes? I tried, but it doesn't work.

Generated to 0, 0, 0.

enter image description here

$\endgroup$

1 Answer 1

0
$\begingroup$

It does not work because Field values (the diamond slots with the dotted lines) depend on the Geometry (the green connections & green nodes) that they are connected to. You need to read it from right to the left (Field values (what) <= Geometry (from where/context)).

In your screenshot you have connected the Curve Root node group to the Points geometry node. This actually means, that you ask the points for their curve root position. Since points are no curves, they tell you: "Silly you, we are points! We have no root position!" and you get (0, 0, 0).

What you actually want is the root position of curves and they should be transfered to the new created points. The position is the position of the control points of the splines in the Curve domain. The new created points are in Point Cloud domain. That's two different geometry types.

Transfer the Position Attribute

A common way to transfer an attribute between domains, is to capture the attribute with a Capture Attribute node on the specific domain/geometry and map it to the destination with a Sample ... node.

When you have a matching number of curves and points you can use the Sample Index node. This way, Blender will assign the 1st position to the 1st point, the 2nd position to the 2nd point, etc. using their index values. Here is an example:

transfer position attribute

Oh, wait. You can simplify this a bit and use the Root Position value:

simplified version

Both versions work because Position/Root Position is connected to the Capture Attribute node that is conneted to the geometry of the curves. Since the domain of Capture Attribute is set to Point, the position of the control points and not the curves is retrieved.

Alternatively, Copy and Convert the Root Control Points

Another approach to solve your problem is to copy the Control Points of the curve and convert them into Point Cloud points. Additionally, you need to adjust the point radius a bit to get the exact same result.

copy and convert control points

$\endgroup$
1
  • $\begingroup$ Thank you for taking time out of your busy schedule to respond. Thank you very, very much!! $\endgroup$
    – levosaber
    Commented Oct 16, 2023 at 14:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .