Surface Morph



Example animations Page

Surface based morphing - rather than calculate a deformation in object space, the deformation is calculated in surface space which is independent of the current pose: this means you can do things like morph above deformation modifiers in the stack. For example you can deform/skin a low resolution character, then subdivide and morph up wrinkles or other deformations on the animated high res mesh, using morph targets created with the high resolution mesh.

Surface morph also hooks into the data the Tension Modifier generates, using the compressing/stretching areas as masks for easily dialing up morphing in compressed/expanded areas - for example procedurally have skin bunch up inside elbows, etc. This is a generic use of map channels (vertex colours) with the ability to pick RG or B - so you can generate the mask any way you like. If you are using a progressive morph target, you can have it mask through the progression, allowing fine control of how a target is dialed down as the effect diminishes.

Useful in combination with my MapToVColor modifier, which will convert a 3dsmax texture map (ie bitmap sequence) to vertex colors (and optionally selection as well) - and this data can be used as a mask in the same way as the standard Tension data flowing up the stack - ideal for using Tension data that has been RTT'd to bake it out.

While the deformation itself occurs in surface space, targets are still modifications of the reference mesh of the morph. The Extract target option allows you to model on top of the stack - ie in a pose you need to correct - and it will convert that to a modification of the base reference mesh for use as a target.


Load PointCache2 files (PC2) as a target, with ability to mask through the progression of the target (see examples)

Use Tension Modifier output as masks for the morphing (vertex colors).

Paint masks interactively on the mesh, including Blur Paint and a 'Blur All' button.

Use target selections as a mask (including soft selection - requires capturing selection with the target selected).

Per channel support for using or ignoring the stack selection.

Progressive Targets - with choice of interpolation algorithm: linear, bezier and hermite. Bezier interpolation provides generally smoother results that the built in 3dsmax morpher. Hermite gives tension and bias options.

Cumulative morph mode - a morph can work on top of morphs earlier in the morph list or based on the stack mesh.

Extract modelled target: model a shape on the deformed object at the top of the stack and extract that as a morph target you can dial in.

Auto-reload specific channels rather than being forced to reload them all.

Individual toggles for enabling/disabling channels as well as progressive targets.

Optionally use a reference mesh for the base pose, rather than the stack object. Allows for some interesting results when the reference itself is deformed.

Support for masking based on soft selection of the targets, stack or reference mesh.

Scripted UI - extend/rewrite to fit your pipeline, MXS UI is not encrypted or any such malarky.


Surface morphing allows possibilities such as morphing on top of a cloth simulation, or adding finely controlled details to a character tesselated above a baked pointcache (where a displacement map does not give enough control). The progressive targets allow smooth transition between the target list, and allows for greater control over - say - the way skin bunches up or stretches out - rather than simply a linear morph fading out at the edges of the mask, the wrinkles/stretching skin can transition between different controlled shapes.


It's not a perfect world, and surface morphing has it's limitations: low res meshes don't work well, nor areas where the mesh has sharp creases and you are morphing a reasonable distance: tiny changes in the surface can mean large deviations in direction for your morph. If you are having troubles then try subdividing your mesh/targets and see if it gives you better results.


Limitations - No support for Patches or Nurbs. Supported types are TriMeshes, (ie regular editable mesh stack), and PolyMeshes.

NOTE: Surface morph is slower than the standard morpher - it is doing many more calculations so it is not suprising, though it is very usable regardless. Point caching the result is recommended for very heavy meshes (or very slow computers). You can use SurfaceMorph in 'Local' mode (ie not surface based) and if all channels are set to local it will be faster to calculate.

Example animations Page

Download Surface Morph for 3dsmax 2013/2014 64 bit

Download Surface Morph for 3dsmax 2015/2016 64 bit

Download Surface Morph for 3dsmax 2017 64 bit

Installation instructions
Unzip the downloaded link. The dlm goes into your plugins directory, and the .ms file into your scripts/startup (if not startup then make sure it's evaluated at some point). The UI is scripted - use the button in the modifiers controls to open the UI.

USE AT OWN RISK. Surface morph has been used in production for many years, but the UI is really crappy (I always intended to rewrite when done, surface morph is not actually done - missing a 98% complete feature of no need for vert ordering or vert count to match).

Credits: Surface Morph was written by Grant Adam.


If you find SurfaceMorph useful and would like to show your appreciation feel free to use the button below. Thanks in advance :)