Download

In additive animations, what pose is the additive offset taken from?

Lets say I have a single frame idle pose and I want to do an additive “breathe” animation on top of it, but in such a way that the breathe could work on any stance (so idle, idle relaxed or whatever). How is the additive offset for a given animation calculated? Is there a “base pose” that you supply that gets subtracted from the additive animation and then blended with the incoming animation?

Basically I want to do what Naughty Dog did with Uncharted and have a long-ish looping “breathe” animation loop additive on top of a single frame non-animating stance pose. That way I get the benefit of having motions that feel similar across all stances where they can be blended.

So for any given animation, what determines the actual additive part of joint rotation? I’m assuming its a delta offset from some input “base” pose. But is that the case?

It depends. When you set an anim to additive, it defaults to being additive from the Base Pose (usually T-pose or A-pose, but technically this is whatever pose the skeletal mesh originally had on import, IIRC).

BUT, you can specify any pose you want by setting an animation and frame inside the anim editor. So if you have an “Idle standing” pose you’ve already made, you can build a good-looking breathing loop off of that (probably easier to do well than trying to do it off T-Pose, little things like shoulder and hand movement can make it tricky to get right), and then specify the Idle Standing pose/anim AT frame 0 to be the reference pose for future additives.

Note that if two anims are of the same length (well, they don’t HAVE to be but it works better), you can specify them as being part of a Sync Group in your State Machine where they appear (each node is set independently). This way you can make, say, a breath loop for normal movements and, say, a separate one for aiming a gun which minimizes hand movements, and use each one separately based on the player’s current State Machine state. By setting a sync group, you can guarantee that the heaving of the player’s chest is synchronized across the two anims since UE4 will use the current time of one to set the current time of the other during a blend/transition.

Hmm, so is there a way to set a new ref pose for the character so that you can do additive animations off a more natural pose than the T pose? Or maybe even a way of extracting a set of animations from one animation when matched against a base (i.e. a subtraction that you can then record).

How would that effect blends? If they are all matched against T pose and I change the ref pose won’t that throw everything off?

As you say, animating against the T pose for something like this wouldn’t really work. Didn’t know about sync groups, thanks for that I’ll look into them.

Yeah, it’s easy. Import your breathing animation, built from the idle pose. Set it to “local space additive” inside UE4’s anim editor. Now, in the ref pose dropdown, select the Idle Pose anim you imported into UE4, and set the frame to 0.

This will configure the breath loop anim to extract additive data RELATIVE to the idle pose anim you specified (at frame 0, which I assume is the only frame if it’s a single-frame pose).

You can do this operation for every single additive anim individually; this way, you can build additive animations based on some known base pose and apply them that way. It also means that setting your breath loop to be additive based on the idle pose won’t have any adverse effects on OTHER additives you might have already set up based on T-Pose.

Thanks, that makes a lot of sense. For some reason I had imagined only one base pose for all animations of a skeleton.

Much appreciated!