What is MH?
MakeHuman is a software package, written completely in C++ and available for all the main platforms (Windows, OSX, Linux, etc..). Its aim is the modeling of three dimensional humanoids.
Users can set up the age, weight, sex, race, size of the no sé, shape of the face, proportions of arms and legs, and a whole series of other well defined parameters, so we can say that MH is an artistic/para metrical modeling tool.
Every feature is defined by choosing it's percentage, and all the features are "added" to each other to obtain endless combinations of forms. This allows the creation, with a few clicks, of extremely realistic characters, ready for use in a variety of professional graphics applications.
MakeHuman was born, near the end of the year 2000 in an Italian community of open source graphic software developers. Manuel Bastioni had previously developed something similar: a python script for Blender, which modeled only the characters' head. It was a simple tool called "MakeHead", and based on Blender's vertex keys, which can be considered, in every respect, MakeHuman's ancestor.
First script for Blender
Manuel's new proposal was to do something more flexible, which allowed modeling an entire character, from head to foot. Others liked the idea, and after about four months of development, thanks to the first group of programmers, in particular, Filippo di Natale and Mario Latronico, the first alpha versión was finished and immediately released under the GPL license.
Others were responsible for the translations (Fabrizio Cali', Lorenzo Daveri), for logos and other aspects relating to the material's publication.
Even if the GUI was defined, and the morphing code was mostly ready, there was another delicate and important problem: the realization of base humanoid, which had all the necessary characteristics for it to be transformed into any character, and which was alos an optimized mesh, from which could be created the character of a movie or a low resolution character suitable for video games.
Furthermore the basic mesh had to be sexless, ageless and race-less, just to make things a little more complex. After much discussion, it was finally modeled by Enrico Valenza. This was the first versión of the model, which was be used up until two years ago, as we shall soon see.
Version 1.6 and the Blender Foundation
After some time, 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 (http://projects.blender.org).
Unfortunately, due to internal disagreements, the collaboration was reduced considerably, and the official site was moved to dedalo-3d. After a short period time, MakeHuman had an important modification. The passage from an old complex GUI to a lighter one was finally completed, based on the input from a console written in python by the project administrator. This made way for the release of versión 1.6.
The stable versión in Python 1.8
After this release, the participation of the earlier developers, with the exception of the administrator and a few others (Lorenzo Daveri and Cicca), was reduced drastically, and the project seriously slowed down. Fortunately, it was only a period of transition in which MakeHuman was going to adopt a more international look thanks to the contribution of Craig Smith on modeling, to the contributions of Olivier Saraja, to the code of Michael Schardt (import-export verts group) and to the system of bones from Andrew Kator.
Thanks to these new aids and numerous new features, a new versión was released which jumped directly from versión 1.6 to 1.8 in a short period of time.
Due to the success of this new versión as well as to the mediation of Craig and Lorenzo, the project received an important donation which consisted of an entire documentation of 20 years of research of the dott known as FACS. This so-called FACS (Facial Actions Coding System), allowed for study of an entire system of coding of facial expressions. The donation came from Paul Ekman, who was a psychology teacher in the department of psychiatry at the University of San Francisco.
Version 2.0 in python, unstable
At this point with versión 1.8, the development of the python script substantially stopped. Two other versións had come out and was written almost entirely by a new developer, named 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, 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.
The new mesh
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 basic mesh. The first versión had in fact begun to show it's 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, Kaushique Pal, already author of exceptional humanoid models for Blender and Maya (CGtalque thread), created a new mesh. While not using an excessive number of verts (about 11000), the model kept up with all the professional requirements which was the result of studies of more well-known meshes. In the following images the main differences between the two meshes are illustrated (the "critical" points of the old mesh are marked in red).
Despite the fact that Kaushik's mesh were already high level, the MakeHuman team wanted to present the model alos to the attention of famous modelers. Among these artists, of world-wide reputation Steven Stahlberg (http://www.androidblues.com) and expert subdivide modeling Tamás Varga (http://maxrovat.sns.hu/subdiv) just to name a few.
Here we quote the words of Mr. Stahlberg, of which we are particularly proud, answering to our 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 thinque 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.
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.
At the end of the work, we have collected some explanatory images, particularly concerning the facial topology, and in which the so-called lines of action have been highlighted.
The turning point: the standalone versión in C
However, even with the new mesh, versión 2.0 of the script was still limited by the problems described above. Finally we realized that the functions, performance, and stability we wanted to achieve weren't possible with MakeHuman as a python 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 versión from the python script and we had rewritten it from scratch, the standalone versión had a lower versión number: 0.8a.
Downloading of the standalone versión of MakeHuman can be found using hosting provided by SourceForge.
In this way, the python versión hosted by the Blender Foundation, remains separate from the versión written in C. The versión currently available on SourceForge is still Paul's versión, but with some additions and bug fixes due carried out by other programmers (OBJ exporter by Andreas Voltz, OSX porting by Tan Meng Yue). End users found the program to be quite usable, but programmers continually worked to further advance the code, in hopes of significantly improving the usability for the end user. We then arrived at a new versión that's going to be released.
Next versión: MakeHuman 1.0 (beta), in C++
While we were working on MakeHuman versión 0.8, Andreas Voltz, a student of Applied Computer Sciences at the University of Fulda, in Germany, was developing some concepts of the python versión in order to construct a new, more flexible, library that was platform independent and written entirely in C++. His aim was to use it for the software that he was preparing for his bachelor thesis called "MeasureHuman". He wanted to not only modify aspects of 3D humanoid based on targets like MakeHuman, but alos on user input measurements.
Andreas had gotten in touch with the team, announcing that after receiving his degree, he would make his libraries available under the GPL. This was great news; the libraries were well written, highly object oriented, and written to be easily extensible and modular. The C versión 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.
Once it was decided to use Andreas' library, which he dubbed "Animorph", we needed to write a simple and stable GUI. In line with the philosophy of the project, we avoided the use of large existing libraries. We wanted MakeHuman to be compact and an extremely reliable tool with few dependencies, and with well defined features. After having reviewed a large number of existing libraries, we finally decided that, for the special interface of MakeHuman, the best thing would be to write the necessary classes ourselves. Simple = Reliable, Simple = Easy to manage and update. For these reasons, the GUI contains only what is necessary to us and we are doing everything to test it thoroughly. The core has been written with the help of Ninibe Labs. A particular thanks goes to Simone Re and Manuel who together have developed the first sketch of the GUI. Subsequently, everything has been reviewed by another programmer, Hans Peter Dusel, who has alos worked on the porting for OSX.
Now that finally both Animorph and MHGUI have reached a satisfactory level (even if is our intention to continue to perfect them), the only thing that remains is to combine them into a single application, MakeHuman 1.0. This will be a beta versión until it is fully stable and has the necessary features to to be considered "complete". The following images are a preview of the worque that we are carrying forward.
The new interface, although it uses the ideas from versión 0.8, has been carefully planned to have a simple and intuitive design. Each element has been carefully studied to be easy to understand and use.
Even if the GUI will continue to be improved to become even more intuitive, we are still going to be preparing adequate documentation. This is possible thanks to a team exclusively assigned to the production of documents, their translation and logical organization. A special thanks goes to Alessandro Proglio for translating the documentation and administrating the Wiki (still in phase of development), to Martin Mackinlay for the final revisión of the ITA-ENG translation, and to Antonio Di Cecca and Giovanni Lanza, who actively contribute to the ITA-ENG translation.
MakeHuman is intended to be a very specific tool, limited to a precise field: to rapidly model professional 3D characters with all necessary features for animation with the use of suitable software (Maya, Max, Blender, etc...). Therefore it is a tool that finds itself ideally positioned in the professional pipelines, and that does not want or have to be an end in itself.
Additionally, to a limited extent, we want MakeHuman to reach an equally professional level with static poses and to be able to provide photorealistic renderings of the subject. On one hand, it can serve as a preview of an eventual pre-production (of games, movies, etc. ..), yet on the other, can be used by the artist to produce final images (posters, gallery, etc. ..). Therefore, in conclusion, the output of MakeHuman can be divided in two large categories:
1) Exporting in the most common formats, compatible with the widest range of software.
2) Photorealistic (but static) rendering of the characters in pose, complete with hair and clothing, suitable for previewing and the production of images.
Currently only export in OBJ format is supported, yet even though OBJ has become a standard, we have intentions to add additional formats. Many features have already prototyped in python, for example “hair”, which only needs to be translated into C++ and adequately incorporated in the GUI. With regards to rendering, we are working on a skin shader engine thats Renderman compliant. Here are some images made with Pixie.
Help from the community
Any capable modeler that knows the basic features of Blender are invited to join and help us. Building a new morph is very simple and does not require any programming knowledge. Here is an excellent tutorial. It is only if you want to export a ". target" file. For example, try it directly in MakeHuman. A special script for Blender, called "MakeTarget", is required and may be downloaded from the Blender Foundation's project site
. It's a very interesting tool because it allows you to alos manipulate the ". bs" formats. A short introduction to its utilization can be downloaded here
Help on the developer's part is alos welcome even though, obviously, the participation is bound to specific rules and allocations of the tasks by the administrator. At the moment, we need an expert Windows programmer as most of the developers worque with Linux, and therefore, the Windows versión requires a maintainer to monitor optimizations, porting of the libraries, and checking of the installer, etc..