Exporting/Importing Advanced Skeleton Rig

I’m totally new to UE4 and need to get a character with a face rig into the engine. I’m trying to use Advanced Skeleton to get a rig into UE4 (because ART doesn’t have a facial setup yet), so I’m running into many, many, many crashes. Here are some of the issues I’ve had:

Exporting FBX from Maya:

  • When exporting a skeletal mesh, I keep getting an error about constraints and needing to bake animation. Baking the animation doesn’t prevent the inevitable crash when I try to import an animation later on.

  • As a result of the previous error, I decided to create a separate skeleton and bind the mesh to that one. This skeleton only takes direct connections and orient constraints (similar to the ART rig). This stopped the constraint error, but UE4 still crashes when I try to import an animation to the skeletal mesh.

Importing FBX into UE4:

  • I’m able to get a skeletal mesh into the engine, but animation have been impossible so far.
  • I’ve had errors say something about ‘root track’ missing.
  • 95% of the time UE4 just crashes.

The file is a little too big, so here’s a [LINK][1]

  • UPDATE:

I’ve done some more tests today and I think the problem is with the AS skeleton (or at least related to it).

ART exports a clean scene (the default one is mannequin_export) which contains the bound mesh and skeleton only. This scene is then referenced into the rig scene where connections are made so that the rig can drive the clean skeleton and geo. The clean skeleton and geo can then be exported to unreal.

I’ve tried copying this setup, first with the UE4’s mannequin_export file being driven by the AS rig. I referenced the ART mannequin_export file into my rig scene and had my rig drive a few bones from that file. I exported the skeletal mesh and an animation and it worked!

So I tried repeating this setup with the AS skeleton. First I needed to create my own AS_export scene. I duplicated the skeleton and exported it as an .mb. I then exported the mesh as an .obj. I brought the skeleton and mesh into a clean scene (called AS_export) and set it up like the mannequin_export scene. I then imported this AS_export scene into my AS rig scene. I made a script to connect all the driving joints to the AS_export joints. Exporting worked well (I got an error (image below) about not being able to find bind poses when making a skeletal mesh export, but redoing the AS_export scene fixed this), but I’m still getting crashes on animation import into UE4. Any suggestions?

I ended up solving the problem by making a quick script to build a new skeleton on top of the AS skeleton hierarchy. It still needs some work but it gets you 95% there. All you need to do is manually move the joints around so they look like your rig’s hierarchy.

import maya.cmds as mc

# Select root of ■■■ deformation skeleton

def mb_buildFreshSkel():
    
    selection   = mc.ls(sl=1)
    root_hi    = mc.select( selection, r=True, hi=True )
    root_hi    = mc.ls(sl=1)
    mc.select(cl=True)
    
    print root_hi
    
    for joint in root_hi:
        
        new_joint = mc.joint( name='drvn_{0}'.format( joint ), position=[0, 0, 0] )
        joint_pc  = mc.parentConstraint( joint, new_joint, weight=1 )
        mc.delete( joint_pc )
    
    
mb_buildFreshSkel()

I have been dealing with the same issues for the last week. Yours is the first post I have found about the subject anywhere. Thanks for posting your findings!

I am trying to use your script but can’t seem to get it to work. I’ve selected the Root_M but when I run the script it gives me this error. // Error: Line 2.1: Syntax error

Thanks again for sharing your findings!

It should work. Looks like the formatting is getting ruined when its pasted into Maya’s script editor. Make sure you’re running it in a Python tab (not MEL) and that the indentations are the same (1 indent = 1 tab or 4 spaces)

I edited this comment before, but it deleted the answer so here it is again. Make sure when you paste this into Maya’s script editor that you’re using a Python tab and the indentation formatting is the same as above.

Awesome, thanks borbs. So I did get the script to run and build me a rig, but it is a bit of spider web. Is that what you mean by move things around, re-parenting the joints?

Also the project I am working on we are trying to get the facial rig system to work in Unreal as well. Have you done any experimenting with the facial rig system?

Yep, that’s how it looks after you run the script. Just move the joints around in the outliner to match your hierarchy in the rig. I don’t have time to automate the rig rebuild process right now, but it’s not too much of a pain.

I’ve done some testing with the face. This is my first time making something for a game, so I’m not sure how this workflow is going to turn out, but this is what I’m doing so far:

  1. First of all, set up a separate scene for the skeletal mesh, i’ll call it the skelMesh scene ( only the skeleton and bound geo will be in here). We’ll import this into the rig scene later and use the deformation skeleton to drive the skelMesh bones. This ensures that your exports to UE4 will stay clean.
  2. In the rig scene, finish building the advanced skeleton face.
  3. Rig scene still: Go to the body deformation skeleton> go to the Head_M joint> and start to add face joints under that joint (see pic below). I put them all over the face. The eyes and mouth have about 1 joint per vert.
  4. Rig scene: I use a script like DJRivet to ‘rivet’ these new bones to a follicle that follows the face geometry deformations.
  5. skelMesh scene: Once this is set up, I update my skeletal mesh scene to include the face bones we added under Head_M
  6. Reference the skelMesh scene into your rig scene
  7. Rig Scene: Have the deformation skeleton drive the skeletal mesh skeleton (I do direct connections for translate and scale, orient constraint for rotation). Use the script in the next comment to automate the process a bit.
  8. Rig Scene: Then paint weights of the skelMesh geometry (export those weights and apply them to the skelMesh scene)(I paint weights here because I can animate the rig and see deformations more easily than in skelMesh scene)

Hope this helps!

import maya.cmds as mc

# Select the Deformation skeleton first (driver) and the skeletalMesh joint second (driven) then run the script
def mb_drive_joints():
    
    selection    = mc.ls(sl=1, type='joint' )
    driver_joint = selection[0]
    driven_joint = selection[1]
    
    mc.connectAttr( '{0}.translate'.format( driver_joint ), '{0}.translate'.format( driven_joint ), f=True )
    mc.orientConstraint( driver_joint, driven_joint, mo=True, weight=1 )
    mc.connectAttr( '{0}.scale'.format( driver_joint ), '{0}.scale'.format( driven_joint ), f=True )
    mc.select( driver_joint )
    
mb_drive_joints()

Fantastic!!! I will try to work through these steps in the next day or so.

In the meantime I wanted to ask, In your pursuit to find a face rig solution what else have you looked into? Have you spent much time looking into other face rigs and their setups and compared them to what Adv Skeletons rigs?

As an artist who is in over his head on the tech side of things Adv Skeleton is a god send for building rigs quickly. The tool is amazing. However I’m worried it is generating a face rig that is too complex for the engine. All of the face rigs I can find, such as the boy and his kite, and Henry are maybe 15 bones in the face. I think they are driving morph targets, which have been some time since I worked with.

What do you think?

I’ll get back to you when I try this stuff out. Thanks again!!!

-CB

I didn’t think to check out those resources, i’ll take a look!

I’m strapped for time, so I figured that advanced skeleton has all the blend shapes already pumping deformations into a face mesh, why not just take as much data as I can from that mesh and send it to the export mesh via bones (instead of setting up morphs). I haven’t tested blend shapes in UE4 yet, but if the rig proves to be too heavy or incapable of performing well, I’ll just take the blend shapes from the AS rig as a starting point, edit them, and then go from there

-MB.

Here’s two different workflows from the author of the advanced skeleton
https://www.youtube.com/watch?v=n1L40oitizU

Most of the people face the problem to export the animation from maya to Unreal.Here you can find the answer.In this video tutorial i have shown how to rig the robot then export the animation from maya to unreal.i also shown how to import the animation into Unreal. I Simply rig the Robot with Joints and i did not used any constraint or IK.

After Watch this tutorial you will learn the method of exporting the animation for maya and importing into unreal Engine.this is very simple technique but very useful.[CLICK HERE FOR TUTORIAL][1]

[1]: