How to efficiently animate a centipede?

Greetings! I’m not an animation buff, I normally model and do simple animations, but I’m tasking myself with a challenge: animate a centipede crawling on rocks.

This centipede has at least 15 pairs of legs, and it curves with either a spline IK or curve modifier. Animating every single leg one at a time sounds tedious, I feel like there’s better methods to accomplishing this rather than manually animating each leg every frame.

I’m always a fan of simplifying animation- in this case, you don’t have 30 unique legs, you only have 2. A leg is either in the pair forward position or the pair backward position, and all of the legs are one or the other, alternating. So you select 15 legs, move them to the forward position, make a keyframe. Select the other legs, backward position. Next keyframe- switch. Loop the key frames. Done.

I think the pairs do not move all together but create some kind of wave from front to back .I have no idea how to rig them efficiently though.

This slow motion clip shows it: https://youtu.be/xysbNbvUDZA?feature=shared

1 Like

Hi, it’s good to automate that sort of thing. I would create a “walking” action on one pair of legs, and replicate it on all pairs using action constraints. You can connect the constraints to a bone transform (a rotation channel works well for this purpose) so you can control the pace of walking.

1 Like

Set up the animation for a pair of legs.

Duplicate them down the body. Parenting them to a null will be a good idea.

Go into the dopesheet, and offset the pairs in time to create the wave.

A while ago I did a fully procedural rig for a centipede. Basically, its leg movement is driven, via constraints and drivers (I believe, needed to study the rig myself now to understand how exactly the mechanics works), by moving the “main” bone.

centipede_rig_nogeo.blend (1.9 MB)

(sorry, rig only - centipede model wasn’t mine, hence I deleted it from the file)

Test:

2 Likes

Hmm, that does sound pretty nice.

How do you make the legs responsive to terrain though? Use some kind of IK for each leg and then…constrain it to the terrain? Or…hmm…

Drivers also sounds interesting too, I’ll look into that.

There is a shrinkwrap constraint you can use to have the legs touch the terrain.