# How can I implement procedural humanoid generation like MakeHuman?

Some applications allow you to generate a human mesh by simply adjusting parameters. The results are broad and convincing: you can get from a thin asian girl to a muscular african man by just adjusting those. MakeHuman, for example, exposes the following UI:

What is the technique and what are the formulas used to implement that kind of procedural humanoid generation? Is there any published study/resource with the required information?

• If you are really interested and won't get an answer, you can check the source code of Makehuman. ;) – János Turánszki Jan 8 '15 at 23:43
• @JánosTuránszki that is what I am doing right now, thank you! The project is big, though, so it should take some time until I manage to filter the required information out. – MaiaVictor Jan 9 '15 at 0:34
• A few variants of base mesh + lots of shape-keys + premade textures + predefined mesh-to-bone binding + a vertex merging algorithm. (Because they have the mesh split into several parts which seem-lessly blend with each-other.) – Wolfgang Skyler Jan 9 '15 at 1:01
• Thank you! But TBH I have no idea what are shape-keys or predefined mesh bindings, nor what that vertex-merging algorithm would look like (is it just an average morphing from mesh A to mesh B?) - You seem to know enough to post a very meaningful answer! – MaiaVictor Jan 9 '15 at 1:03
• Sorry, that has better phrasings. Predefined skeletal bindings? Skeletal animation? Maybe just Animation? Yeah. It's basically just a morph. Best done with offsets so that you can do multiples at once. – Wolfgang Skyler Jan 9 '15 at 2:23

So you start off with a base mesh. Maybe a few. It might be split up into multiple portions (eg, the shoulder mesh, the neck mesh, the head mesh.) Each section might have a variety of "options" (eg. elf, male, female, etc.), alternatives that can be swapped out into the same position. You can think of it much like a seamless texture. As long as all the edges line up exactly, you can do whatever you want in the middle.

Vertex merging/vertex welding/removing duplicate vertices/whatever else it's called, is merging all those parts into one solid mesh/humanoid. You have all those meshes, defined by vertices, whoms edges line up just right so that you don't see any lines between them. What that means is that both part-mesh a and part-mesh b both need to have vertex(s) at p to have a seamless edge. When combining it so you can see it as a whole, you remove the duplicate, so there's only one p instead of one p for mesh a, and one for mesh b. If that makes any sense.

You can google around for a better explanation.