# How to procedurally model a non-linear screw? / non linear modifier

I am trying to achieve a non linear (gradually) screw procedurally, by this I mean the distance between each turn of the screw get smaller and smaller, this result should be obtain with modifier in a procedurally way, to get control over distance between the loop/size of the loop. Basically it would be similar as an antelope horn (as we get closer to the head, the distance between the horn "twisted ring" get smaller): Here is my setup: I started from a two vertices edge Then I add this bunch of modifier: screw - solidify - subdivision - lattice.
This gave me a spring...

...and by deforming the lattice I get this shape. And here is the big question : the distance between the "ring" decrease but only because the height of the ring decrease (this also cause the angle of each ring to change). How can I gradually decrease this distance without changing the height of the ring (I still want the radius of the first one to be bigger than the radius of the last one)? By applying the modifier and scale/move the top vertices with proportional editing I get something like that: But I am looking for a solution without applying that much modifier, to keep more control. this question can be extended to other modifier: how to use the array modifier in a non linear way ? By this I mean the distance between each instance is multiplied by 1.3 for exemple, meaning there is more and more distance between object as in this picture: • Hello :). Since you already have a good result, are you asking how to achieve this procedurally? And in which parameters do you want to keep more control? – Jachym Michal Mar 6 at 13:31
• @JachymMichal If procedurally means modifier based, yes that's it. I want to keep control of the distance between the loop and the size of the loop. And most of all, changing those parameter as if done with proportional editing. – pons de leon Mar 6 at 13:35
• what about geometry nodes or animation nodes? i think both can do this – Chris Apr 27 at 14:49

## 1 Answer

with this node group you can control the distance of an array of objects: RESULT:

https://youtu.be/2QJ8b9MexNY 