Logo   Home Table of Contents    News  Dev Blogs  Gallery  Timeline  Legend  Tags 
Join us on... 
Banner

Current: Month Day, Year

4.5 Body Morphing (Targets)

Mechanism of body morphing (Targets) explained.

Morphing

There are several ways to explain what morphing means, usually a morphism is a structure-preserving map between e.g. algebraic structures. In MakeHuman2 the number of vertices and there relations to neighbouring vertices are preserved. There are different terms for this feature: Blender calls morphs shape-keys, in old MakeHuman1 the morphs are named targets.

The technical correct term would be morphing. Using the initial mesh M1 and the deformed morphed mesh M2 , a parameter t in the range [0..1] describes how much the initial and deformed morph are used by linear interpolation.

MResult = (1-t) * M1 + t * M2

All morphs work like this, however the combination of different but related morphs create a larger variety of possibilities.

Most morphs are bidirectional, so there is a decrease morph and an increase morph of a certain feature and a neutral position where none of these are used (example for hm08: leg size). So slider ranges from -100 to 100 which internally represents -1 to 1 and all negative values are used for decreasing.

The known target opposites are mentioned in the base.json file, for an hm08 mesh the opposites are:

"decr": "incr", "down": "up", "in": "out", "backward":"forward", "concave": "convex", "compress": "uncompress", "pointed": "triangle", "square": "round" Unidirectional morphs one can find for e.g. head shapes, they are also most common for user morphs.

Macro morphs are more complicated, they use a certain percentage from a number of features. For the hm08 base mesh the influence of the muscle slider will combine age, proportion, height and gender characteristics and will involve these morphs. Therefore it will use a certain percentage of a number of predefined morphs using the following name pattern:

<gender>-<age>-<muscle>-<weight>

using:

Example: a female aged between child and young with approximately 70% of muscle and 75% of weight would result in using the following morphs:

23% female-child-averagemuscle-maxweight 17% female-child-maxmuscle-averageweight 17% female-child-maxmuscle-maxweight 6% female-young-averagemuscle-maxweight 4% female-young-maxmuscle-averageweight 4% female-young-maxmuscle-maxweight

Hint: missing percentage is from female-child-averagemuscle-averageweight and female-young-averagemucle-averageweight, which are the standard values for each age

Making & Using Custom Morphs

Custom morphs can be made with maketarget version 2. You need a standard base mesh like the hm08 one with exactly the same vertex numbers as the internal base inside MakeHuman 2. These bases are usually available in makeclothes 2.

Name your morph meaningfully and press “add new target”. You will get the Basis and a new shape key named like your morph. After modifying this shape key save it as a target. Own targets must be placed in your USERHOME folder, so e.g. for the hm08 base it would be placed in:

USERHOME/target/hm08

If you work with a lot of own morphs and want to keep it structured, best to use yor own subfolders, like

USERHOME/target/hm08/head

There is also a limited way to create bidirectional morphs by naming conventions. Morphs in same folder named like:

USERHOME/target/hm08/head/mymorph-decr.target
USERHOME/target/hm08/head/mymorph-incr.target

will result in a bidirectional morph.

It is also possible to equip the morphs with icons (png files only). The icons must be placed in the folder:

USERHOME/target/hm08/icons

They are named as the morph including the subfolder connected by ‘-’. In case of a bidirectional morph the name should not contain “-decr” or “-incr”. So an image:

USERHOME/target/hm08/icons/head-mymorph.png

should display the head-mymorph.png icon instead of the generic one.