Maya Live Link axis orientation problem

Hi, I’m trying to set up Livelink between maya 2017 and UE4.23 (Also tried UE4.22). The connection is established fine, but when I go to change the animation in Maya, the Mannequin skeleton falls flat into the ground - see the pictures below. The axis in Maya is set to Z-up and I have been working with the plugin before without any problems on an earlier version of UE4.

I’m using ARTv1 and the LiveLink plugin that ships with UE4.23.

Any ideas?


Not sure on the specific case scenario, but out of curiosity, was the skeletal mesh for the mannequin imported along with live link process or was it the pre-existing mannequin?

Hi, the mannequin skeleton in Maya is from the default character in ARTv1. The skeleton in UE4 is the pre-existing one. Thanks

I have just done some tests in Maya 2017/2018 and the problem is all the same.

Okay, I think I found a dirty workaround. If I rotate the rig -90 degress on the x-axis and then change Maya up-axis to y-up it works.

Maya and UE4 has different coordinate systems. Epic assumes that you should use the Pre Processor and Translator options in the live link options in the editor to convert this offset… I created a patch that takes care of this on the Maya side so you don’t have to apply offsets. Sadly the pull request to apply this patch has been ignored for months. If you want this feature you have to compile the plugin yourself.

@Denny Thanks for the reply, that explains why this is happening. I tried to set the axis switch under pre processors but I cannot select it. I’ll build UE4 from source (with your patch) if I cannot get it working any other way.

20191020-22_18_39.png

Edit: Forgot to mention that I get a warning saying “LogLiveLinkSubjectSettings: Warning: Role ‘LiveLinkAnimationRole’ is not supported by pre processors ‘LiveLinkAxisSwitchPreProcessor_10’” when selecting Axis Switch.

I don’t think Axis Switch is what you want to do. (see its description) You might have to create a custom pre-processor or translator.

@Denny The documentation says “One possible use case is the Axis Switch, that will switch any axis of an incoming transform with another axis.”, so now I’m a bit confused - isn’t that exactly what I want to fix my problem with the wrong axis? :slight_smile: I just don’t understand why LiveLink worked for me in the past with earlier versions of UE4, but doesn’t now…

When you say custom pre-processor or translator, do you mean in Blueprints (as a new class) or in code?

Thank you

Maybe I misunderstood the Axis Switch, but I presume from its description that it is swapping single axis values. Such as X becoming Y. (even though a proper switch of the basis, all three, would give a rotation in practice) I haven’t tried implementing a custom processor myself, I think you have to look at the documentation for that.

I have to ask - Am I the only one having this problem? Because the Live Link Plugin for Maya seems to be broken ATM, and I sincerely hope it gets fixed some day :slight_smile:

@Denny Thanks again for your input :slight_smile:

@Denny You mentioned a pull request for a patch - Do you have a link to it on Github? Thanks

Add support for Maya 2015, PropertyNames on root joint, and reference namespace removal by DennyLindberg · Pull Reque Here’s the pull request. It seems I removed the transform correction from the pull request and I don’t even remember why… Maybe it’s supposed to work again? Gah, I don’t remember anymore. I guess I’m tired of redoing the patches because the pull requests are ignored.

Hi,

yeah i noticed that in the newer version of UE too, but it’s just a visual bug in the live link preview on UE, there is no need to flip axis in maya.

It still works just fine when the fbx animation is exported trough the artv1 tool. Sure it’s an inconvenience but with the camera sync enabled it kinda work just to preview animation.

Thank you - It has been driving me nuts thinking it was just on my computer :slight_smile:

I think I have found why you might have an offset. Is your skeleton by any chance placed inside a transform group in the outliner, or does the root bone of the skeleton have different values than default? If so your subject will be transferred in the space of the transform group, or the root joint might be considered rotated. Even if your character is “standing up” inside Maya, it might actually be lying down in the space of the transform group… and that is what is transferred via Live Link.

I have a character that works flawlessly with live link, both in AnimBP and Preview Controller, and I could offset its orientation by parenting the skeletal chain in a transform group and rotating that. (note that the skeleton is rigged by controllers that maintain the character orientation in the scene)

As a quick fix, you could parent the skeletal chain in a group and rotate that.

@Denny Thanks for the suggestion - I will be sure to check that out when I get the time. I’ll report my findings back to you :slight_smile:

@Darthlatte I’m having the same exact issue! I’m a noob with UE4 so I just assumed it was something I was doing wrong. I haven’t tried previous versions of LiveLink or unreal engines so can’t verify if it works in previous configurations. I’m interested in the possible workaround @Denny mentioned about parenting the skeletal chain in a group and rotating that. Is @Denny saying to group the skeletal chain in UE4 right? (not Maya). Also, how much needs to be in that group? just the skeletal mesh or do I need to group everything such as the Physics_Asset, Skeleton, Anim_BluePrint, as well as the _Remap??) Apologies in advance for asking basic questions … just started picking UE4 up about a month ago.

Also, Unreal announced info about the Indie program. They provided an email address where people can ask questions (and hopefully get answers :). Email address is indies@unrealengine.com - I will post the question there as well.

it came from an Unreal YouTube announcement last week (“An Indie Developer’s Guide to the Epic Ecosystem | Unreal Indie Dev Days 2019 | Unreal Engine”).
See video below at 34:30

You could do both. But because there are so many places in UE4 where LiveLink could be used, it is probably easier to offset the LiveLink data in the source application instead. (unless you mess with the Pre-Processor or Translator in UE4)