Animate a manta ray fin

Hey guys,

Guess what, I’m new to blender and I got some problems.

So I’d like to animate a flapping fin in blender

, kind of the sine wafe traveling through my flexible mesh along the z-Axis. I tried it in several ways. First I tried to make it with the curve modifier by moving the curve up and down. Yes, when I move the mesh up and down it looks pretty decent but I want the mesh to stay on its place.
But when I move the curve, my mesh somehow travels along the direction the curve is moving. So I tried to use the wave modifier. But there were some issues with the local dimensions and stuff and it looked really crappy. The last thing I tried was using an armature. But I don’t know how I should weight paint my model in order to get a realistic flexible looking. I cant just select whole “loop” because they arent horizotal. I actually want that the thinner the fin gets the smaller the peak. So I’m stuck there too. I really spent already pretty much time to figure out the right way but my Latin is on an end I guess :smiley:

Can somebody give me a tip, with which method I should make it and how?


Simple solution: Wave modifier. :smiley:

You use an empty as “Start Position Object” and you set it on one edge of the fin.

The only constraint is that it works only on the Z axis… but you just need to rotate your fin to go around this limitation.

You add the Wave modifier and an Empty. You press [ALT A] and you play with the parameters and the position of the empty until you’re satisfied. Easy as pie. :wink:

Well thanks Kaluura :smiley:

Actually a pretty obvious solution haha! I should have just played around more with the variables and orientations and I’ have had it, but I never worked with the wave-mod before so…

But there’s a new problem I’d be happy to be solved. I wanted the origin of the wave to be kind of locked, it shouldn’t wave with the rest of the fin. It shall be constraint to a rotating stick and that should be the origin of the wave.

OK, I have just made an animation in which the stick is adapting to the wave (so the other way around) and it looks acceptable but how can I set a part of the mesh “stiff”?

To limit the effect of the Wave modifier, use a Vertex group. So you can assign different weight to the vertices which will be translated into a percentage of power for the wave.

I wanted to test my theory and I found a clever way to let Blender do all the work. :smiley:

Create an armature with a bone at the base of the wing (a.k.a. fin) and another one at the tip. Something like that:

(I made both wings and the bone in the middle is the root of the armature, set not to deform.)

You parent the wing to the armature with automatic weights. This way, the bone at the base of the wing does the rotation you want.

After that, you add the Wave modifier and, as vertex group, you set the vertex group that Blender created for the bone at the tip.

A little Subsurf modifier to make everything smoother. And… All done! :smiley:

The base of the wing is glued to its bone to rotate with it and the wave affects only the tip. Thanks to the overlapping vertex groups created for the armature, the 2 effects blend smoothly into each other along the whole wing from the base to the tip.

If you want a stronger wave, you just need to bring the bone for the tip closer to the base and to re-parent the wing to the armature.

When you’re really satisfied, you can delete the bone at the tip. That’s the domain of the wave.

The blend file of my experiment: Forum Manta Wing.blend (128 KB)

Just press [ALT A] and admire. :wink:

I added a constraint on the bone at the base of the wing to copy the rotation of the empty used as origin for the wave. (That empty should be parented with the armature if you want to move the wing.)

That should be enough food for your brain to chew on for a while. :smiley:

What I’d suggest is that you still keep the fin armature-based. You can have several different outward-facing bones that run along the fin and are anchored at the base, then track them to a series of bones along the rim of the fin. I’m working on a test animation to illustrate this, I should have it done tomorrow.

Thanks man, you’re a god! There’s only one more thing… I still want the whole thing to wave, just in the rhythm the empty predetermines. So that every time the empty is rotating back and forth a new wave is created. Even though your version is ver close to that, I don’t know how to implement that.

Your version also sounds pretty decent! I’m gonna try this one too. Looking forward to your animation, mate.

Ah Kaluura, I made it. But of course I’ve got a new problem. I want to produce a wave every time the empty starts to rotate upwards and everytime it starts to rotate downwards. But the peak of the wave is every time on the upper side of the wing. Is it possible to make a downwards peak too?

Yeah… I noticed afterwards that the Wave modifier pushes the mesh only upwards. I ditched it. :wink:

I did some homework. The mantas “fly” under water… and they have a weird skeleton which inspired me to do this:

Basically, the middle bones which go from the base to the tip of the wing copy the rotation of the empty and pull all the other bones in the wing up and down. They are split in 2 to also give a curve along the width of the wind. (More subdivisions are strongly suggested to improve the result.)

I reduced the power of the constraint on the 2 huge bones in the middle but I actually think that these 2 constraints should be removed. That’s not the way mantas move. Instead, you should use the armature to rotate the body.

BTW, I parented the empty to the armature and the constraints were adapted to this new situation. The whole contraption acts a bit weird when you rotate the armature in the viewport but when you confirm, everything works as designed. (So that you don’t think that I gave you some bugged crap.) :wink:

Any way… Watch my manta fly! :smiley:

Forum Manta Wing.blend (139 KB)