Morph Transfers Between Meshes

Obsolete. This documentation refers to either a deprecated system or an unsupported function or feature.

Transferring Morphs Between Meshes

Working with morphs is always a little messy, especially when working with morphs in 3ds Max. That being said, transferring morphs between two different meshes, which have different point indices and topologies, in 3ds Max, is even messier.

Take this image as an example:

Here you have two models, one model that has a morpher applied to it that contains a number of morphs, and one model that you want to transfer the morphs onto. The two models above are the ones used in this example; let's call them Hawker and Woodsman.

The model you want to transfer the morphs to (Woodsman) supposedly has a different topology/vertex layout. Ideally, the woodsman will have a similar edge layout and close to the same, or lower, polycount. Although this is not essential, it will make the process easier and faster. It's possible to transfer morphs from Hawker to a Whale; it just takes a little longer.

The first thing you want to do is position Hawker to Woodsman. If you want you can match the pivots as well, although it's not necessary. Before going further you should duplicate Woodsman, hide the original, and continue working with the duplicate.

A good rule of thumb is to duplicate your models several times throughout the process as backups. You can delete them when the transfer is done.

Using MirrorVerts

One of the annoying issues in working with morphs on a symmetrical model is that you can't just delete half the head and use a symmetry modifier. If you did that, you would loose your original vertex ID's, and that will mess up your morphs. A way around this is using a plugin called MirrorVerts. Using this plugin you will be able keep symmetry in your morphs when it's desired. (The MirrorVerts script is attached to the bottom of this document)

If you want to use this script it is important that your model is symmetrical and that the models center line/edge is positioned one X axis at a value of 0. Now you select the Woodsman as Source Model.

Go into poly edit, vert mode and select all verts on the left side of the head, don't include the center line points.

Now go to RecordVertPairs. Save the data wherever you want. When it's stored, LoadVertPairs and load the data you just stored. Select Woodsman as BaseModel and do the same for TargetModel.

Now you can move about any vert on the left side of the model and select L -> R mirrorVerts to mirror the changes to the right side.

Snapping Verts

This is where the process gets a little messy and tedious. The idea is as follows:

The verts on Hawker will control the position of the Woodsman verts. To get the most accurate transfer, you should match the Woodsman verts as closely as possible with the ones on the Hawker model.

The fastest way to do this in 3ds Max is by snapping the Woodsman verts to the corresponding Hawker Verts.

The first thing you can do, to make it visually less confusing is to hide the all polygons on the left side of the X axis for both Hawker and Woodsman. Now try matching the shape of the Woodsman head to the shape of Hawker head. Try roughly matching the position of the major facial features, like the eye, nose and mouth.

An important thing to note is that you should not edit the model topology. Meaning, you can't start deleting or adding edges, verts or polys: only move the verts. When both models are more or less matching in shape and proportion you can start snapping the Woodsman verts to corresponding verts on Hawker. It's important that every vert on the Woodsman model is snapped to a vert on the Hawker model. You can snap multiple verts of Woodsman to one vert of Hawker. As long as that vert is somewhat matching in position. You obviously shouldn't snap a vert that is positioned on the Woodsman's nose to a vert on Hawker's ear. Avoid extremes like that.

When you're done snapping all of the verts, you can unhide all polygons and use the MirrorVerts plugin to symmetrize the model. You should end up with something like this.

It's still the Woodsman topology, it just has Hawker's shape.

Skin Wrap

Now you want the Hawker verts to actually control the Woodsman verts. To do that, use a Skin Wrap modifier.

Select the Woodsman and add a Skin Wrap modifier to it. In the Skin Wrap modifier add the Hawker model as deformer.

Now check the Hawker model and check it's morphs. You will notice that the Hawker morphs are deforming the Woodsman as well. Every vert on Hawker has a threshold radius. If one of the Woodsman's verts falls within that radius it will deform it. Since all of the Woodsman's verts are snapped to corresponding Hawker verts you can set this threshold radius to it's minimum.

Doing this, a Hawker vert will only deform a Woodsman vert if it's laying directly on top of it: which is what you want.

cryTools MorphManager

To continue you need the Crytools suite of artist tools for 3ds Max. Go to the cryTools menu, choose cryMorphManager and select the Hawker model.

Set the Hawker model as Original Head.

Set the Woodsman model as Target Head.

Check Translate 20 units. (additionally you should create a new layer and set it as active)

Finally, click Bake Out Transfer. Now you have the baked out morphs of Hawker with the Woodsman's topology and Hawker's shape:

Applying the Morphs

You want to keep these morphs, but have them looking like the Woodsman.

Select the Woodsman model, and delete the Skin Wrap modifier.

Add a Morpher modifier.

Select all baked out morphs, and select Add Selected Morphs to Picked.

Now unhide the original Woodsman model. (the one you made a duplicate of earlier, that still looks like the woodsman).

And add the original Woodsman as a morph to the Woodsman looking like Hawker, and set the morph value to 100.

Baking and Cleanup

You can delete all models except the Woodsman containing the morphs.

Keeping the Woodsman Original morph to 100 you can now bake out the morphs.

Select the Woodsman model and open the CryMorphManager.

Check Load Morphs From Selected and uncheck Enable dirty output.

Enter a layer name and click Bake Morphs.

The accuracy of the results will depend on how well both models match in shape, topology, and polycount. You can clean up the morphs if desired and then rebake them.