After days of research into the topic of 3D generation for humanoid shapes and coming up with alternatives, we found quite a few available solutions. Most of these solutions didn’t provide a way to keep proportions. A few examples of this can be seen below.

Deformed human 1

Deformed human 2










Since we have a limited amount of data and time available, we really needed a solution that would allow us to enter the values that we have available, while automatically shaping the rest of the model based on these few values.

While searching for solutions, we kept finding references to something called ‘makehuman‘. On their website, they link to a different solution, which was an open source character editor integrated in Blender, called ManuelBastioniLAB. Since we knew Blender could be automated, we decided to go ahead and try this solution. Changing body measurements and updating the character automatically updated the rest of the body measurements as well to accommodate for the changed value, so the model always looked ‘human’.

Using ManuelBastioniLAB

To continue with this solution, one of the first things that we tried was to generate a model based on the measurements that we had. Unfortunately, ManuelBastioniLAB (MBL) required all 33 measurements, which could not be left empty. We ended up spending quite a bit of time finding the correlation between the data in the data-set and the measurements that were used by MBL.

First generated model using ManuelBastioniLAB

We found 13 measurements in the data-set that matched up with the measurements that are used by MBL. Inputting these measurements (and leaving the rest on 0) into MBL produced quite a humanoid result (image above). Unfortunately, quite a few body parts did not match up, so we needed to fill the remaining 20 measurements as well.

We ended up creating a system that takes takes the 13 measurements and uses them as ‘scaling guidelines’ for the rest of the measurements. When the upper arm length increases by 15%, we expect the same increase for the lower arm length. For each measurement, we added 1-3 ‘relations’, which were basically existing measurements that influenced the measurement they had a relationship with. By taking the average of the increase for the relations, the result was already quite decent. Finally, a function in MBL for auto modelling was used to scale the remainder of the body parts into an ‘average human’ shape.

Left is the generated model, right is the original model in the data-set

When testing this solution for a male, the result was not quite as accurate (as seen below).

Left is the generated model, right is the original model in the data-set


MBL definitely seems to be the way to go. The generated model (at least for the female) already resembles the actual subject quite well. There’s definitely some tweaking left to be done, especially for males. We’ll have to change the way these measurements are calculated based on whether the subject is a male or a female and add appropriate weights to certain variables to further increase the 3D model accuracy.

Leave a Reply

Your email address will not be published. Required fields are marked *