# animate a hollow cylinder rolling up on itself

I'm still a beginner at Blender and leaned a bit about bone rigging, however I cannot find information on one particular animation that I want to do.

Essentially I have a hollow cylinder with several loop cuts. I have created it using the following technique:

1. Create a circle in the X-Y plane.
2. Extrude it several times in the Z direction.
3. Use the solidify modifier.

This is what I end up with:

Essentially what I want to achieve is an animation where a the bottom two parts of the cylinder open up radially with respect to the axis of the cylinder. For example I want the portion labelled in red below to open up 90 degrees outwards and the bottom portion labelled in blue to turn 180 degrees, so that it point up. Essentially getting the effect of the end of the cylinder folding up/rolling up on itself.

I have figured out how to do this folding linearly with a simple slab. However I cannot figure out how to do it with a cylinder with a rotational symmetry around the central axis. Can someone explain or point me to some resources I can read?

Just to add, I have simplified the problem to the simplest possible case. I am actually trying to achieve this effect with a much more complex object that I have already imported from a CAD model, so starting from a slab, doing the modification on the slab and creating a circular array wouldn't really work. I would like to know how to achieve that with a ready-made mesh. I was envisioning to create some kind of a 3 bone armature and have that armature control the entire mesh, but not sure how to do that or even whether it is even possible.

Any help is appreciated.

• Unfold your mesh to a slab, deform it, fold it back. Commented Aug 4 at 9:59
• What is it supposed to be? Commented Aug 4 at 11:26
• @Leander do you mean UV unwrapping. Also does it matter how the deformation is done? Should it be done with simple deform or a armature rig, or it doesn't matter? Commented Aug 4 at 11:28
• @MartynasŽiemys It is a hollow solid object with rotational symmetry around the z axis. It is a rubber teat for feeding babies from a bottle. I want to animate the teat being rolled back so that it can then be put around the bottle. Commented Aug 4 at 11:31

By capturing the positions of vertices relative to a curve and then offsetting them along the curve you could approach such an effect with geo nodes.

## Collapse the mesh onto a 2D plane.

Store the angle of the XY plane.

Apply the reverse of the angle.

## Sample the curve

Since we only have the Sample Nearest Surface node, we need to convert the curve into a mesh, transfer the factor attribute $$[0, 1]$$ and the sample that factor for each point.

Sample the curves values and store the position and rotation for each point.

Sample the curve a second time, but offset the factor to move along the curve. This would shift the points along the curve. At the same time translate the curve upwards to make the undeformed points stationary.

Store the second samples as well.

## Shifting the points

1. Subtract the position of the unmodified curve's sample.
2. Inverse rotate the points around the unmodified curve's sample.
3. Rotate the points around the modified curve's sample.
4. Add the position of the modified curve's sample.

This is what the 2D deformation looks like.

## Apply the angle (position) back again

Since we stored the angle as a named attribute, we can rotate the points to their correct position again and reconstruct a 3D shape.