# MakeHuman

MakeHuman is a free and open source 3D computer graphics middleware designed for the prototyping of photorealistic humanoids. It is developed by a community of programmers, artists, and academics interested in 3D character modeling.

## Technology

MakeHuman is developed using 3D morphing technology. Starting from a standard (unique) androgynous human base mesh, it can be transformed into a great variety of characters (male and female), mixing them with linear interpolation. For example, given the four main morphing targets (baby, teen, young, old), it is possible to obtain all the intermediate shapes.
Using this technology, with a large database of morphing targets, it's virtually possible to reproduce any character. It uses a very simple GUI in order to access and easily handle hundreds of morphings. The MakeHuman approach is to use sliders with common parameters like height, weight, gender, ethnicity and muscularity. In order to make it available on all major operating systems, beginning from 1.0 alpha 8 it's developed in Python using OpenGL and Qt, with an architecture fully realized with plugins.
The tool is specifically designed for the modeling of virtual 3D human models, with a simple and complete pose system that includes the simulation of muscular movement. The interface is easy to use, with fast and intuitive access to the numerous parameters required in modeling the human form.
The development of MakeHuman is derived from a detailed technical and artistic study of the morphological characteristics of the human body. The work deals with morphing, using linear interpolation of both translation and rotation. With these two methods, together with a simple calculation of a form factor and an algorithm of mesh relaxing, it is possible to achieve results such as the simulation of muscular movement that accompanies the rotation of the limbs.

## License

MakeHuman is free and open-source, with the source code and database released under the GNU Affero GPL. Models exported from an official version are released under an exception to this, CC0, in order to be widely used in free and non-free projects. These projects may or may not be commercialised.

## Awards

In 2004, MakeHuman won the Suzanne Award as best Blender Python script.

## Software history

The ancestor of MakeHuman was MakeHead, a python script for Blender, written by Manuel Bastioni, artist and coder, in 1999. A year later, a team of developers had formed, and they released the first version of MakeHuman for Blender. The project evolved and, in 2003, it was officially recognized by the Blender Foundation and hosted on http://projects.blender.org. In 2004, the development stopped because it was difficult to write a Python script so big using only Blender API. In 2005, MH was moved outside Blender, hosted on SourceForge and rewritten from scratch in C. At this point, version counting restarted from zero. During successive years, the software gradually transitioned from C to C++.
While performant, it was too complex to develop and maintain. Hence, in 2009, the team decided to go back to the Python language (with a small C core) and to release MakeHuman as version 1.0 pre-alpha. Development continued at a pace of 2 releases per year. The stable version 1.0.0 was officially released March 14, 2014. MakeHuman 1.1.0 has been released May 14, 2016, around two years later. The most recent intermediate version is 1.1.1, as of March 5, 2017.
A community website was established in June 2015 featuring a forum section, a wiki, and a repository for user contributed content for the program.

## Evolution towards a universal model topology

The aim of the project is to develop an application capable of modeling a wide variety of human forms in the full range of natural poses from a single, universal mesh. For this purpose, the design of a 3D humanoid mesh that can readily be parametrically manipulated to represent anatomical characteristics has been pursued, the mesh includes a common skeleton structure that permits character posing. MakeHuman Team developed a model that combines different anatomical parameters to transition smoothly from the infant to the elderly, from man to woman and from fat to slim.
The initial mesh occupies a middle ground, being neither pronounced masculine, nor pronounced feminine, neither young nor old and having a medium muscular definition. The goal was to depict a fair-built androgynous form, named the HoMunculus. The current MakeHuman mesh has evolved through successive steps of MakeHuman project, incorporating lessons learned, community feedback and the results of considerable amounts of studies and experimentation.
Evolution of the mesh for the human model:
* A first universal mesh prototype (head only), done in 1999 using makeHead script, was adapted for the early MakeHuman in 2000.
* The first professional mesh (HM01) for a human model was realized by Enrico Valenza in 2002.
* A second remarkable mesh (K-Mesh or HM02) was modelled by Kaushik Pal in 2003.
* The third model was created by Manuel Bastioni upon the Z-Mesh or HM03 in 2005.
* With experience from preceding versions, a fourth mesh (Y-Mesh or HM04) was done by Gianluca Miragoli (aka Yashugan) in 2007.
* The fifth mesh (HM05) was built on the previous one by Gianluca Miragoli and Manuel Bastioni in 2008.
* A sixth mesh (HM06) was also created by Gianluca Miragoli in 2010.
* Another mesh version was released in 2010 by Waldemar Perez Jr., André Richard, Manuel Bastioni.
* The latest and state-of-the-art mesh, released in 2013, was modeled by Manuel Bastioni.
Since the first release of makeHead (1999) and MakeHuman (2000), a challenge had been to construct a universal topology that retained all the capabilities but added the ability to interactively adjust the mesh to accommodate anatomical variety found in the human population. This could have been addressed by dramatically increasing the number of vertices for the mesh, but the resultant, dense mesh would have limited performance on processing computers. Technically, the model developed for MakeHuman is:
* Light and optimized for subdivision surfaces modelling (15,128 vertices).
* Quads only. The human mesh itself is triangles free, using Catmull-Clark subdivision for extra resolution to base meshes, see also polygon mesh.
* Only E(5) Pole and the N(3) Pole, without holes and without 6-edge poles.

## Research usage

Because of the freedom of the license, MakeHuman software is widely used by researchers for scientific purposes:
MakeHuman mesh is used in industrial design, to verify the anthropometry of a project, and in virtual reality research, to quickly produce avatars from measures or camera views.
MakeHuman characters are used in biomechanics and biomedical engineering, to simulate the behaviour of the human body under certain conditions or treatments. The human character model for a project of the construction of artificial mirror neuron systems was also generated by MakeHuman.
The software was used for visuo-haptic surgical training system development. These simulations combine tactile sense with visual information and provide realistic training scenarios to gain, improve, and assess resident and expert surgeons' skills and knowledge.
Full-body 3D virtual reconstructions have been performed using MakeHuman, and 3D analysis of early Christian burials (archaeothanatology).
The tool has also been used to create characters to perform Sign Language movements.
MakeHuman can also be used for nonverbal behavior research, like facial expressions, which involve the use of Facial Action Coding System