I’ve always been interested in some documentation on the mannequin meshes and what different bones are for in the IK setup.
I’ve actually ended up modifying the mannequin for my own needs and had success with my own IK setups because I couldn’t really figure out how or why the defaults were done.
The UE5 Mannequin seems even more complex and has all these new corrective bones. There are various rigs that come with the mannequin. I was checking out the Lyra project and the Third Person example and there are a lot of new additions. I was hoping for an explanation of what some of the different assets are used for and where.
Maybe if I understand how to use the default mannequin better I won’t need to come up with my own skeleton setups, and use what comes out of the box.
One thing I don’t get is in the UE mannequin you position the hand itself somewhere. But my setup has a bone relative to the hand and gives me finer control. I position my hand such that the child of my hand lands at the destination transform, and that bone can be animated. It makes it so I can have a finger tip touch a button, for example, or have my hand hold an object or weapon exactly how I want. I can also animate this child bone to force my hand to be relative to that object. In fact I have a few child bones, one may be relative to a prop my character is holding, and the other one is just where I want the hand to be in character space. So my animation can fade using a curve between moving off of the gun, to reaching for a magazine on my character’s belt.
I’m not sure how a lot of these types of things are possible without my custom setup.
I would also be really interested in this. One thing I did figure out by poking around and Googling a bunch is the purpose and mechanism of the corrective bones:
If you open the post-process animation blueprint (under the “Rigs” subfolder of the mannequins) you’ll see that the anim graph is just a chain of Pose Driver nodes. Select one of them, and in the Details panel under Settings (at the very bottom) you’ll see a Pose Asset assigned. Open that, and underneath the asset viewport you’ll see a table of pose names and weights. Set one the weights to 1.0, and you’ll see the mesh assume that pose in the viewport.
This setup is called an “RBF” (radial basis function) system, and the way it works is a lot like corrective blendshapes/shape keys/morph targets, except instead of correcting the deformation by directly moving the vertices, you correct the deformation by adjusting those corrective bones. (This is nice because you can (theoretically) reuse the same corrective setup on different meshes.) Basically, you have one driver bone (e.g., thigh_x) which drives the position of several corrective bones (e.g., the bones under thigh_x > thigh_correctiveRoot_x) by interpolating and blending between their positions within those different poses in the pose asset.
That said… I tried to set up a skeleton following this template in Blender, but I had a hell of a time trying to bind the mesh to the rig with the right weights to get the corrective bones to work as intended. This is probably because I have no idea what I’m doing (I’m an engineer), so your mileage may vary.
I hope they do a Feature Highlight or Inside Unreal stream diving into the new mannequins and animation features soon! It all looks very exciting but also pretty overwhelming.
I did also find that a post process anim blueprint seems to be driving these on the fly based on the way the main bones are deformed?
From a vertex skinning standpoint, this seems like it’s even more complex work and trying to paint the weights. I might actually avoid using these simply to lower that part of the workload in the game we’re currently building. It’s really cool, but I think I can live without corrective bones for now. Maybe in a future project.
As for the IK rig editor, I did look through that before. It’s more for setting up general IK rigs in any setup, not just unreal’s.
It doesn’t really explain why unreal has the ik bones it does. The funny thing is, I just realized I made a similar forum post long ago and don’t even remember. Explanation of the mannequin IK bones?
Yeah, the “driver bone” specified in each PoseDriver node determines the weight of the target poses. So for example, let’s say your thigh bone is rotated 40° on the X axis during some animation at runtime, and the thigh bone is specified as the driver bone in the PoseDriver node, and the target poses have their thigh bones rotated like this:
Pose A: 0°
Pose B: 15°
Pose C: 30°
Pose D: 45°
40° is 2/3 of the way between 30° and 45°, so the PoseDriver node will reposition the specified corrective bones so that they’re a blend of their positions in Pose C (with a weight of ~0.333) and Pose D (with a weight of ~0.666). So to get the deformation corrections you want, you just need to create those poses in your DCC and supply them to the PoseDriver, and then when you’re creating your actual animations you only need to worry about keyframing the thigh bone, because the post-process ABP will handle the corrective bones for you. Does that make sense?
For what it’s worth, I did some more research last night, and I think the puzzle piece I was missing is that you want to bind only your main bones to the mesh with automatic weighting, and then weight-paint the corrective bones with only a small amount of influence… so yeah, definitely some tedium, but maybe not as bad as I was expecting. I’ll give it a shot this evening and see what I can come up with.
Ha! I’ve been to that thread via Google a few times now. I’m still not really sure if I get it, but it sounds like the only reason you’d really want them in Unreal is for procedural animation techniques using the animation blueprints. For example, you could do some collision tracing against the ground and use that info to position the foot IK targets, and then use some of the anim graph’s IK nodes to solve for rotational adjustments to the FK bones to keep your character’s feet planted on uneven ground like stairs and slopes. You could probably just use virtual bones for the same purpose instead of exporting them from a DCC, but the UE4 mannequin probably pre-dates virtual bones.