Hi, sometime ago I saw this interesting article http://peyman-mass.blogspot.com.es/2015/11/how-to-mirror-3d-character-animations.html made by animation programmer Peyman Massoudi, he was very kind to share his work with the community, and looking through it I tried doing something similar using blueprints at first. Here is my progress so far.
Here’s a link to download the project and test your own animations https://www.dropbox.com/s/4q6lc8djo4fxjwe/myMirroring.zip?dl=0 (Unreal Engine Version 4.14)
Right now it needs the use of an additional Skeletal Mesh Component (the Pink one) that has the same animation blueprint as the Skeletal Mesh that you are trying to mirror (the blue one), in order to extract the original bones rotations, convert them, and apply them when necessary.
Because of this, the approach has some cases where it won’t work properly:
-The main Skeleton and the Additional’s animation blueprint can unsynchronize causing the mirror animation to be different from the one intended to be mirrored.
-Root motion animation has to only translate forwards or backwards without rotation or the character will look strange appearing in the animation like its moving right but moving left instead.
-Also the fact that you have 2 separate Animation Blueprints simulating at the same time for each character can end up impacting performance.
So now I want to wrap this into a nice Animation Graph Node that will likely solve some of this problems. But the tutorials and such that go into this subject seem to be outdated, here this post describes perfectly the problem that I am encountering when trying to create a custom AnimGraph Node https://forums.unrealengine.com/showthread.php?122765-How-to-make-custom-anim-nodes-in-4-13&highlight=animgraph+node
If anyone can share what is the new approach to achieve this, it will be greatly appreaciated as there are more unanswered questions from other developers that are having the same issue.
Managed to make an AnimGraph Node that does all the work without the need of a second SkeletalMeshComponent. Next thing I’ll do now is make it so that RootMotion can also be mirrored.