How to make "rolling carpet"?

Does anyone know how to make it in Blender:

I found a few tutorials similar to:
but these are totally wrong - the surface is not “rolling” but actually “sliding” along curve.

Hi @blendest,

it is possible:

the quickest way is to animate the spiral and the carpet towards each other. However, since the distance the spiral moves must be equal to the length of the carpet but the carpet is technically inheriting the spirals translation, I needed to translate the carpet twice the distance the spiral moved.

Here’s my Blend file, which is probably easier to comprehend.

Carpet roll.blend (796.2 KB)


Thanks but it is not correct. I pointed it out in my post. Notice the ‘carpet’ in your project (and all Blender tutorials I found) has constant diameter. It should be small diameter at the beginning and large diameter when ‘carpet’ is rolled.
It seems Bend modifier in Blender is very limited unfortunately to make this in simple way.
I made it in primitive way (blend 2.8 attached):

Roll.blend (1.1 MB)

…notice on your carpet, that the inner diameter increases as it gets rolled? That makes no sense, because it already has 2 full revolutions supporting the core. Considering the thickness and that you declare it to be a carpet, it is stiff and heavy, and shouldn’t behave like that.

Edit:… also the surface of a carpet and its backing behave different in terms of friction, this wont allow for sliding of the already rolled inner surface.

Hi @blendest,

you’re are totally right, my carpet does indeed not trully ‘roll-up’, however, it is still possible :slight_smile:

but it’s not ‘quick’. This uses a bone armature [ with BendyBones], and is hand keyed. The number of bones is low ( 15) ] and they don’t match sympathetically with the carpets vertices which means the weighting is not ideal, but it shows viability. How you proceed depends on what your intentions are for the final use, as your demo above may be completely valid, even if you feel it is not 100% accurate to reality.


Thanks. It looks great.
In a mean time I refined my project and now I have more or less what I was looking for (2.8 blend attached):

Anyway it is a shame the Bend modifier is limited to 360 deg and there is no offset parameter.
test_roll.blend (1.1 MB)

1 Like

anyone know of carpet or rugs that i can interact with. for example open this in a browser (WARNING it will turn up your fans) and hit ‘5’ or any number on your keyboard and move your mouse across the webpage. the ‘carpet’ should interact. now im a blender noob ( i write code) but was just looking for inspiration of interactive rugs or carpets.