Material Types

Watch the video tutorial on using material types!

AnimatLab allows you to setup different material types that are used to determine how objects interact when thy collide. This allows you to simulate things like how a hockey puck would move on ice vs. concrete, or how an animal would walk in mud vs sand. It also allows you to control the how springy the collisions between objects are. To set the material types you need to click on the 'Edit Material Types' button () on the toolbar or in the Edit menu. This will open the Material Types editor shown below.

Material types editor dialog

There is always at least one material type in the simulation. This material type is initially called Default, but you can change the name to whatever you want. You cannot remove this material from the simulation. You can add new material types by clicking the 'Add Material' button. This will add a new material in the material types list and select that material for editing. While a material is selected you can modify its properties in the Material Properties grid. You can remove a material by selecting it in the material types list and hitting the 'Remove Material' button.

Once you have added new materials and configured them how you want then you will need to setup your body parts to use the new materials. If you click on a part within an organism or structure you will see a Material Type field in the property grid. All parts are set to the Default material type when created. If you want your part to use a new material type you need to go to that setting and right click on it to expand the list of available material types and select the one you want. This will set that body part to use the selected material type.

When two parts collide the physics engine will compare the material types for the two parts and merge them to create a material constraint that will be used to control the behavior of the parts interaction. During the merge it will find the most permissive of the two parameters to include in the constraint. So for example, if you have material type for ice with a very low friction coefficient, and a material type for concrete with a high friction coefficient, then it will choose the coefficient for ice when those two items collide. This same things happens for all parameters of the material type.

The friction coefficient determines the amount of friction force that is applied to retard motion proportional to the tangential force applied to the body pushing it onto a surface. Max Friction is the maximum friction force that can be applied along a given axis. Compliance and Damping control how the bodies interact when they collide. If you want to simulate something falling onto a rubber sheet then would need to decrease increase the compliance to make it more springy and decrease the damping. Maximum adhesion allows you to specify a holding force that tries to keep two parts glued together. When a force greater than the adhesive force is applied to them then they will break apart. Contact slip allows you to define a tangential loss at the contact position. For example, this is a useful parameter to set for the interaction between a cylindrical wheel and a terrain where, without a minimum amount of slip, the vehicle would have a hard time turning. By default, friction tries to set the relative velocity at the contact point to 0. Contact sliding enables you to specify a desired relative velocity between the colliding parts at the contact position. The contact sliding parameter allows you to specify a desired relative velocity between the colliding parts at the contact position. An example of such an application is a conveyor belt, where the belt part itself would not be moving.

It is possible to simulate rolling friction in AnimatLab as well using the material types. This is turned off by default, but to turn it on you need to configure the angular friction coefficients shown below. For example, say you have plane rigid body part type with a concrete material type. It would not have any angular friction coefficients specified. You could then have a ball part type with a new metal material type. If you setup the metal material with angular friction coefficients greater than zero then this will turn on the rolling friction and as the ball rolls on the concrete surface it will gradually slow down and come to a stop. If rolling friction was not turned on for that part then once the ball began rolling it would never stop rolling. Rolling friction allows you to produce a much more realistic simulation of the behavior of round objects like tires, cylinders and balls.

Material Type Properties

Friction Coefficients

Angular Normal
The friction for angular motion around the normal (this simulates spinning friction)
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Angular Primary
The friction for angular motion around the primary axis (this simulates rolling resistance)
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Angular Secondary
The friction for angular motion around the secondary axis (this simulates rolling resistance)
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Linear Primary
The linear friction coefficient for the primary axis
Default value: 1
Acceptable range:Anything greater than or equal to 0.

Linear Secondary
The linear friction coefficient for the secondary axis
Default value: 1
Acceptable range:Anything greater than or equal to 0.

Material Properties

Compliance
The compliance for collisions between RigidBodies with these two materials.
Default value: 1 nm/N
Acceptable range:Anything greater than 0.

Damping
The damping for collisions between RigidBodies with these two materials.
Default value: 50 Gg/s
Acceptable range:Anything greater than 0.

Maximum Adhesion
Adhesive force allows objects to stick together, as if they were glued. This property specifies the minimal force needed to separate the two objects.
Default value: 0 N
Acceptable range:Anything greater than or equal to 0.

Name
The name for this material type.
Default value:Auto-generated
Acceptable range:Any unique name.

Restitution
When a collision occurs between two rigid bodies, the impulse corresponding to the force is equal to the total change in momentum that each body undergoes. This change of momentum is affected by the degree of resilience of each body, that is, the extent to which energy is diffused.
The coefficient of restitution is a parameter representing the degree of resilience of a particular material pair. To make simulations more efficient, it is best to set a restitution threshold as well. Impacts that measure less than the threshold will be ignored, to avoid jitter in the simulation. Small impulses do not add to the realism of most simulations.
Default value: 0 N
Acceptable range:Anything greater than or equal to 0.

Max Friction
Angular Normal
The maximum friction force that can be applied for the angular motion around the normal.
Default value: 5 N
Acceptable range:Anything greater than or equal to 0.

Angular Primary
The maximum friction force that can be applied for the angular motion around the primary axis.
Default value: 5 N
Acceptable range:Anything greater than or equal to 0.

Angular Secondary
The maximum friction force that can be applied for the angular motion around the secondary axis.
Default value: 5 N
Acceptable range:Anything greater than or equal to 0.

Linear Primary
The maximum linear friction along the primary axis
Default value: 10 N
Acceptable range:Anything greater than or equal to 0.

Linear Secondary
The maximum linear friction along the secondary axis
Default value: 10 N
Acceptable range:Anything greater than or equal to 0.

Slide
Angular Normal
The slide velocity the angular motion around the normal.
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Angular Primary
The slide velocity for the angular motion around the primary axis.
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Angular Secondary
The slide velocity for the angular motion around the secondary axis.
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Linear Primary
The slide velocity for the primary axis
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Linear Secondary
The slide velocity for the secondary axis
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Slip
Angular Normal
The slip loss of the angular motion around the normal.
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Angular Primary
The slip loss for the angular motion around the primary axis.
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Angular Secondary
The slip loss for the angular motion around the secondary axis.
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Linear Primary
The slip loss for the primary axis
Default value: 0
Acceptable range:Anything greater than or equal to 0.

Linear Secondary
The slip loss for the secondary axis
Default value: 0
Acceptable range:Anything greater than or equal to 0.