Assets Conversion FAQ

When converting a Maya Character as a Golaem Character, you may witness some differences in the viewport. Here are a few things to try.

Checking the exported Golaem Character Geometry File (.gcg)

To be light and efficient, the Golaem Character Geometry File has a couple of constraints which must be respected for the source geometry to be converted properly. If some of those constraints are not fulfilled, it displays them in the Script Editor when exporting the gcg file. Thus, always make sure to check the output any time you're exporting a character. Below is an example of warning and error messages you may end up with. The error messages are as verbose as possible but if you're not understanding one, send it to our support.

// Error: [GolaemSDK]: Maya parent node not found for Maya node "body" when making default rigid skinning, binding mesh to root node. Previz rendering may not be correct. //
// Warning: [Golaem]: While exporting mesh |body|bodyShape, found an empty UVSet named uvSet. Please clean up the mesh, by using different materials for different UVs strategy. This mesh won't use UVs. //

Also, when having an issue, it's recommended to import the gcg file within Maya to make sure it looks like it is expected. Just use the Maya / Import builtin function. Some errors could also be displayed in the Script Editor during import.

Requirements for the gcg file are listed here. If, for some reasons, the source asset can not complied with the gcg requirements, you can still use fbx as a fallback. Notice that using fbx will be way slower at simulation and render time.

Checking the Render

Even if it supports a lot of features, the Render Previz GPU Viewport display mode has some limitations. To make sure you're not falling into one of those, render your simulated Entities with your favorite rendering engine. Those limitations are listed here.

Have you checked your IK Normal Planes? As you may see the fingers of your character won't be able to bend in a correct way. 

IK Normal Planes define in which direction the bones chains bend. They're displayed as white plane in the Locator.
It is important to check they are correctly defined before saving the Character File. As the IK Normal Planes definition strongly depends on how the skeleton has been defined,

IK Normal Planes can be easily set by clicking on the related toggle boxes in the upper right corner of your limbs.

In this example, we only have extension bones mapped for the fingers, so we must select the good IK Normal Plane. Click on the toggle box to try these combinations x, y, z, -x, -y, -z, which works in 99% of the cases.
If the default axis do not work, you can still right click on the limb and go to the "Edit IK Normal Planes" menu to edit values manually (more details about advanced IK Planes edition here)

The IK planes are now in the right direction. 

There is a tool to help you to check if the limbs IK planes are correctly defined or not. Click on "Check Skeleton Mapping" button

If the IK bend in the correct way, save back your gcha and render again your entities, the problem should be corrected.

Notice: If the problem persist, load your gmos and check their IK planes. You may have to make the same corrections on the gmos and saving them back.

As Golaem fully supports fbx's features parenting or any other constraint could be an option but the best practice to add a weapon or any props to your Golaem Crowd characters would be to add a joints to your character rig and then skin your weapon to it. This way you will be able to get a weapon effector in your Skeleton Mapping and then use it with the SetBone Behavior or Detach Behavior

Add a limb into the Character Maker to map your weapon joints as an effector.

Right-click on your bones in the skeleton tab of the Character Maker and edit its physical properties. 

Try to match the physical shape of your bone to the object. For more control you can select it and move it in the viewport.

This way the character's props will be visible in physics shape and will benefit from the Detach Behavior when physicalised. 


Have you checked your character rollbones?
When roll bones are not inline with the arm chain hierarchy or leg hierarchy, and thus are not animated when the arm is animated. When there is skinning on these bones, the vertices skinned to the roll bones appears as not moving while the mesh skinned to the rest of the arm chain is moving.
Actually, if you try to animate the limb directly from the fbx file, you will see the same kind of problems.
There might be some controllers in Maya that allows to control the position of those roll bones when the rest of the limb is moving, but  Golaem Crowd representation doesn't include these controllers.
For now, there are 2 options for your character to work with Golaem Crowd:
- reskinning the character to ensure nothing is skinned on the roll bones;
- changing the hierarchy of bones to have roll bones inline with the arm bone chain and re-create the .gcha from there.
Due to the fact that Characters Geometry are stored as FBX, advanced deformers like Lattices, Muscles, Bend or Twist will not be supported (as they are not supported by the FBX file format). To work around this limitation, you can bake those deformation in a Blendshape (which is supported).
Create a Blendshape of your character influenced by the Deformer and export it with your Golaem Character. Then, for each motion clip which will require your character to deform (leg muscle to bulge for example) keyframe the corresponding values for the Blendshapes.
More information about the Blendshape workflow inside Golaem can be found here.
For more control it's also possible to edit the values of your blendshapes expressions using a Bone Behavior.

Have you checked you don't have any Segment Scale Compensate in your referenced fbx or in the joints of your source animation?

Golaem Crowd doesn't support this feature.

Here is a little script to deactivate it on all joints before exporting the fbx file for the Geometry Group:
$joints = `ls -type "joint"` ;
for( $joint in $joints )
    setAttr -e ($joint + ".segmentScaleCompensate") 0 ;


When retargeting motions from one character to another, it may happen that the elbows/knees are inversed relatively to their original position (see below).

NB: these options do not apply when replaying a motion made on a character and played on the same character. In this case, it will be played perfectly in all cases

In this case, checking the "IK Plane roll from animation" on the Motion Behavior playing the motion can fix the problem.

However, as in the above image, sometime the morphology of the motion source character and destination character are too different and you would like the elbows or knees to be spread more widely.

It is possible to adjust this by using the additional IK offset options in your Motion Mapping File.