MakeHuman
Encyclopedia
MakeHuman is an Open Source
software application that generates 3D
humanoids.
Features that make this software unique include a new, highly intuitive GUI
and a high quality mesh, optimized to work in subdivision surface
mode (for example, Zbrush).
Development effort is currently focused on the 1.0 Release, based on a new GUI and a 4th generation mesh. This release also incorporates considerable changes to the code base which now uses a small, efficient core application written in C, with most of the user functionality being implemented in Python. Because Python is an interpreted scripting language, this means that a wide range of scripts, plugins and utilities can be added without needing to rebuild the application.
The MakeHuman team work towards correctness both in programming (using common file formats) and anatomy. MakeHuman makes extensive use of university research in accurately modelling the human form.
This GUI incorporates a small number of standardised 'intelligent' tools designed to minimise the learning curve for new users while providing powerful features to enable all users to rapidly model a character that meets their needs. Knowledge has been built into the tools so that, for example, if a female figure is being modelled (as defined by the Gender tool), then any body mass added to the model will accumulate fat in those areas of the body where a woman typically accumulates fat.
Modelling of the mesh is performed by deforming the mesh rather than altering its topology. The mesh has been through a series of iterations to improve the structure so that deformations can be realistically applied while maintaining a low polygon count to minimise processing overheads. The mesh supports subdivision to enable higher density, smoothed meshes to be exported for high quality rendering.
The evolution of the mesh through successive iterations illustrates a number of interesting concepts that have been explored and the understanding that has been encapsulated into the current mesh.
The first version had in fact begun to show its limitations as meshes that were too optimized (about 7000 vertex), did not succeed in covering all the required morphings, and was lacking in some fundamental edge loops for the facial and muscular animation. For this reason, a new modeler, Kaushik Pal, already author of exceptional humanoid models for Blender and Maya (CGtalk thread), created a new mesh. While not using an excessive number of vertices (about 11000), the model kept up with all the professional requirements which was the result of studies of more well-known meshes.
Despite the fact that Kaushik's mesh were already high level, the MakeHuman team wanted to present the model also to the attention of famous modelers. Among these artists, of world-wide reputation Steven Stahlberg and expert subdivide modeling Tamàs Varga just to name a few.
MHteam like to quote the words of Mr. Stahlberg, of which they are particularly proud, answering to their post (by Tom Musgrove):
"Tom, that's a great resource for artists who want to study topology. No real crits, except maybe you could change the direction of edges down the cheek, to easier incorporate the infraorbital fold (which is one of those things that everyone has, although it's very subtle with some). To comment the face, I think the red and blue loops are really important, but the brown and green ones don't really need to be perfect loops. They can be, but there's no pressing need imo". (CGTalk - Body topology)
Few words, but very gratifying for the team. Obviously then the infraorbital line has since been put into place, as well as the other suggestions that came out during the discussion.
Application Programming Interface (API). This open structure has been documented and published to encourage the development of new scripts and plugin functionality that will help the application to develop and rapidly adapt to the needs of the user community.
Formats actually supported:
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
software application that generates 3D
3D computer graphics
3D computer graphics are graphics that use a three-dimensional representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images...
humanoids.
Features that make this software unique include a new, highly intuitive GUI
Gui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...
and a high quality mesh, optimized to work in subdivision surface
Subdivision surface
A subdivision surface, in the field of 3D computer graphics, is a method of representing a smooth surface via the specification of a coarser piecewise linear polygon mesh...
mode (for example, Zbrush).
Development effort is currently focused on the 1.0 Release, based on a new GUI and a 4th generation mesh. This release also incorporates considerable changes to the code base which now uses a small, efficient core application written in C, with most of the user functionality being implemented in Python. Because Python is an interpreted scripting language, this means that a wide range of scripts, plugins and utilities can be added without needing to rebuild the application.
The MakeHuman team work towards correctness both in programming (using common file formats) and anatomy. MakeHuman makes extensive use of university research in accurately modelling the human form.
The New GUI
The new GUI incorporates modelling controls based upon Ethnicity (Ethnic tool will be restored in alpha6), Gender, Age, Muscle Tone and Body Mass, Breast size, Breast firmness, Eyes slider, Mouth slider, Nose slider, Ear slider, Face age and much more.This GUI incorporates a small number of standardised 'intelligent' tools designed to minimise the learning curve for new users while providing powerful features to enable all users to rapidly model a character that meets their needs. Knowledge has been built into the tools so that, for example, if a female figure is being modelled (as defined by the Gender tool), then any body mass added to the model will accumulate fat in those areas of the body where a woman typically accumulates fat.
The mesh
All MakeHuman humanoid figures are based on a single, highly optimized, light and professional mesh. The main features of the human model (named "HoMunuculus") are:- Light and optimized for subdivision surfaces modelling (14638 verts, including teeth).
- Quads only. The human mesh is completely triangles free (except the diamonds used as joints, but they are just markers for skeleton).
- Optimized for animation, including all loops used by high level artists.
Modelling of the mesh is performed by deforming the mesh rather than altering its topology. The mesh has been through a series of iterations to improve the structure so that deformations can be realistically applied while maintaining a low polygon count to minimise processing overheads. The mesh supports subdivision to enable higher density, smoothed meshes to be exported for high quality rendering.
The evolution of the mesh through successive iterations illustrates a number of interesting concepts that have been explored and the understanding that has been encapsulated into the current mesh.
- The first prototype of a universal mesh (head only) was done in 1999 in the makeHead script, and then adapted for the early MH (2000),
- The first professional model, HM01, was realized by Enrico Valenza in 2002.
- The second remarkable mesh (K-Mesh or HM02) was modelled by Kaushik Pal in 2005
- The third mesh was modelled by Manuel Bastioni upon the (z-mesh or HM03);
- The fourth mesh was modelled by Gianluca Miragoli (aka Yashugan) in 2007 and builds upon the experience gained on the preceding versions (Y-Mesh or HM04)
- The fifth mesh build upon the previous one by Gianluca Miragoli and Manuel Bastioni (HM05)
- The sixth mesh build upon the previous one by Gianluca Miragoli.
- Latest mesh, released in 2010, is actually the state of the art (artists: Waldemar Perez Jr., André Richard, Manuel Bastioni).
HM01 and HM02
One of most important steps in mesh development was the transition between HM01 and HM02.The first version had in fact begun to show its limitations as meshes that were too optimized (about 7000 vertex), did not succeed in covering all the required morphings, and was lacking in some fundamental edge loops for the facial and muscular animation. For this reason, a new modeler, Kaushik Pal, already author of exceptional humanoid models for Blender and Maya (CGtalk thread), created a new mesh. While not using an excessive number of vertices (about 11000), the model kept up with all the professional requirements which was the result of studies of more well-known meshes.
Despite the fact that Kaushik's mesh were already high level, the MakeHuman team wanted to present the model also to the attention of famous modelers. Among these artists, of world-wide reputation Steven Stahlberg
MHteam like to quote the words of Mr. Stahlberg, of which they are particularly proud, answering to their post (by Tom Musgrove):
"Tom, that's a great resource for artists who want to study topology. No real crits, except maybe you could change the direction of edges down the cheek, to easier incorporate the infraorbital fold (which is one of those things that everyone has, although it's very subtle with some). To comment the face, I think the red and blue loops are really important, but the brown and green ones don't really need to be perfect loops. They can be, but there's no pressing need imo". (CGTalk - Body topology)
Few words, but very gratifying for the team. Obviously then the infraorbital line has since been put into place, as well as the other suggestions that came out during the discussion.
Python scripting
The MakeHuman application has been structured to expose a great many of the program internals through the PythonPython (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
Application Programming Interface (API). This open structure has been documented and published to encourage the development of new scripts and plugin functionality that will help the application to develop and rapidly adapt to the needs of the user community.
Export
MakeHuman incorporates a range of plugins to export a modelled and posed figure in 3D graphics formats supported by a very wide range of external modellers and rendering engines. These export functions have been written as Python plugins that can easily be extended and can serve as examples to enable other interfaces to be readily constructed. Support for the Renderman format is built into the MakeHuman application. Aqsis is the officially supported Renderman format renderer, but export to other formats and other renderers is also provided.Formats actually supported:
- rib (renderman)
- obj (wavefrontWavefront TechnologiesWavefront Technologies was a computer graphics company that developed and sold animation software used in Hollywood motion pictures and other industries. It was founded in 1984, in Santa Barbara, California, by Bill Kovacs, Larry Barels, Mark Sylvester...
obj) - mhx (special format to export in BlenderBlender (software)Blender is a free and open-source 3D computer graphics software product used for creating animated films, visual effects, interactive 3D applications or video games. The current release version is 2.60, and was released on October 19, 2011...
) - dae (colladaCOLLADACOLLADA is a COLLAborative Design Activity for establishing an interchange file format for interactive 3D applications. COLLADA is managed by the nonprofit technology consortium, the Khronos Group....
) - md5 (Doom 3Doom 3Doom 3 is a science fiction horror video game developed by id Software and published by Activision. An example of the first-person shooter genre, Doom 3 was first released for Microsoft Windows on August 3, 2004. The game was later adapted for Linux, as well as being ported by Aspyr Media for Mac...
format, available from alpha6)
History
- 1999. Manuel Bastioni wrote MakeHead, the MakeHuman ancestor. It was a BlenderBlender (software)Blender is a free and open-source 3D computer graphics software product used for creating animated films, visual effects, interactive 3D applications or video games. The current release version is 2.60, and was released on October 19, 2011...
script written in PythonPython (programming language)Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... - 2000. Manuel Bastioni post, on kino3d Italian forum, a proposal to do something more flexible, which allowed modeling an entire character, from head to foot.
- 2000. Filippo Di Natale and Mario Latronico liked the idea and join the MHteam created by Manuel. After about four months of development, the first alpha version was finished and immediately released under the GPL license.
- 2001. Fabrizio Cali', Cicca and Lorenzo Daveri Join the team, BullX make the early logo.
- 2002. Enrico Valenza model a new universal humanoid mesh (around 7000) verts.
- 2003. The project was officially recognized by the Blender Foundation, by supplying important new tools, like a mailing list, a specific forum, bug tracker, and was included in Blender's project page
- 2003. Version 1.5 released. Francesco Micozzi join the MH team as legal consulting.
- 2003. Unfortunately, due to internal disagreements, the collaboration was reduced considerably, and the official site was moved to dedalo-3d.
- 2004. 1.6 was released .
- 2004. MH win the Suzanne AwardSuzanne AwardsThe Suzanne Award is awarded to animators using Blender 3D annually since the second blender conference held in Amsterdam 2003. The categories of the Suzanne Awards have changed repeatedly since the first Suzanne Awards....
as better python script. - 2004. Manuel write a new GUIGraphical user interfaceIn computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
. - 2004. New developers join the MHteam: Paolo Colombo (coder), Craig Smith (modeler), Olivier Saraja (coder), Michael Schardt (import-export of vertex groups), Andrew Kator (Skeleton).
- 2004. Jump to version 1.8 (1,7 never released)
- 2004. At this point with version 1.8, the development of the python script substantially stopped. Two other versions had come out and was written almost entirely by Paolo Colombo, that introduced an innovative GUI, better than the previous one. But that unfortunately remained in the experimental phase due to some compatibility problems with Blender (Blender changes his API 2 times in few months), OpenGL, and video cards. These drawbacks caused severe delays that Paolo had to rewrite the GUI several times in order to adapt it to the changes of the python API of Blender and to avoid problems with the video cards.
- 2005. Version 2.0 of the script was conceived in a new manner that was optimized for professional use and never succeeded in moving beyond the unstable phase. Even though it wasn't fully usable, it did have a very important new feature that retained after months of work: a new base mesh, modelled by Kaushik Pal, already author of exceptional humanoid models for Blender and Maya (CGtalk thread).
- 2005, 3 November. Even with the new mesh, version 2.0 of the script was still limited by the problems described above. Finally the MHteam realised that the functions, performance, and stability we wanted to achieve weren't possible with MakeHuman as a Blender script. It was necessary to "move" it outside Blender, and to rewrite it from scratch in high-performance languages, such as C or C++. The first step of this major transformation was possible thanks to a major contribution from Paolo, who alone, and in very little time had written a new MakeHuman completely in C, multi-platform, and with an innovative interface. We'd like to mention in particular the "slider-images", a new button which auto zooms on mouse-overs (working as a preview of the target) which permits holding the mouse button to set the percentage of morphing. Since this was a completely different version from the python script and we had rewritten it from scratch, the standalone version had a lower version number: 0.8a.
- 2005. Hosting of releases moved on SourceForge. In this way, the python version hosted by the Blender Foundation, remains separate from the version written in C.
- 2005. Some additions and bug fixes due carried out by other programmers (OBJ exporter by Andreas Voltz, OSX porting by Tan Meng Yue).
- 2006. Andreas Volz, a student of applied computer science at the University of FuldaUniversity of FuldaThe University of Fulda , was founded in 1734 by Adolphus von Dalberg and existed until 1805. Most of the students and professors were Catholic...
in GermanyGermanyGermany , officially the Federal Republic of Germany , is a federal parliamentary republic in Europe. The country consists of 16 states while the capital and largest city is Berlin. Germany covers an area of 357,021 km2 and has a largely temperate seasonal climate...
developed a library in C++, called Animorph, for his bachelor thesis called "MeasureHuman". Andreas announcing that after receiving his degree, he would make his libraries available under the LGPL (but then GPL was used). This was great news; the libraries were well written, highly object oriented, and written to be easily extensible and modular. The C version on the other hand, was developed in a procedural style, and wasn't so easy to update and change. The passage from C to C++ meant offering the users a still better product, with a more standard and comprehensible code, written very professionally and incorporating all possible cautions to satisfy the rules of OOP programming. Certainly, this would have caused some delays because, once again, we should have rewritten the code from scratch. Though, it was worth the trouble since subsequent development of the application would have been more slender, professional and reliable. - 2006. Hans Peter Dusel, the maintainer of OSX version, join the team.
- 2006. The third mesh was modelled by Manuel Bastioni upon the Kaushik's mesh.
- 2006. Giovanni Lanza (blogosphere) and Alessandro Proglio (coder, 3d artist), join the MHteam.
- 2006. Simone Re, Java and C++ coder,from Ninibelabs Laboratori Ninibe join the mesh. He was the main contributor for C++ version.
- 2006, 1 November. MakeHuman 0.9, rewritten from scratch using C++ was released.
- 2007, MH code was moved from cvs to svn.
- 2007. The fourth mesh was modelled by Gianluca Miragoli (aka Yashugan)
- 2007. The MakeHuman project turned another corner with a new website (Letizia Beriozza), a new logo (Laura Sclavi), better doc (Martin Mackinlay, Giovanni Lanza, Alex Proglio) and also a new release - 0.9.1 RC1.
- 2007. Problems for the project. C++ developers have no time to develop a so big sw. Because Manuel and others are mainly python coders, MH development brutally stopped. The development of muscle engine (it was pallned a system with "real skeleton and real muscles, to be skinned), clothes and hair features is suspended.
- 2008. Because the difficult to find reliable and constant C++ developers, after months of practically no activity, Manuel decide to back to python, but not as Blender plugin. The idea is to use a special python interpreter (openGL capable) to make a modular standalone.
- 2008, 1 jen. MH "proto" ia announced.
- 2008, 19 March. An experimental version of expression engine, based on MPEG4 layer and on Plutchick, Whissel and Ekman research, is added in svn, upon MH0.9. It was not perfect and never officially released.
- 2008, 22 March. Working with university La Sapienza (Rome), in collaboration with openusability openusability, on a new concept of GUI. The base idea is simple: each widget is a 3D object and each vert groups is a sensor. The development of the new GUI will take 8 months.
- 2008, 24 May. Gianluca Miragoli Untitled Document, a professional 3d artist and Manuel Bastioni, works on a new mesh refactoring.
- 2008, December. Marc Flerackers, a skilled professional developer in almost all languages, join the team.
- 2009, 1 March. MH 1.0 pre-alpha, completely rewritten in python with a small C core (python engine opengl capable), is released. Pre alpha is just a preview of current development. It's not really usable,due to the lack of load/save feature, but the ethnic mixer-macrodetails tool can be tried, in order to give us interesting feedback about usability. GUI is not completely stable: some elements can be moved, and the theme can be changed. Just a zip, no installer.
- 2009. Antonella Cascitelli, C and python coder, join the team, and start to work on face reconstruction (for her master thesis, at Rome University)
- 2009. Looxis donate 200 laser scans of human heads, to be used in face reconstruction tool.
- 2009. Igor Kekeljevic, B.A in Painting and a Professor of Arts, design the new and definitive MH logo.
- 2009, Hosting is moved on Google code .
- 2009. Jose Capco: mathematician, python coder, join the team, starting to work on an advanced hair system
- 2009. Thomas Larsson, coder, physicist, join the team, starting to work on mhx file format, and adding collada exporter.
- 2009. Joel Palmius join the team, and provide nightly builds, Linux deb builds, documentation builds
- 2009. Alexis Mignon, coder, researcher, join the MHteam and start to work on some advanced features using Singular Value DecompositionSingular value decompositionIn linear algebra, the singular value decomposition is a factorization of a real or complex matrix, with many useful applications in signal processing and statistics....
. - 2009, 15 May. 1.0 Alpha2 released. It is a more usable release, because now the character can be exported in wavefront obj file format.
- 2009, Hosting is partially moved on Tuxfamily servers, because some serious issues of Google code about the nightly builds.
- 2010, 7 Jen. 1.0 Alpha3.Basic Hair Tool, Installer, Special hair rendering, using renderman curves.
- 2010, 1.0 Alpha4
- 2010, 1.0 Alpha5
- 2011, 1.0 Alpha6
See also
- Facial Action Coding SystemFacial Action Coding SystemFacial Action Coding System is a system to taxonomize human facial expressions, originally developed by Paul Ekman and Wallace V. Friesen in 1978...
- Blender software
- PoserPoserPoser is a 3D CGI rendering and animation software program optimized for models that depict the human figure in three-dimensional form, mostly used to pose and animate the figures in a similar way as a mannequin...
- DAZ StudioDAZ StudioDAZ Studio is a 3D figure illustration/animation application released by DAZ 3D Inc. It is compatible with most files intended for use by Poser. It is available free of charge . Version 1.0 was released in Fall 2005. Version 4.0.0.335 is the current release as of June 29, 2011...
- Faceworx
- FaceGenFaceGenFaceGen is a 3D face-generating middleware produced by Singular Inversions. It is used where there is a need for a large number of different possible faces, either at random or from photographs...