I'm modelling with geometry nodes a well known physics experiment: the chain of coupled pendulums. Here is what I'm getting so far.

Chain of coupled pendulums

Now, the brown cylinder is actually a kind of rope and I'd like to show its actual (or at least a fake) deformation due to the rotations of adjacent pendulums.

The idea I followed in the geonodes graph (see below) is:

  • add an horizontal line and transform it to a mesh (that's the "rope");
  • add a bunch of points along the line (the "rope") and then instance the pendulums;
  • add random rotations to the instances.

geonodes graph

Now, as a beginner in the shader editor, I don't know how I can send the information of rotation to the rope material nor how to make it like the rope is twisted proportionally to the local rotation (adding fake twisted strands?).

Any ideas?


1 Answer 1


Here's a very simple setup where I:

  • Use a Set Curve Tilt node and feed it the same random values I'm using to rotate the pendulums so it gets twisted along with them
  • Use three circles in a radial array to represent strands as the rope profile so you can see the twist more clearly
  • Capturing and outputting the Curve Tilt information as an attribute so I can use it in the shader. Don't forget to name your output attribute in the Geometry Nodes modifier panel
  • Shader is simply getting that curve tilt amount from an Attribute node and converting it to color using a ColorRamp

enter image description here

More can be done to make it more graceful, it has little failings here and there—the rope gets too thin when it twists too much, for ex; or you could prefer transfering the attribute but handling the twists entirely via the shader... but it should give you a general idea as to how to handle a scenario like this.

enter image description here

Note: The blend file has a simple animation to check the change in colors

  • $\begingroup$ Exactly what I was looking for (+1 and accepted). In the shader editor, why the color socket from the attribute node rather than the factor soket? In addition, do we need a map range node to get the tilt factor in the [0, 1] interval? $\endgroup$
    – cjorssen
    Nov 17, 2022 at 17:02
  • $\begingroup$ I was just careless linking the socket—doesn't make a difference in this setup though. And sure, you can use Map Range to normalize the input. I didn't bother process the numbers, just used them as is, to keep the setup (and screenshot) simple. Currently rope gets redder as it twists clockwise, you could do smarter things like comparing each point's tilt to its neighbors and painting them red when that gets too high, representing tension, for instance. $\endgroup$
    – Kuboå
    Nov 17, 2022 at 17:25
  • $\begingroup$ Ok. Nice. Thank you very much! $\endgroup$
    – cjorssen
    Nov 17, 2022 at 20:20

You must log in to answer this question.

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