Daily Archives: February 25, 2019


Character Creator 3: Head Separation with Morph Preservation in 3DS Max

For my current work, I use Reallusion’s Character Creator 3 for my humanoid characters. They offer a lot of customization, are rigged and skinned, and come with a variety of morphs for facial expressions and lip syncing. One issue, however, is that because I am using these characters in a game engine — in this case Unity3D — the morphs are a bit problematic.

Morphs or Blendshapes are composed of vertex data describing translation of vertices between different blendshapes. You can then interpolate between these shapes to get a variety of small changes in the model.

The entire body mesh uses the morph but most targets just affect the face.

For Character Creator 3 models though, because the head and body are part of the same mesh, the morph data has a lot of empty space for all of the vertices from the neck down that do not move. This post goes over the process I use to

  • Separate the head mesh from the body mesh
  • Reapply morph targets to the head mesh
  • Reskin the separated head and body meshes

Note, these methods utilize 3DS Max; however, they can probably also be done in Blender or Maya using tools that those programs utilize.

Separating the Head and Body

The first part of this process includes separating the head and the body. By default, CC3 characters’ head and body are setup between different sub meshes; unfortunately, you can’t simply just use the head submesh and separated that as some morphs affect vertices in the torso’s submesh.

The first thing I do is copy the original mesh. These processes can cause some issues, so always make sure to have a version of the original mesh just in case something goes awry and you have to start over.

Selecting the Right “Loop”

In the duplicated mesh, I ADD an edit poly modifier. I want the original skinning and morph modifiers to remain. I’ll explain why later. Then, I try to select an edge loop that I’m sure is not affected by any of the morphs. In fact, if you character is clothed selecting an edge loop that is hidden or obscured by clothing would probably be a good idea.

Some morphs affect the neck slightly, so separating the head from the body at the base of the jaw could cause issues.

The goal of this is to eliminate as many unused vertices as possible, not all of them.

This edge loop is hidden by most of the shirt, which is hidden for demoing purposes.

Once the edge loop is selected, press “Split” in the edit poly panel. This will make the torso and the head separate elements. I then select the head elements as well as the eyelashes as they are considered separated elements but are also affected by the head’s morphs — and “Detach” the element from the body as a new mesh.

The body (red wireframe) and body (blue wireframe) separated.

The head and body have now been separated. In fact, the morphs on the removed head still work; however, the skin modifier data is no longer valid. This is because the number of vertices has been altered.

Hair-raising problems

Preserving the Morphs

Despite the morphs still working, they essentially contain the old morph data, the unused vertices we are trying to eliminate.

I wrote a maxscript to preserve this data. It can be downloaded here. To use the script, select the head mesh and then run the maxscript.

What this script does is essentially recreate every morph target but only for the head. Once this script is finishing executing, there will be a new, duplicated head mesh with only the morph modifier on it.

The new head mesh with no skinning

Reapplying Skinning Data with Skin Wrap

So now that the body and head mesh with new morphs have been created, we need to reapply the skinning data. For the first step, I right-click the body mesh and convert it to an edit poly. So, before starting the next step, we should have two meshes. The head mesh with just morph modifier and the body with no additional modifiers.

Anyway, select the body mesh and add a Skin Wrap modifier. This modifier essentially uses vertex positioning to recreate skinning from one mesh to another. In this case we are essentially copying the data from the original mesh to the new mesh. The following are the settings I use to accomplish this:

Skin Wrap Setup

Once the settings are defined, select the original CC3 mesh to copy over its skinning data to this new mesh. Once copied over, you can create a new skin modifier by pressing “button”. This will disable the Skin Wrap modifier and automatically add a skin modifier.

Repeat this process for the head, making sure that the morph modifier is beneath Skin Wrap modifier.

Once done, the head and body should now be separated, the morphs only applied to the head, and both skinned properly and identically to the original CC3 mesh.

Conclusion

In conclusion, these steps should help separate CC3 character heads and bodies while preserving morph targets and skinning data. This is a rather short process, but I hope one day CC3’s exports options include a way to separate meshes on export so this process is already taken care of. In the meantime, hopefully this will be useful for someone working with CC3 and importing their characters into a game engine. Again, here is the link for the Morph Preserve maxscript used during this process.