0
$\begingroup$

First, I created my own arcMesh node group. It does the nearly the same as the builtin curve primitive Arc. arcMesh node group

arcMesh was used in another node group ringMesh, which turns an arc into a ring by extrusion and scaling given parameters: ringMesh node group

Now I created multiple instances of ringMesh along a line: top level node setup

This is what I see if I remove the connection above the green arrow. The Inner Radius of all instances is uniform. Just like the then constant input to ringMesh. enter image description here

Now I want to vary the Inner Radius depending on the z-Coordinate of the vertices that instance the ringMeshes (by restoring the connection above the green arrow): spirals???

Why is this happening?

It looks like as if the field resolution went wrong. Within each instance of arcMesh, input Radius should stay the same. Only Inner Radius should vary over the instances of ringMesh.
Instead, as you can see, Radius varies within each arcMesh... Leaving me with spirals... What can I do to get ringMeshes of varying (internally constant!) InnerRadius?

$\endgroup$

1 Answer 1

1
$\begingroup$

When you feed the Z position into the ringMesh node, this is not actually the position of the instance, but the position of each individual vertex of the ring. The inputs of the ringMesh group are evaluated before the instances are created, and then each instance has the same shape.

The Z position is used in 2 places:

  1. The original mesh line Z position that determines the angle now also comes in sneakily via the "Radius" input, which means the radius gets larger for each vertex and you get this spiral shape.
  2. In the ringMesh group the Inner Radius input is also the Z position in fact, but now the vertices have already been placed and Z is 0. Dividing by 0 returns 0 (because the nodes always make nice values), you add 1, and scale by that - so this has no effect at all.

Instances will not let you make 3 rings with different internal radii. Instead you need to copy the node group itself 3 times and give it 3 different radius inputs, then join the geometry outputs.

$\endgroup$
2
  • $\begingroup$ Thank you for the in-depth explanation. To be honest, it's a bit of a bummer that copy/pasting is currently needed for this use-case.. $\endgroup$
    – dafred
    Jun 9, 2022 at 6:17
  • $\begingroup$ Agreed, i hope there will be support for parallel loops/arrays soon ("do X for each point in this mesh" sort of thing). I often make a large base grid, cut it into pieces, and then deform each part based on a sub-index. But that gets quite complicated and requires juggling a lot of indices. $\endgroup$
    – lukas_t
    Jun 9, 2022 at 7:27

You must log in to answer this question.

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