Answered

Additive Difference

Carpetcrumb 1 month ago updated by Peter - Soxware Developer 1 month ago 5

Hey there, I am looking for a way to add the difference of two poses to the Additive layer. The thought behind this is, I have an idle animation, and I have a take-damage animation. They are nearly identical, except the arms are improperly positioned on the latter. What would correct this is if I could add an additive layer to the second animation, adjusted until the first frame matches the starting frame of the idle animation. This way the fist and last frames of both animations match each other and the take-damage animation still plays relative of its base layer. Copying the keys from the base layer to an additive layer of course does not work, and overriding the pose of the arms will mean his arms wont move relative of the base layer. Am I missing something? Is there another way to go about this? Thank you.

UMotion Version:
Unity Version:

Answer

Answer
Answered

Hi,

thank you very much for your support request.

Your thinking is correct. While there is no automated way to get the difference, you could do it manually:

  1. Copy the keys of the target pose from the first animation (idle) and insert it as frame 0 in your second animation (take damage). If you only want to manipulate the arm pose, copy only the keys of the arms.
  2. Add an additive layer and open it.
  3. Set the frame cursor to frame 0 and create key frames for all arm bones (with no changes).
  4. Set the frame cursor to frame 1 and adjust the pose until it's in-line with frame 0. You might need to jump back and forth between frame 0 and frame 1. I would suggest using "Auto Key" in "Generate" mode to automatically key your changes, so that you don't have to manually create keys every time you go back to frame 0.

I hope this helps. Let me know in case you have any follow-up questions.


Best regards,
Peter

Answer
Answered

Hi,

thank you very much for your support request.

Your thinking is correct. While there is no automated way to get the difference, you could do it manually:

  1. Copy the keys of the target pose from the first animation (idle) and insert it as frame 0 in your second animation (take damage). If you only want to manipulate the arm pose, copy only the keys of the arms.
  2. Add an additive layer and open it.
  3. Set the frame cursor to frame 0 and create key frames for all arm bones (with no changes).
  4. Set the frame cursor to frame 1 and adjust the pose until it's in-line with frame 0. You might need to jump back and forth between frame 0 and frame 1. I would suggest using "Auto Key" in "Generate" mode to automatically key your changes, so that you don't have to manually create keys every time you go back to frame 0.

I hope this helps. Let me know in case you have any follow-up questions.


Best regards,
Peter

Thanks for the quick response, Peter! I can't get the animation to line up exactly, but close. It will do for now, thank you.

In-game, the animator state transition should blend smoothly from idle to idle hurt thus should hide small differences. Maybe your transition time is too short or 0?

Best regards,
Peter

No, you're right, you can't tell in-game. Just my preference that they would be the same...

Also, it is much more difficult to use this method when the entire pose is off, than just the arms. Any chance a 'paste-difference' feature would be added? After copying keys, when pasting them into an additive layer have the option to right-click>'paste difference', which calculates the difference from the store copy and the base layer. I will have to see if I can add it myself if not cause I find it incredibly useful, incredibly often.

Thanks for suggesting this feature. I've put it on my "ideas for the future" list but unfortunately I can't promise on an ETA yet as I'm currently very limited on time due to another project of my company.

Best regards,
Peter