AnyBody™ Tutorials

Lesson 2: Scaling based on external body measurements

This tutorial presumes that you have completed Scaling tutorial Lesson 1: Joint to joint scaling methods . It covered the methods ScalingStandard, ScalingUniform, ScalingLengthMass and ScalingLengthMassFat.

This lesson introduces more scaling methods, more precisely

  • ScalingUniformExt (scale equally in all directions; input is external measurements)
  • ScalingLengthMassExt (scale taking mass into account; input is external measurements)
  • ScalingLengthMassFatExt (scale taking mass and fat into account; input is external measurements).

Scaling External

The scaling laws we discussed in Lesson 1 are using measures for the segment lengths based on joint-to-joint distances. But some joint locations cannot be easily palpated. The hip joints are a good example. They are located deep under the skin and are not easy to measure from the outside. So to facilitate scaling to individuals, another set of scaling methods are provided that use only distances between external bony landmarks. The same three scaling strategies (uniform, length mass and length mass fat) are available based on bony landmarks. They are selected like this:

// Scaling laws using joint to joint measures
//#include "..\..\..\Body\AAUHuman\Scaling\ScalingUniform.any"
//#include "..\..\..\Body\AAUHuman\Scaling\ScalingLengthMass.any"
//#include "..\..\..\Body\AAUHuman\Scaling\ScalingLengthMassFat.any"

// Scaling laws using external measures
//#include "..\..\..\Body\AAUHuman\Scaling\ScalingUniformExt.any"
//#include "..\..\..\Body\AAUHuman\Scaling\ScalingLengthMassExt.any"
#include "..\..\..\Body\AAUHuman\Scaling\ScalingLengthMassFatExt.any"
Scaling = {
  //#include "..\..\..\Body\AAUHuman\Scaling\AnyFamily\AnyMan.any"
  ...
  #include "..\..\..\Body\AAUHuman\Scaling\AnyFamily\AnyManExternal.any"
  ...
};

ScalingUniformExt.any, ScalingLengthMassExt.any and ScalingLengthMassFatExt.any are the scaling laws that use the external measurements. They have exactly the same scaling properties as their corresponding joint-to-joint counterparts. And they are controlled by the file AnyManExternal.any. This last file works exactly like the AnyMan.any file, taking as input the body mass, body height and individual segments lengths.

The external measures have to be taken at specific locations and in a specific posture as shown in the figure below. The application you have downloaded already places the body in an appropriate posture. There is also an include file that displays the location of the different measures called DrawExternalMeasures.any. If included as shown below it will display the exact dimensions on the model:

// Scaling laws using external measures
//#include "..\..\..\Body\AAUHuman\Scaling\ScalingUniformExt.any"
//#include "..\..\..\Body\AAUHuman\Scaling\ScalingLengthMassExt.any"
#include "..\..\..\Body\AAUHuman\Scaling\ScalingLengthMassFatExt.any"
#include "DrawExternalMeasures.any"

We should also remove the drawing of the forces on the hands to make the view clearer, it can be done by outcomenting the code in the Environment.any file:


//  AnyDrawVector DrawRightLoad = {
//    Vec = .RightHandLoad.F*0.015;
//    PointAway = On;
//    GlobalCoord = On;
//    Line = {
//      Style = Line3DStyleFull;
//      Thickness = 0.01;
//      RGB = {0, 0, 0};
//      End = {
//        Style = Line3DCapStyleArrow;
//        RGB = {0, 0, 0};
//        Thickness = 0.025;
//        Length = 0.025;
//      };
//    };
//    AnyRefFrame &Hand = .RightHandLoad.Hand;
//  };
//  
//  AnyDrawVector DrawLeftLoad = {
//    Vec = .LeftHandLoad.F*0.015;
//    PointAway = On;
//    GlobalCoord = On;
//    Line = {
//      Style = Line3DStyleFull;
//      Thickness = 0.01;
//      RGB = {0, 0, 0};
//      End = {
//        Style = Line3DCapStyleArrow;
//        RGB = {0, 0, 0};
//        Thickness = 0.025;
//        Length = 0.025;
//      };
//    };
//    AnyRefFrame &Hand = .LeftHandLoad.Hand;
//  };

After loading the model it can be observed that the red spheres on the image below show the bony landmarks used for scaling of segment lengths in these methods and the blue lines connecting them show the actual dimensions.

Percentile scaling

While the methods described in the previous section are useful for scaling a model to a particular individual, many applications, especially within ergonomic product design, require the model to fit an archetypical body size such as they are defined in athropometrical population statistics. So the section describes scaling of models to a certain percentile of the population. The anthropometric data of the population are presumed to follow a Gaussian distribution and with enough measured data it is possible to calculate the average or mean value, standard deviation and percentile values. The mean value also corresponds to the 50th percentile, meaning that 50% of the population is larger and 50% is smaller than that exact value. Antropometric data can be found in many sources, but the files used in this section are based on this reference: ADULTDATA, The Handbook of Adult Anthropometric Measurements. Data for Design Safety. Dept. of Trade & Industry, United Kingdom.

This scaling strategy for percentiles also uses the external measures, so you have to include one of the three external scaling laws. We shall use ScalingLengthMassFatExt, but as you may have guessed we need a specific AnyMan file to control the percentile scaling. This one is called AnyManExtPercentile.any, it has been designed to represent the European male population, but if you have data available for other populations it is easy to fill them in. This is how it is done (you can out comment the DrawExternalMeasure if you dont want it):

// Scaling laws using external measures
//#include "..\..\..\Body\AAUHuman\Scaling\ScalingUniformExt.any"
//#include "..\..\..\Body\AAUHuman\Scaling\ScalingLengthMassExt.any"
#include "..\..\..\Body\AAUHuman\Scaling\ScalingLengthMassFatExt.any"
//#include "DrawExternalMeasures.any"
Scaling = {
  ...
  //#include "..\..\..\Body\AAUHuman\Scaling\AnyFamily\AnyManExternal.any"
  #include "..\..\..\Body\AAUHuman\Scaling\AnyFamily\AnyManExtPercentile.any"
  //#include "..\..\..\Body\AAUHuman\Scaling\AnyFamily\AnyWomanExtPercentile.any"
};

Open the AnyManExtPercentile file. The percentile function controls all the anthropometric data we saw previously: the body mass, body height and all segment lengths. All you have to do is specify the Percentile variable, and due to the non linearity of the function, you also have to select the linear regression corresponding to the range of value of the percentile.
Lets try some example now. In the AnyManExtPercentile file give an 80th percentile as input:

// PercentileAnyVar
Percentile = 80; //Percent of the population represented. Choose one of the Z linear regression below.

You have to take care that the linear regression for Z is valid for an 80th percentile:
// Choose only one of the following linear regression depending on the percentile.
//AnyVar Z = (0.064*Percentile)-1.96; // This is an approximation valid for Percentile from 5% to 15%.
AnyVar Z = (0.0279*Percentile)-1.3971; // This is an approximation valid for Percentile from 16% to 84%.
//AnyVar Z = (0.064*Percentile)-4.44; // This is an approximation valid for Percentile from 85% to 95%.

The regression model included now is valid for Percentile from 16% to 84%. We go for 80%, so the regression is valid. You can load the model and investigate the proportions in the model view window. 80% of the European males are smaller than the model you have now, and 20% are taller. Lets try to model a 95th percentile male. This time we also have to change the linear regression function:

// Percentile
AnyVar Percentile = 95; //Percent of the population represented. Choose one of the Z linear regression below.

// Choose only one of the following linear regression depending on the percentile.
//AnyVar Z = (0.064*Percentile)-1.96; // This is valid for Percentile from 5% to 15%.
//AnyVar Z = (0.0279*Percentile)-1.3971; // This is valid for Percentile from 16% to 84%.
AnyVar Z = (0.064*Percentile)-4.44; // This is valid for Percentile from 85% to 95%.

An example of application for such scaling can be a door height: we know that if the door is high enough for this model then it will be enough for 95% of the population.

As the file AnyManExtPercentile represent European male, there is a file AnyWomanExtPercentile representing European female. The percentile is specified in exactly the same way.

You have now completed the tutorial on Scaling.

We are extremely grateful to Ford Forschungszentrum Aachen, Germany, for sponsoring the scaling implementation.

AnyBody Technology A/S · Niels Jernes vej 10 · DK-9220 Aalborg Ø · Denmark · Tel. +45 9635 4286 · Fax. +45 9635 4599            Sitemap