Home Technical Talk

Blending Keyframe Animation with Physics (Partial Ragdoll)

muchogrande
polycounter lvl 4
Offline / Send Message
muchogrande polycounter lvl 4

Hi, wondering if anyone can point me towards software that is efficient at blending keyframed animation and with physics sims on rigged characters. EG: A rigged character is controlled by keyframe anim from mid spine down, while joints above that physically simulate like a ragdoll. Ideally there'd be a way to blend the amount of physics / keyframe anim per joint.

This is a good example of what I'm after, but it is in UE (which isn't ideal for me). Also - not my video:

Thanks much in advance for any tips - I keep thinking I saw something like this in another DCC but I'm starting to wonder if I made it all up as google is not being my friend.

Replies

  • muchogrande
    Options
    Offline / Send Message
    muchogrande polycounter lvl 4

    Solution found: Houdini KineFx.

  • RN
    Options
    Offline / Send Message
    RN sublime tool

    A rigged character is controlled by keyframe anim from mid spine down, while joints above that physically simulate like a ragdoll. Ideally there'd be a way to blend the amount of physics / keyframe anim per joint.

    I've tried doing that in Blender. While it mostly works somewhat, the problem you run into is that a ragdoll needs the rigid body physics to take over, and this implies making all bones parentless (all are "flying" bones, loose), and this makes things like IK chains impossible to create because they need a bone hierarchy and there'll be none.

    So I'm curious how any solution lets you both have a ragdoll skeleton that can blend with keyframed animation. Maybe using two or more skeletons and some clever layering of constraints? Or maybe animating the keyframe animation first, bake that into flying/parentless bones, then add the ragdoll physics on top of those and blend the two influences, but I've no idea if the result will be useful at all.

  • muchogrande
    Options
    Offline / Send Message
    muchogrande polycounter lvl 4

    Yeah, I hit exactly the same issues in C4D. That's why I was looking for someone smarter than I who had figured that out. Houdini does it with Kinefx. There's a walkthrough the fundamentals here if you're interested: https://www.sidefx.com/docs/houdini/character/kinefx/ragdoll.html

    Video showing what it can do (secondary motion video, second half of the video starting around 2:00) : https://www.sidefx.com/products/whats-new-19/kinefx/

  • RN
    Options
    Offline / Send Message
    RN sublime tool

    Thanks for the links, it's a cool reference. Here's that "secondary motion" vid if anyone's interested:

    But what's discussed in there doesn't seem like something you can't do with at least Blender.

    I thought you wanted to blend an animated bone with its own physics simulation, but if you want to have an animated skeleton with appendages that get animated automatically by physics -- appendages like a ponytail, jiggly boobs, hanging clothing accessories etc. you can definitely do that with something like Blender, as seen in this excellent StackExchange answer: https://blender.stackexchange.com/a/41357

    Edit: as in that dinosaur, you have a main skeleton that gets animated by an artist, but some bones stay still because they'll be animated later by simulation. It's on those appendage bones that you use that "cloth physics" mechanism.

  • muchogrande
    Options
    Offline / Send Message
    muchogrande polycounter lvl 4

    Yeah, sorry - I did mean a blend between the two. If you go near the end of the video (2:34) the narrator describes what you see as a "loose binding between the animation and the physics" - so I assume what I am describing is happening? Thanks for the blender link though - curious to see how it can be handled in that soft.

  • RN
    Options
    Offline / Send Message
    RN sublime tool

    @muchogrande oh sorry, I didn't watch it to the end. I see it now.

    I think we can consider that from-the-neck-up ragdoll blending as an appendage as well -- that is, in relation to the thorax, the neck and limbs etc. are appendages. So a similar mechanism can be used.

    Turns out that on Blender the cloth settings to get this subtle springy action are veeeery sensitive, the slightest tweak can give a whole different behavior.

    What seems to work the best is having the pinning weights along the chain being very close together (like 0.9, 0.8, 0.7 etc. as you travel down the hierarchy) and never reaching zero, as well as having the cloth mass low at around 0.5, then adjusting the global pinning stiffness to get the amount of springiness you want for that secondary motion effect.

    This is an IK chain that I'm controlling, where the cloth mesh (as described in that stackexchange answer, which is just a plain wire-edge mesh) is weighted to a skeleton. It's this 'keyframe skeleton' that will be manipulated by the animator (through rig controls or whatever way you want to dress it up):

    You can then create another skeleton that looks the same as that keyframe skeleton, but where all bones are flying/loose. This is the 'deform skeleton' that will deform your character mesh and will not be visible to the animator. Every bone in this deform skeleton must have a few constraints: one constraint is a Copy Transforms to copy the movement of the corresponding keyframe skeleton bone, and after that you have one or more constraints like in that stackexchange answer to copy motion from the wire cloth mesh (you'll need to create empties/nulls/helper objects and parent them to each vertex of the wire-edge mesh so you have objects to copy transforms from).

    Finally, you can animate the influence settings of all of these constraints to have the deform bones follow the keyframe motion, the cloth motion or any combination in-between.

  • muchogrande
    Options
    Offline / Send Message
    muchogrande polycounter lvl 4

    Thank you so much for taking the time to explain this @RN. This system in Blender makes sense to me, and I can see myself spending more time in Blender due to its rapid innovation. Just an FYI: There's also a plugin for C4D called springy that I think creates the 'spring' / delay effect (but doesn't actually simulate physics).


Sign In or Register to comment.