8
$\begingroup$

I'm trying to model a curtain (drape for you US people) accurately. I've seen this youtube tutorial that scales the top vertices in the x axis with shape keys, but it's not the right look because it all squashes up evenly.

Here's a gif of how I want the curtain eyelets to operate - they get a certain distance from the next one and pull it along because they are all connected together with string:

enter image description here

They hook on at these points:

enter image description here

And here's a real-life version, that I want to animate:

enter image description here

(You may notice the curtain doesn't sag down, because it has stiff fabric holding it up level. This might make just hooking the vertices difficult)


.blend coming soon - as soon as it uploads! - It's massive. I can upload if strictly necessary, but it's nothing amazing so far.

$\endgroup$
1
  • $\begingroup$ Bonus points for making it procedural :) $\endgroup$ Commented Oct 5, 2020 at 20:56

3 Answers 3

6
$\begingroup$

Here's a way to get you started,

Subdivide a grid or plane well and select some vertices that would be where the "rings" would go into the curtain. (a bit randomness is okay I suppose)

enter image description here

Add these selected vertices to a vertex group to be used by the cloth modifier for pinning.

enter image description here

Create a Shape Key and for the second key scale the pinning vertex group towards the cursor the direction the curtain will open.

enter image description here

Add cloth and subdivision surface modifiers.

For cloth settings, default is mostly okay aside from adding self collisions and pinning vertex group.

enter image description here

Next animate the shape key from 0 to 1 and you should end up with a result similar to below:

enter image description here

Here's a file to play with:

$\endgroup$
8
  • $\begingroup$ That's the same as this youtube tutorial I linked. I really want the motion where it starts at one end and only that part moves initially, and it pushes/drags the curtain along / drags it along $\endgroup$ Commented Oct 6, 2020 at 4:58
  • $\begingroup$ The purpose of this type of curtain is that 'ripple' or 'wave' effect (because the gliders are tied together which stops the curtain being pulled flat). See this company: silentgliss.co.uk/engb/fabrics/fabric-specialties/wave $\endgroup$ Commented Oct 6, 2020 at 5:05
  • $\begingroup$ @marcellothearcane I understand :) something closer to this? The method in my answer is how I solved a similar problem some time ago, but can be adapted pretty easily with the pinning group and shape key. $\endgroup$ Commented Oct 6, 2020 at 9:12
  • $\begingroup$ It's the opening/closing motion that's most important. A sort of domino effect, if that helps $\endgroup$ Commented Oct 6, 2020 at 9:50
  • $\begingroup$ Ok, more this kind of movement? I'd like to be sure I don't misunderstand :) $\endgroup$ Commented Oct 6, 2020 at 9:57
5
$\begingroup$

You can get the opening behavior of the curtain-holders with Limit Distance Constraints. Then you can pin your Cloth Simulation to those objects with Vertex Hooks.

enter image description here

  1. Place your curtain-holders in initial position.

  2. Give every but the last one a Limit Distance Constraint with needed distance.

  3. Build your curtain-mesh and setup the hooks
    3.1 Select all vertices that should be pinned and create one vertex group with them
    3.2 Select first curtain-holder-object Shift-select your curtain > Edit Mode > Select one vertex > Ctrl + H for Hook to Selected Object (repeat for all)

  4. Create your cloth simulation (important: cloth has to be after hooks in the modifier-stack)
    4.1 Beware: cloth-tension and bending have to be elastic enough to not get torn apart by the hooks.
    4.2 Toggle pinning and choose the created vertex group

enter image description here

$\endgroup$
3
  • $\begingroup$ ah okay, is see, its not perfect because pulling the cutrain back is reversed :( $\endgroup$
    – A M
    Commented Oct 18, 2020 at 15:52
  • $\begingroup$ Oh so close! Yes, it needs to work the other way in reverse, but that's really helpful so far. $\endgroup$ Commented Oct 18, 2020 at 16:07
  • 1
    $\begingroup$ on a second tought, this behavior is pretty complex when you want to reduce it to one slider. You should check out something like animation nodes. Think about it not from the grabbed/first one but from the static/last one and how the behavior would build up for each part in the chain. $\endgroup$
    – A M
    Commented Oct 18, 2020 at 19:12
2
$\begingroup$

Using "wrap modifier" you can animated the bending of the curtain and above that rely on the "cloth modifier".

enter image description here

The wrap modifier is based on two empties placed on the side of the curtain. Its influence is mitigated by a vertex group, with a linear falloff type and a radius that is just below the curtain width.

enter image description here

The vertex group used for the wrap is a gradient:

enter image description here

That allows to drive the curtain, when moving the empty, more firmly at the top than the bottom.

Their is also a pin group used for the cloth modifier:

enter image description here

Collision and self collision are on for the cloth.

$\endgroup$
1
  • $\begingroup$ I don't want the whole curtain to move all at once, just the end of it, which would push it all up. Like this: i.sstatic.net/iFmgp.gif $\endgroup$ Commented Oct 19, 2020 at 7:48

You must log in to answer this question.

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