2
$\begingroup$

I have three sets of Instances on Points, where the “Points” are the midpoints of the main geometry edges (Mesh to Points node > Edges).

All three sets of Instances are now successfully oriented along the edges of the main geometry, exactly as I want them to be, thanks to this answer: https://blender.stackexchange.com/a/303976/166883

The Geometry Nodes setup that I’ve laid out according to the above answer also dynamically orients the Instances along the Edges of the main geometry, even when the main geometry is distorted. That is perfect.

Now the next step is to have two of my sets of Instances act as “caps” to the central Instances centered along the main geometry Edge.

In other words, no matter how long or short the main geometry’s Edges are, and no matter how I distort them, I want the “cap” instances to:

Continue to be dynamically oriented along the Edges as they currently are, but also Dynamically stay a uniform/fixed specified distance from the Edge Vertices, no matter how long or short individual main geometry Edges become, or are distorted to be. I’d like to be able to say: Set all “caps” to a distance of 0.25m or 1m from the Edge Vertices.

I don’t want to alter the setup of having the Instances on (Edge) Points, because it’s working, and I think doing what I want to do likely involves a pretty simple vector math trick added to the current Geometry Node arrangement. Nevertheless I can’t quite figure it out with my rudimentary vector math knowledge, and would love a little help.

Thanks!

The images included:

The current geometry nodes arrangement. The current behavior... And clarifying the dynamicness I'm hoping for...

The current Geometry Nodes arrangement.

The current behavior.

And can the solution be dynamic?

$\endgroup$

1 Answer 1

1
$\begingroup$

To get the points you can first split all edges of the target geometry:

Now we need a scale value for the Scale Elements node that gives the desired distance from the vertices. Dividing a value $v$ by the edge length ($\frac{v}{l}$) gives us the ratio between the two, and scaling the edge by that value will give an edge with length equal to $v$. But that's not what we need, instead we want the edge length to be smaller by two times the value $v$ (one time for each end), so what we can do is subtract 2 times the value $v$ from the edge length before dividing it ($\frac{l-2v}{l}$).

The instance alignment is done by capturing the edge normals before deleting the faces and using it with the Align Euler to Vector along with the edge vector.

node tree

$\endgroup$
1
  • $\begingroup$ Thank you! This is working well! $\endgroup$ Commented Nov 13, 2023 at 16:33

You must log in to answer this question.

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