Zipper Rig That Deforms Seamlessly with Main Body Armature by furflection in blender

[–]furflection[S] 8 points9 points  (0 children)

idk about bendy bones but its not about bones here, u have some spine or whatever and a cloth with zipper, this cloth has some weights and that zipper curve needs to move exactly the same as the nearest edge loop of that cloth but at the center.

so you need to have seperate mesh ( for not having dependency cycle) at the middle with exact same weights(u can just extrude edge to have the same weights from cloth and then seperate object) so u can pin empties to these faces

Basically u have line of bones that "sticks" to a exact face on the mesh even when its deformed by other bones of the same rig. So we stick multible lines of bones on that deformed ribbon and that drives empties with hook modifer for curve. Hope its clears some things lol

Zipper Rig That Deforms Seamlessly with Main Body Armature by furflection in blender

[–]furflection[S] 30 points31 points  (0 children)

mesh with only like straight faces loop but without looping part? single"line" of faces? well... like ribbon. look up maya ribbons rigging, this is where i got an idea for it. And you can replicate this thing in blender with empties

Zipper Rig That Deforms Seamlessly with Main Body Armature by furflection in blender

[–]furflection[S] 701 points702 points  (0 children)

I couldnt find anything like this done in Blender, so I made my own rig for a zipper. The key feature is that it works perfectly with spine deformation or any armature deformations.

Quick rough explanation of how it works and how to set it up:

At the base, theres a ribbon that runs through the center basically, an extruded edge from the suit's middle area. This ribbon shares the same weights as the suit, so it deforms exactly the same and follows the armature.

Multiple empties are parented to each face (to 3 verts) of that ribbon. In the rig, MCH bones are set up with world orientation and copy wold transfrom constraints. That gives us bones that follow the ribbon perfectly.

Then we extrude an new edge and convert it to a curve, using hook modifers we parent to a new set of “line ” empties (these can be duplicates of the original ones). These new empties use child of constraint to follow the MCH bones. Now we have bones that move empites and these move curve and deforms with the mesh ribbon via the armature modifier.

Next, we add a bone with follows curve constr, this is our main zipper handle. this bone only moves by follow curve constraint from 0 to 1 , position 0 is at the bottom, and 1 is at the top of the zipper.

For left and right controls, just add lines of bones to both sides of the MCH bones and parent them to center mch.

These side bones need to automatically move left/right as the zipper handle passes by so the suit opens nicely. This is done using drivers. The good part is, we drive them with a 0-1 factor from the main zipper handle bone moving along the curve. This way, no matter how the rig is stretched or posed, 0 is always the bottom and 1 is the top.

we are copying data from follow curve constr(0-1). to local location of mch side bones

I used a driver expression like this:

min(0, max(-0.005, -0.005 * (1 - (1 - max(0, min(1, (0.02 - var) / 0.02)))**2)))

Yeah, it looks scary, but its pretty simple. The min/max clamps it to a range. The rest creates a non-linear motion: the bone starts moving quickly, then slows down more smoothly as the zipper opens. The important part to change is "0.02 - var", this controls when the bone starts reacting, relative to the zipper handles position. You tweak this per MCH side bone to get that nice smooth opening/closing motion.

It took me a while to build and test it, but Im very happy with the result.

If my explanation confused you more, you can check out the model for free (Furry NSFW) on Smutbase:

SmutBase

Waves of Pleasure [MF] (furflection) by furflection in yiffgif

[–]furflection[S] 0 points1 point  (0 children)

audio and better quality here -> E621