Biomechanical Body Parts

The physical body of an biomechanical organism is made up of a collection of the body parts listed below. Some of the body parts listed below are rigid bodies, which is a body that doesn't allow self deformation. In other words, the distance between any two given points of a rigid body remains constant regardless of external forces exerted on it. For example, if you have a box and apply a large force to the center of that box, the box will not dent, cave in on it self, or crack. Instead, the box will move according to the force applied. The other body part types are functional body parts, such as muscle actuators that produce force, a mouth that can consume food energy, or an odor sensor that senses odor. By combining these body parts in certain patterns you can build your organism just like you would build a simple machine using Lego® blocks.

A biomechanical  organism is made up of parts that are added in a tree format. So it has a root node that has no parent, but every node below that can have any number of children. Each node has only biomechanical joint linking it to its parent object (except the root of course). You add parts by first putting the editor into "Add Parts" mode by on the command toolbar. Now when you click on any existing part, or on the empty screen for the root object, a new part is added to the parent part you selected where you clicked the mouse. The type of part and the type of joint connecting them is determined by the default body part type and default joint type drop downs on the command toolbar.

This page will show you how to add body parts and joints.

Biomechanical Body Part Types

These are the available biomechanical body part types.

Attachment
Connect biomechanical muscles and springs to attachment points. attachment points can be added to any part and placed where you need them. Then you can specify which attachments, and their order, when string muscles and springs onto your organisms body.

Box
Rectangular box where you can specify length, width, and height.

Contact Sensor
A sensor that can detect when any objects intersect this volume.

Sticky Parts
A sensor that can detect when any objects intersect this volume.

Cone
Truncated cone. You can specify the radius of the top and bottom parts and the height.

Cylinder
Cylinder body part. You can specify the radius and the height.

Ellipsoid
Ellipsoid part type.

Linear Hill Muscle
This is a linear hill biomechanical model of muscle. Muscles are used to produce movements in biological organisms. The muscle is composed of a spring in series with another spring and dashpot that are in parallel with a force generator.

Linear Hill Stretch Receptor
This is a linear hill biomechanical model of a stretch receptor. Stretch receptors are dynamic sensors that can detect length and velocity changes in muscle. The receptor is composed of a spring in series with another spring and dashpot that are in parallel with a force generator. Output is the spikes per second for Ia and II fibers.

Mesh
Specify a general mesh. You can build an object that looks like any part to get more realistic parts than basic geometric parts. For example, with this you can build a model of the bones in the arm and they would look like the arm and have collision and dynamics of those volumes as well.

Mouth
This part allows your organism to ingest food from food sources in the environment. When the mouth is close enough to the food source it can transfer food to a stomach as new caloric energy.

Odor Sensor
A sensor that can detect gradient odors from odor sources in the environment. This is a very simple odor system that uses linear gradients. Turbulence and other complexities are not modeled. The strength of the odor at the sensor is determined by the inverse of the distance from the source, the diffusion coefficient, and the amount of odorant.

Sphere
Simple sphere. You can set the radius.

Spring
A damped spring that can connect two points. You can specify the damping coefficient and spring constant.

Stomach
This is an energy reservoir for your organism. The mouth can take food from a food source in the environment and place it in the stomach as caloric energy. As the animal moves energy is used and the animal can track the amount of energy it still has remaining.

Torus
A tours body part.

General Properties

All body parts are derived from the Body Part object and share the properties of that items.  Check below for a list of common properties of a body part.  Click on each body part type for a description of that body part and a list of any additional properties specific to that body part. 
Figure 1. Properties panel showing properties common to all body part types.

Location Local
The location of the body relative to it's own origin.  Each body part has it's own local coordinate system which is the center of the body's parent body part.. 
(click here for an example of the difference between local and world coordinates)
Default value:  (0,0,0) 
Acceptable range: -infinity - infinity

Location World
The location of the body relative to the world origin.  The world origin is center of the root body
(click here for an example of the difference between local and world coordinates)
Default value:  The distance from the center of the root body part 
Acceptable range:  -infinity - infinity

Transparency
The transparency value determines how transparent a body part is.  The higher the transparency value the more transparent a body will be.  1 is fully transparent and 0 is fully opaque.
Default value: 0 (opaque)
Acceptable range: 0 - 1

Color
The color of the body.  The user can enter a color value using R (Red) G (Green) B (Blue) values or they can use the color chooser.   To use the color chooser, click on the color property and a dropdown arrow will appear.  .  Click the drop down arrow to open up the color chooser and then select the desired color.


Default value:  Red (255, 0, 0)
Acceptable range:  R: 0 - 255, G: 0 - 255, B: 0 - 255;

Density
Enter the density of the body.

Food Source
Is this body a food source?
Default value:  False
Acceptable values:  True, False

Freeze
Only applies to the root body of an organism.  If Freeze is set to true then the root body will remain in place during a simulation while any attached body parts will be affected by physics.  If Freeze is set to false, the entire organism will be affected by physics.
Default value:  False
Acceptable values:  True, False

Name
The name of this body
Default value:  If it is the first body in an organism, "root".  Otherwise the name is "body_xx" where xx is the number in which the body was added.

Odor Sources
This allows the user to configure this body part to emit an odor. Please see the page on odor sensors for more information.

Texture
The texture file to use for this body (if applicable).  Texture files must be in the .bmp format.  When the user selects the texture property a button with an ellipsis will appear.  The user can press ellipsis to open a file selector dialog box.
Default value:  No texture file
Acceptable values: 
Any .bmp file that has a dimension of any combination of 128 and 256 (i.e. 128 X 256, 256 X 256, 128 X 128)

Visible
Determines if this body is visible within the simulation. If you set this value to false then this body will still be included in the simulation and any dynamics related to this object will still be calculated, but no graphics will be generated for the user. This property does not effect visibility in the editor. If you wish to make something invisible in the editor then you will need to use the alpha value described above.
Default value:  True
Acceptable values:  True, False

Rotation X
The rotation of the body about the X axis.  This value can be directly entered by the user or they can use the mouse by right clicking the center selection box and dragging the mouse while holding the x-key down.
Default value:  Dependent on what part of the parent body this body was added
Acceptable range:  -360 - 360

Rotation Y The rotation of the body about the Y axis.  This value can be directly entered by the user or they can use the mouse by right clicking the center selection box and dragging the mouse while holding the y-key down.
Default value:  Dependent on what part of the parent body this body was added
Acceptable range:  -360 - 360

Rotation Z
The rotation of the body about the Z axis.  This value can be directly entered by the user or they can use the mouse by right clicking the center selection box and dragging the mouse while holding the z-key down.
Default value:  Dependent on what part of the parent body this body was added
Acceptable range:
  -360 - 360

Food Properties

These properties are only seen if the Food Source property is true. Please see the section on using food sources for more information.

Food Energy Content
This is how many calories a single piece of food is worth.
Default value:  1 KC/Q (Kilo-Calorie/Quantity of food)
Acceptable range:  Any value greater than or equal to 0.

Food Quantity
This is how many pieces of food are available in this part.
Default value:  100
Acceptable range:  Any value greater than or equal to 0.

Food Replenishment Rate
How fast the food is replenished.
Default value:  1 Q/s
Acceptable range:  Any value greater than or equal to 0.

Max Food Quantity
The maximum amount of food this part can contain. It will not be replenished beyond this amount.
Default value:  10 K
Acceptable range:  Any value greater than or equal to 0.