Fred Asset


Generated on 09/20/07
AssetID 0
Asset Identifier "Fred"

Quick Links


One-Shot Messages
activePose
applyImpulse
bodyRelax
configureBalance
configureBalanceReset
defineAttachedObject
forceToBodyPart
setStiffness
shotRelax
stopAllBehaviours
Ranged Messages
armsWindmillAdaptive
bodyBalance
bodyFoetal
bodyRollUp
bodyWrithe
braceForImpact
catchFall
fallOverWall
grab
grabUpdate
headLook
highFall
incomingTransforms
leanInDirection
leanToPosition
leanTowardsObject
pedalLegs
pointArm
rollDownStairs
shot
stayUpright
upperBodyFlinch


The Components


These are the body parts for which transforms are supplied by ART. This table indicates the order in which the components are supplied and to which joint in the Maya skeleton they correspond.

Order Component Joint
0 Buttocks Char_Pelvis
1 Thigh_Left Char_L_Thigh
2 Shin_Left Char_L_Calf
3 Foot_Left Char_L_Foot
4 Thigh_Right Char_R_Thigh
5 Shin_Right Char_R_Calf
6 Foot_Right Char_R_Foot
7 Spine0 Char_Spine
8 Spine1 Char_Spine1
9 Spine2 Char_Spine2
10 Spine3 Char_Spine3
11 Neck Char_Neck
12 Head Char_Head
13 Clavicle_Left Char_L_Clavicle
14 Upper_Arm_Left Char_L_UpperArm
15 Lower_Arm_Left Char_L_ForeArm
16 Hand_Left Char_L_Hand
17 Clavicle_Right Char_R_Clavicle
18 Upper_Arm_Right Char_R_UpperArm
19 Lower_Arm_Right Char_R_ForeArm
20 Hand_Right Char_R_Hand


The Behaviour Messages


These are the behaviour messages.

activePose:

This will take any animation currently set as the incoming transforms of the agent and drive the character to the pose defined therein. To constantly drive an agent to an animation, this message must be sent every frame. The stiffness of the characters joints will determine how closely they match the animation pose.

The mask value determines which effector sets will be modified. Specifying 'fb' or no mask value will cause the effect to be applied to the whole character.

Otherwise, specify 'l' or 'u' for the first character to mask off to just lower or upper body parts. Then, you can specify the following for the second character:

When the first character is 'u', the second parameter can be:
* 'c' = just clavicles
* 'l' = left arm only
* 'r' = right arm only
* 'a' = both arms and clavicles
* 's' = just spine
* 't' = torso only, eg. spine & arms and Clavicles
* 'k' = trunk only, eg. spine & head
* 'n' = neck and head
* 'b' = everything
* 'w' = wrists

when the first character is 'l', the second parameter can be:
* 'l' = just left leg
* 'r' = just right leg
* 'b' = both legs

note that the characters should be lower-case.

 Parameter  Type  Default  Range  Units  Description
 mask  string  fb      Two character body-masking value (see notes for explanation)




applyImpulse:

Apply an impulse to a named body part
optional equalizeAmount between 0 and 1.
0 means straight impulse (lighter objects will move further)
1 means multiplied by mass relative to the average (all mass objects will move equally)

optional hitPoint in world space

 Parameter  Type  Default  Range  Units  Description
 equalizeAmount  float  0.00  0 ... 1    0 means straight impulse, 1 means multiply by the mass (change in velocity)
 partIndex  int  0  0 ... 21    index of part being hit.
 impulse  vector3  0.00, 0.00, 0.00      impulse vector (impulse is change in momentum)
 hitPoint  vector3  0.00, 0.00, 0.00    World-Space Position  optional point on part where hit




bodyRelax:

Set the amount of relaxation across the whole body; Used to collapse the character into a rag-doll-like state.

 Parameter  Type  Default  Range  Units  Description
 relaxation  float  50.00  0 ... 100    How relaxed the body becomes, in percentage relaxed. 100 being totally rag-dolled, 0 being very stiff and rigid.
 mask  string  fb      Two character body-masking value (see Active Pose notes for possible values)
 holdPose  boolean  false      automatically hold the current pose as the character relaxes - can be used to avoid relaxing into a t-pose




configureBalance:

This single message allows you to configure various parameters used on any behaviour that uses the dynamic balance.

 Parameter  Type  Default  Range  Units  Description
 stepHeight  float  0.10  0 ... 0.3  Meters  maximum height that character steps vertically
 taperKneeStrength  boolean  true      does the knee strength reduce with angle
 legStiffness  float  12.00  6 ... 16    stiffness of legs
 balanceAbortThreshold  float  0.60  0 ... 1    when the character gives up and goes into a fall
 stepClampScale  float  1.00  0 ... 1    




configureBalanceReset:

reset the values configurable by the Configure Balance message to their defaults.




defineAttachedObject:

Call every frame to update the position of an attached object (eg gun) on the character. This allows the balancer to balance properly with the extra weight.

 Parameter  Type  Default  Range  Units  Description
 partIndex  int  -1  -1 ... 21    index of part to attach to
 objectMass  float  0.00  0 ...  Kg  mass of the attached object
 worldPos  vector3  0.00, 0.00, 0.00    World-Space Position  world position of attached object's centre of mass. must be updated each frame.




forceToBodyPart:

Apply an impulse to a named body part

 Parameter  Type  Default  Range  Units  Description
 PartName  string  Spine3      part name
 force  vector3  0.00, -50.00, 0.00      force to apply




setStiffness:

Use this message to manually set the body stiffness values - before using Active Pose to drive to an animated pose, for example.

 Parameter  Type  Default  Range  Units  Description
 bodyStiffness  float  12.00  6 ... 16    stiffness of whole character
 damping  float  1.00  0 ... 3    damping amount, less is underdamped
 mask  string  fb      Two character body-masking value (see Active Pose notes for possible values)




shotRelax:

This message should be called during the body shot, at the point where he is dying and should fall to the floor. The character will relax over a short time period, and fall to the floor.

 Parameter  Type  Default  Range  Units  Description
 relaxPeriod  float  2.00  0 ... 10  Seconds  time over which to relax to full relaxation




stopAllBehaviours:

Send this message to immediately stop all behaviours from executing.




The Ranged Behaviours

These behaviour messages run some of the same behaviours as described above, except that they have a boolean 'start' argument to stop and start control as well as mix the different behaviours.

armsWindmillAdaptive:

Wave the arms around in a windmilling motion; this behaviour rotates the arms based on which way the character is rotating.

 Parameter  Type  Default  Range  Units  Description
 period  float  1.00      Controls the speed of the windmilling - set to a smaller value for a more rapid whirling motion
 bodyStiffness  float  11.00      Controls how stiff the rest of the body is
 amplitude  float  0.60      Controls how large the motion is, higher values means the character waves his arms in a massive arc
 phase  float  0.00      Set to a non-zero value to desynchronise the left and right arms motion.
 armStiffness  float  14.14      How stiff the arms are controls how pronounced the windmilling motion appears; smaller values means weaker movement
 disableOnImpact  boolean  true      If true, each arm will stop windmilling if it hits the ground




bodyBalance:

This provides a generic balancing behaviour; the lower body takes care of stepping and stabilizing the character, while the upper body provides a standard swinging-arms motion. This behaviour is zero-pose aware and will revert back to the pose (if set) when stable / unmoving.

 Parameter  Type  Default  Range  Units  Description
 bodyStiffness  float  9.00  6 ... 16    stiffness of upper body. catch_fall's stiffness scales with this value, but has default values when this is default
 damping  float  0.70  0 ... 2    Sets damping value for the character joints
 shoulder  float  1.00  0.5 ... 2.5    How much the shoulder(lean1) swings based on the leg movement
 elbow  float  1.75  0.5 ... 2.5    How much the elbow swings based on the leg movement
 maxSteps  int  100  1 ...    maximum number of steps balancer can take
 useHeadLook  boolean  false      enable and provide a look-at target to make the character's head turn to face it while balancing
 headLookInstanceIndex  int  -1  -1 ...    level index of thing to look at
 headLookPos  vector3  0.00, 0.00, 0.00      position of thing to look at; world-space if instance index = -1, otherwise local-space to that object
 headLookAlwaysTimeout  float  2.00  -1 ...  Seconds  number of seconds before turning off the 'always look' feature of Head Look - set to -1 to disable 'always look'
 somersaultAngle  float  1.00      multiplier for somersaultAngle (result added to armsOut). Somersault contribution to arms out = m_somersaultAngle*(Characters Somersault angle past m_somersaultAngleThreshold)
 somersaultAngleThreshold  float  0.25      Amount of somersault 'angle' before somersault is used for ArmsOut
 sideSomersaultAngle  float  1.00      multiplier for sideSomersaultAngle (result added to armsOut)
 sideSomersaultAngleThreshold  float  0.25      Amount of side somersault 'angle' before sideSomersault is used for ArmsOut
 returningToBalanceArmsOut  float  0.00      range 0:1 0 = don't raise arms if returning to upright position, 0.x = 0.x*raise arms based on angvel and 'angle' settings, 1 = raise arms based on angvel and 'angle' settings
 armsOutOnPush  boolean  false      Put arms out based on lean2 of legs, or angular velocity (lean or twist), or lean (front/back or side/side)
 armsOutStraightenElbows  float  0.00      multiplier for straightening the elbows based on the amount of arms out(lean2). 0 = dont straighten elbows. Otherwise straighten elbows proprtionately to armsOut
 armsOutMinLean2  float  -10.00      Minimum desiredLean2 applied to shoulder (to stop arms going above shoulder height or not)
 bodyTurnTimeout  float  0.00      number of seconds before turning off the turnDirection feature of Dynamic Balance (turns to what the head is looking at) - set to 0 to disable
 angVelMultiplier  vector3  4.00, 1.00, 4.00      multipliers for AngVel (result added to armsOut). X=somersault, Y=Twist, Z=SideSomersault
 angVelThreshold  vector3  1.20, 3.00, 1.20      Amount of angvel before AngVel is used for ArmsOut. X=somersault, Y=Twist, Z=SideSomersault
 armsOutOnPushMultiplier  float  0.00      Arms out based on lean2 of the legs to simulate being pushed
 armsOutOnPushTimeout  float  1.00      number of seconds before turning off the armsOutOnPush response only for Arms out based on lean2 of the legs (NOT for the angle or angular velocity)
 useBodyTurn  boolean  false      enable and provide a positive bodyTurnTimeout and provide a look-at target to make the character turn to face it while balancing
 elbowAngleOnContact  float  1.90      on contact with upperbody the desired elbow angle is set to at least this value
 bendElbowsTime  float  0.50      Time after contact (with Upper body) that the min m_elbowAngleOnContact is applied
 bendElbowsGait  float  0.70      Minimum desired angle of elbow during non contact arm swing
 headLookAtVelProb  float  -1.00      Probability [0-1] that headLook will be looking in the direction of velocity when stepping. 0 always looks at target, 1 always looks at velocity. Set to -1 for this probability to be randomized on activate.
 turnOffProb  float  0.10      Weighted Probability that turn will be off. This is one of six turn type weights.
 turn2VelProb  float  0.30      Weighted Probability of turning towards velocity. This is one of six turn type weights.
 turnAwayProb  float  0.15      Weighted Probability of turning away from headLook target. This is one of six turn type weights.
 turnLeftProb  float  0.13      Weighted Probability of turning left. This is one of six turn type weights.
 turnRightProb  float  0.13      Weighted Probability of turning right. This is one of six turn type weights.
 turn2TargetProb  float  0.20      Weighted Probability of turning towards headLook target. This is one of six turn type weights.

 Feedback Type  Behaviours Used  Description
 Success  balance  character stabilises
 Failure  balance  character falls over
 Start  sub behaviour  Catch_Fall_2
 Start  sub behaviour  dynamicBalance




bodyFoetal:

Curls into foetal position, at a speed defined by the strength and damping values; This behaviour is full-body and resets the character when it starts.

 Parameter  Type  Default  Range  Units  Description
 stiffness  float  9.00  6 ... 16    The stiffness of the body determines how fast the character moves into the position, and how well that they hold it.
 dampingFactor  float  1.40  0 ... 2    Sets damping value for the character joints
 asymmetry  float  0.00  0 ... 1    A value between 0-1 that controls how asymmetric the results are by varying stiffness across the body
 randomSeed  int  100      Random seed used to generate asymmetry values
 backTwist  float  0.00  0 ... 1    Amount of random back twist to add
 mask  string  fb      Two character body-masking value (see Active Pose notes for possible values)




bodyRollUp:

Rolling motion. Apply when the character is to be tumbling, either down a hill, after being blown by an explosion, or hit by a car.
The character is in a rough foetal position, he puts his arms out to brace against collisions with the ground, and he will relax after he stops tumbling.

sends success feedback: "Roll Up: stopped rolling" when rolling has stopped

 Parameter  Type  Default  Range  Units  Description
 stiffness  float  10.00      stiffness of whole body
 useArmToSlowDown  float  1.30      the degree to which the character will try to stop a barrel roll with his arms
 armReachAmount  float  1.40      the likeliness of the character reaching for the ground with its arms
 mask  string  fb      Two character body-masking value (see Active Pose notes for possible values)
 legPush  float  0.00      used to keep rolling down slope, 1 is full (kicks legs out when pointing upwards)
 asymmetricalLegs  float  0.00      0 is no leg asymmetry in 'foeta'l position. >0 a asymmetricalLegs-rand(30%), added/minus each joint of the legs in radians. Random number changes about once every roll. 0.4 gives a lot of asymmetry

 Feedback Type  Behaviours Used  Description
 Success  Roll Up  finished rolling and has stabilised




bodyWrithe:

simple writhe behaviour, works under any initial state

 Parameter  Type  Default  Range  Units  Description
 armStiffness  float  13.00      
 backStiffness  float  13.00      
 legStiffness  float  13.00      The stiffness of the character will determine how 'determined' a writhe this is - high values will make him thrash about wildly
 armDamping  float  0.50      damping amount, less is underdamped
 backDamping  float  0.50      damping amount, less is underdamped
 legDamping  float  0.50      damping amount, less is underdamped
 armPeriod  float  1.00      Controls how fast the writhe is executed, smaller values make faster motions
 backPeriod  float  1.00      Controls how fast the writhe is executed, smaller values make faster motions
 legPeriod  float  1.00      Controls how fast the writhe is executed, smaller values make faster motions
 mask  string  fb      Two character body-masking value (see Active Pose notes for possible values)
 armAmplitude  float  1.00      
 backAmplitude  float  1.00      scales the amount of writhe. 0 = no writhe
 legAmplitude  float  1.00      scales the amount of writhe. 0 = no writhe
 elbowAmplitude  float  1.00      
 kneeAmplitude  float  1.00      
 rollOverFlag  boolean  false      Flag to set trying to rollOver




braceForImpact:

bracing for an impact, specifically from a slow moving car.
The character is expected to be upright and in a roughly balanced position. He will turn to face the object that he is to brace against. He will take corrective steps if he unbalances and will also catch his fall if he falls over.
The character will crouch slightly and lean into the impact, and if the impact object starts to move away, the character will righten itself and its upper body will assume the zero pose.

 Parameter  Type  Default  Range  Units  Description
 braceDistance  float  0.70  0 ... 2  Meters  distance from object at which to raise hands to brace
 targetPredictionTime  float  0.40  0 ... 1  Seconds  time epected to get arms up from idle
 reachAbsorbtionTime  float  0.15  0 ... 1  Seconds  larger values and he absorbs the impact more
 instanceIndex  int  -1  -1 ...    levelIndex of object to brace
 bodyStiffness  float  12.00  6 ... 16    stiffness of character. catch_fall stiffness scales with this too, with its defaults at this values default
 pos  vector3  0.00, 0.00, 0.00    World-Space Position  location of the front part of the object to brace against. This should be the centre of where his hands should meet the object
 look  vector3  0.00, 0.00, 0.00    World-Space Position  position to look at, eg the driver
 grabDontLetGo  boolean  false      
 grabStrength  float  40.00      
 grabDistance  float  1.30      
 grabReachAngle  float  1.50      
 grabHoldTimer  float  1.50      
 legStiffness  float  12.00      
 timeToBackwardsBrace  float  2.00  0 ... 10    time before arm brace kicks in when hit from behind

 Feedback Type  Behaviours Used  Description
 Start  sub behaviour  Catch_Fall_2
 Start  sub behaviour  dynamicBalance




catchFall:

the character catches his fall when falling over.
He will twist his spine and look at where he is falling. He will also relax after hitting the ground.
He always braces against a horizontal ground.

 Parameter  Type  Default  Range  Units  Description
 torsoStiffness  float  9.00  6 ... 16    stiffness of torso
 legsStiffness  float  6.00  6 ... 16    stiffness of legs
 armsStiffness  float  15.00  6 ... 16    stiffness of arms
 backwardsMinArmOffset  float  -0.25  -0.5 ... 0    0 will prop arms up near his shoulders. -0.3 will place hands nearer his behind
 forwardMaxArmOffset  float  0.45  0 ... 0.5    0 will point arms down with angled body, 0.45 will point arms forward a bit to catch nearer the head
 zAxisSpinReduction  float  0.00      Tries to reduce the spin around the Z axis. Scale 0 - 1.

 Feedback Type  Behaviours Used  Description
 Success  Catch Fall 2  when he has caught his fall
 Finish  Catch Fall 2  when he has finished relaxing after catching his fall




fallOverWall:

stunt-man style behaviour used to encourage the character to flip himself over waist-high-or-lower wall obstacles. this uses a pair of cheat forces, one to get the character lifted over the wall, another to provide twist to the spine as he does so to make the flip look less artificial.

the behaviour waits for collision with the spine or lower arms/hands to determine which point to flip over, or a custom point can be specified in the message instead.

 Parameter  Type  Default  Range  Units  Description
 bodyStiffness  float  9.00  6 ... 16    stiffness of the body, roll up stiffness scales with this and defaults at this default value
 damping  float  0.50  0 ... 3    Damping in the effectors
 magOfForce  float  0.60  0 ... 2    Magnitude of the falloverWall helper force
 maxDistanceFromPelToHitPoint  float  0.25      The maximum distance away from the pelvious that hit points will be registered.
 useSpecifiedPoint  boolean  false      
 fallOverPoint  vector3  0.00, 0.00, 0.00      
 fallOverEdge  vector3  0.00, 0.00, 0.00      The direction of the edge of the wall at the fallOverPoint
 bodyTwist  float  0.50      amount of twist to apply to the spine as the character tries to fling himself over the wall, provides more of a believable roll but increases the amount of lateral space the character needs to successfully flip. Value between 0 and 1, 1 being 'lots of twist'. the direction and precise amount is varied each time.

 Feedback Type  Behaviours Used  Description
 Start  sub behaviour  Body_Roll_Up




grab:

NOTE: An upper body behaviour.

An upper body behaviour that Grabs or Braces against a point, the nearest point on a line or the nearest point on a surface. Turns head, twists body and pelvis. Set useleft and useright to use the desired hands. Grab will create a constrant between the hand and a object. Brace will not create any constraint.

This behaviour can be played over other behaviours. However it includes logic about if and when to grab, so will not grab things behind the character or things that are out of reach.

There are 3 ways to specify the grab points.

Points: right grab/brace point (pos1) and/or left grab/brace point(pos2).

Line: grabs/braces with the left and/or right hand to the nearest point on the line between (pos1) and (pos2).

Quad Surface: grabs/braces to the surface specified by (pos1), (pos2), (pos3) and (pos4). These points must be specified in a anitclockwise order.

The normals ( right/left are normal(normalR)/normal(normalL) respectively) can be specified for all of the grab point input methods. If no normal is specified the behaviour will attempt to find the appropriate normal.

The grab points are specified in the coord frame of the instance specified by instanceIndex. ( -1 = world space).

PullUp: setting a pull up strength , pullUpStrength, result in the arms trying to pull relative to this strength over a time pullUpTime. 0 = no attempt to pull up. 1 = attemp to pull up the maximum amount.

 Parameter  Type  Default  Range  Units  Description
 linegrab  boolean  false      use the line grab, Grab along the line (x-x2)
 justbrace  boolean  false      Flag to toggle between grabbing and bracing
 surfaceGrab  boolean  false      Toggle surface grab on. Requires pos1,pos2,pos3 and pos4 to be specified.
 useLeft  boolean  true      Flag to toggle use of left hand
 useRight  boolean  true      Flag to toggle the use of the Right hand
 instanceIndex  int  -1  -1 ...    levelIndex of instance to grab
 dontLetGo  boolean  false      Once a constraint is made, dont let go untill the behaviour ends.
 grabStrength  float  -1.00  -1 ...    strength in hands for grabbing (kg m/s), -1 to ignore/disable
 bodyStiffness  float  11.00  6 ... 16    stiffness of upper body. Scales the arm grab such that the armStiffness is default when this is at default value
 pos1  vector3  0.00, 0.00, 0.00      Grab pos1, right hand if not using line or surface grab.
 pos2  vector3  0.00, 0.00, 0.00      Grab pos2, left hand if not using line or surface grab.
 pos3  vector3  0.00, 0.00, 0.00      
 pos4  vector3  0.00, 0.00, 0.00      
 normalR  vector3  0.00, 0.00, 0.00    Normal  Normal for the right grab point.
 normalL  vector3  0.00, 0.00, 0.00    Normal  Normal for the left grab point.
 reachAngle  float  2.80      Angle from front at which the grab activates. If the poit is outside this angle from front will not try to grab.
 oneSideReachAngle  float  1.40      Angle at which we will only reach with one hand.
 grabDist  float  0.45    Meters  Relative distance at which the grab starts.
 pullUpTime  float  1.00      Time to reach the full pullup strength
 armStiffness  float  14.00      
 grabHoldMaxTimer  float  100.00  0 ...  Seconds  amount of time, in seconds, before grab automatically bails
 reachDistance  float  0.70      
 instancePartIndex  int  0      
 pullUpStrengthLeft  float  0.00      
 pullUpStrengthRight  float  0.00      

 Feedback Type  Behaviours Used  Description
 Success  Grab  When a constraint is made. (RightArmGrab or LeftArmGrab)




grabUpdate:

Updates various parameters on the grab - see grab notes for details.

 Parameter  Type  Default  Range  Units  Description
 useLeft  boolean  true      Flag to toggle use of left hand
 useRight  boolean  true      Flag to toggle the use of the Right hand
 grabStrength  float  -1.00  -1 ...    strength in hands for grabbing (kg m/s), -1 to ignore/disable
 grabHoldMaxTimer  float  100.00  0 ...  Seconds  amount of time, in seconds, before grab automatically bails
 pullUpTime  float  1.00      
 pullUpStrengthRight  float  0.00      
 pullUpStrengthLeft  float  0.00      

 Feedback Type  Behaviours Used  Description
 Start  ArmGrab  sub behaviour




headLook:

Acts on the neck to make the head look at the position defined by pos[X,Y,Z].

Optionally the velocity of the point can be compensated for by setting vel[X,Y,Z].

If alwayslook is true the character will try to look at the point even if it is out side the field of view.

 Parameter  Type  Default  Range  Units  Description
 damping  float  1.00      Damping of the muscles
 stiffness  float  10.00  6 ... 16    Stiffness of the muscles
 instanceIndex  int  -1      levelIndex of object to be looked at. vel parameters are ignored if this is non -1
 vel  vector3  0.00, 0.00, 0.00      The velocity of the point being looked at
 pos  vector3  0.00, 0.00, 0.00      The point being looked at
 alwaysLook  boolean  false      Flag to force always to look
 alwaysEyesHorizontal  boolean  true      Keep the eyes horizontal. Use true for impact with cars. Use false if you want better look at target accuracy when the character is on the floor or leaned over (when not leaned over the eyes are kept horizontal) alot.




highFall:

Controls the character during a jump/fall. During the jump/fall tries to maintain an upright stance, windmills arms, pedal legs and looks down. As approaches the ground tries to transition to either a zero pose or land the jump resulting in transition to the body balance.

 Parameter  Type  Default  Range  Units  Description
 bodyStiffness  float  11.00  6 ... 16    stiffness of body. Value feeds through to bodyBalance (synched with defaults), to armsWindmill (14 for this value at default ), legs pedal, head look and roll down stairs directly
 bodydamping  float  1.00  0 ... 3    The damping of the joints.
 catchfalltime  float  0.20  0 ... 1    The length of time before the impact that the character transisitions to the landing.
 crashOrLandCutOff  float  0.52  0 ... 1    A threshold for deciding how close to upright the characters needs to be for the success message to be sent.
 pdStrength  float  0.30  0 ... 1    Strenght of the controller to keep the character is the uprigth position.
 useZeroPose  boolean  false      Blend to the zero pose as approaching the impact.
 landCutOffVelocity  float  50.00  0 ... 100    Maximum velocity at which a landing attemp wll be done.
 armPeriod  float  1.00  0 ... 2  Seconds  arm period in armWindMill
 armAmplitude  float  2.00  0 ... 10    in armsWindMill
 legRadius  float  0.25  0 ... 0.5  Meters  radius of legs on pedal
 legAngSpeed  float  5.00  0 ... 15    in pedal
 armsUp  float  1.00  -3 ... 3    Where to put the arms when preparing to land. Approx 1 = above head, 0 = head hieght, -1 = down.
 orientateBodyToFallDirection  boolean  true      toggle to orientate to fall direction
 fowardRoll  boolean  false      Try to execute a foward Roll on landing
 useZeroPose_withFowardRoll  boolean  false      Blend to a zero pose when foward roll is attempted.
 aimAngleBase  float  0.18      Angle from vertical the pdController is driving to ( positive = fowards)
 fowardVelRotation  float  -0.05      scale to add/subtract from aimAngle based on foward speed (Internal)
 footVelCompScale  float  0.05      Scale to change to amount of vel that is added to the foot ik from the velocity (Internal)
 sideD  float  0.15      sideoffset for the foot ik (Internal)
 fowardOffsetOfLegIK  float  0.20      Foward distance to add to foot ik (Internal)
 fowardVelCutOff  float  5.00  -1 ...    Cutoff for going into Forward Roll (Internal)
 legL  float  0.80      Leg Length for ik (Internal)
 catchFallCutOff  float  0.40      Cutoff to go to the catchFall ( internal)
 legStrength  float  12.00      Strength of the legs at landing
 ignorWorldCollisions  boolean  false      

 Feedback Type  Behaviours Used  Description
 Success  HighFall  if sucessfully landed and stabilised on his feet
 Failure  HighFall  character falls over onto ground
 Start  sub behaviour  bodyBalance
 Start  sub behaviour  Body_Roll_Up
 Start  sub behaviour  dynamicBalance




incomingTransforms:

Enable incoming transforms when 'start' is true, disable them if it is false; This will completely drive the character to the incoming animations. To do driven-physics animation, use Active_Pose.




leanInDirection:

Use in addition to any balance behaviour. Will lean and head in the specified direction with a strength given by the leanAmount.
Note he won't only go in the direction the direction vector will be in addition to any velocity he has (eg shot backwards).

 Parameter  Type  Default  Range  Units  Description
 leanAmount  float  0.20  -0.5 ... 0.5    amount of lean, 0 to about 0.5. -ve will move away from the target.
 dir  vector3  0.00, 0.00, 0.00    Normal  direction to lean in
 applyAsForce  boolean  false      apply as lean on character, or apply as an actual force to his pelvis




leanToPosition:

To use on any balance behaviour (eg body_balance / shot).
The character will lean and head horizontally towards a position in space with a strength specified by the leanAmount.

 Parameter  Type  Default  Range  Units  Description
 leanAmount  float  0.20  -0.5 ... 0.5    amount of lean, 0 to about 0.5. -ve will move away from the target.
 pos  vector3  0.00, 0.00, 0.00    World-Space Position  position to head towards
 applyAsForce  boolean  false      apply as lean on character, or apply as an actual force to his pelvis




leanTowardsObject:

To use on any balance behaviour (eg body_balance / shot).
The character will lean and head horizontally towards an object defined by the level index in 'instanceIndex', the position of which is offseted.

 Parameter  Type  Default  Range  Units  Description
 leanAmount  float  0.20  -0.5 ... 0.5    amount of lean, 0 to about 0.5. -ve will move away from the target.
 offset  vector3  0.00, 0.00, 0.00    Local-Space Position  offset from instance position added when calculating position to lean to
 instanceIndex  int  -1      levelIndex of object to brace
 applyAsForce  boolean  false      apply as lean on character, or apply as an actual force to his pelvis




pedalLegs:

Legs pedalling or bicycle pedalling type motion

 Parameter  Type  Default  Range  Units  Description
 pedalLeftLeg  boolean  true      pedal with this leg or not
 pedalRightLeg  boolean  true      pedal with this leg or not
 backPedal  boolean  false      pedal forwards or backwards
 radius  float  0.25  0 ... 1  Meters  base radius of pedal action
 angularSpeed  float  10.00  0 ... 20    rate of pedaling
 legStiffness  float  10.00  6 ... 16    stiffness of legs
 pedalOffset  float  0.15  -1 ... 1    affects straightness of legs
 randomSeed  int  100      Random seed used to generate speed changes
 speedAsymmetry  float  0.00  -1 ... 1    Random offset applied per leg to the angular speed to desynchronise the pedaling - set to 0 to disable, otherwise should be set to less than the angularSpeed value.
 adaptivePedal4Dragging  boolean  false      Will pedal in the direction of travel (if backPedal = false, against travel if backPedal = true) and with an angular velocity relative to speed upto a maximum of 13(rads/sec). Use when being dragged by a car. Overrides angularSpeed.
 angSpeedMultiplier4Dragging  float  0.30  0 ...    angularSpeed =angSpeedMultiplier4Dragging * linear_speed/pedalRadius
 radiusVariance  float  0.40      0-1 value used to add variance to the radius value while pedalling, to desynchonize the legs' movement and provide some variety
 legAngleVariance  float  0.50      0-1 value used to vary the angle of the legs from the hips during the pedal; used to provide some extra variety to the motion




pointArm:

 Parameter  Type  Default  Range  Units  Description
 target  vector3  0.00, 0.00, 0.00    Meters  point to point to (in world space)
 twist  float  0.30  -2 ... 2    twist of the arm around point direction
 armStraightness  float  0.80  0 ... 1    values < 1 can give the arm a more bent look
 useLeftArm  boolean  false      uses right arm unless this is true
 armStiffness  float  15.00  6 ... 16    stiffness of arm
 armDamping  float  1.00      damping value for arm used to point
 instanceIndex  int  -1      level index of thing to point at, or -1 for none. if -1, target is specified in world space, otherwise it is an offset from the object specified by this index.




rollDownStairs:

Curls into foetal position, at a speed defined by the strength and damping values; This behaviour is full-body and resets the character when it starts.

forcemag sets the strength of the helper force, use a range of [0,1]. 0 is no helper force.

Only applies the helper forces when a body part is touching the ground, Unless spinWhileInAir is set to true.


 Parameter  Type  Default  Range  Units  Description
 stiffness  float  11.00  6 ... 16    Effector Stiffness. value feeds through to rollUp directly
 damping  float  1.40  0 ... 3    Effector Damping.
 forcemag  float  0.55  0 ... 1    Helper force strength.
 asymmetry  float  0.00  0 ... 1    Add some assymetry into the helper forces.
 m_useArmToSlowDown  float  -1.90  -2 ... 2    the degree to which the character will try to stop a barrel roll with his arms
 useZeroPose  boolean  false      Blends between a zeroPose and the Rollup, Faster the character is rotating the less the zeroPose
 spinWhenInAir  boolean  false      Applied cheat forces to spin the character when in the air, the forces are 40% of the forces applied when touching the ground. Be careful little bunny rabbits, the character could spin unnaturally in the air.
 m_armReachAmount  float  1.40  0 ... 3    how much the character reaches with his arms to brace against the ground
 m_legPush  float  1.00  0 ... 1    amount that the legs push outwards when tumbling
 tryToAvoidHeadButtingGround  boolean  false      If going to face plant, spin faster. Uses a rayProbe to find the ground.
 armReachLength  float  0.40  0 ... 1  Meters  the length that the arm reaches and so how much it straightens
 customRollDir  vector3  0.00, 1.00, 0.00      pass in a custom direction in to have the character try and roll in that direction
 useCustomRollDir  boolean  false      pass in true to use the customRollDir parameter
 stiffnessDecayTarget  float  9.00  6 ... 16    
 stiffnessDecayTime  float  -1.00      time, in seconds, to decay stiffness down to the stiffnessDecayTarget value (or -1 to disable)
 asymmetricalLegs  float  0.00      0 is no leg asymmetry in 'foeta'l position. >0 a asymmetricalLegs-rand(30%), added/minus each joint of the legs in radians. Random number changes about once every roll. 0.4 gives a lot of asymmetry
 zAxisSpinReduction  float  0.00      Tries to reduce the spin around the z axis. Scale 0 - 1

 Feedback Type  Behaviours Used  Description
 Start  sub behaviour  Roll Up




shot:

Behaviour when shot by a gun. General affect is to reach for the body part and stagger... weakening only when given a shot_relax message.
You can be shot after hitting the ground and the character will react.
Arms that are not holding or injured will flail to maintain balance.
The character weakens briefly on each shot so as to emphasise the effect of each shot.

Head will look at wound or headLookPos alternatively for a random amount of time between headLookAtHeadPosMinTimer and headLookAtHeadPosMaxTimer. Initially will look at wound for headLookWoundMaxTimer amount fo time.

 Parameter  Type  Default  Range  Units  Description
 bodyPart  int  0  0 ... 21    part ID on the body where the bullet hit
 useHeadLook  boolean  false      Look at the specified position flag
 grabHoldTime  float  2.00  0 ... 10  Seconds  how long to hold for before returning to relaxed arm position
 crouching  boolean  false      is the guy crouching or not?
 chickenArms  boolean  false      type of reaction, does he do chicken arms effect
 reachForWound  boolean  true      type of reaction
 fling  boolean  false      Type of reaction
 maxSteps  int  100  0 ...    total number of corrective steps
 loosenessAmount  float  1.00  0 ... 1    how loose the character is on impact. between 0 and 1
 stableHandsAndNeck  boolean  false      additional stability for hands and neck (less loose)
 flingWidth  float  0.50  0 ... 1  Meters  Width of the fling behaviour.
 bodyStiffness  float  11.00  6 ... 16    stiffness of body. Feeds through to roll_up
 normal  vector3  0.00, 0.00, -1.00    Normal  Normal coming out of impact point on character
 headLook  vector3  0.00, 0.00, 0.00    World-Space Position  position to look at with headlook flag
 hitPoint  vector3  0.00, 0.00, 0.00    World-Space Position  position of impact on character
 bulletVel  vector3  0.00, 0.00, 0.00      
 melee  boolean  false      
 timeBeforeReachForWound  float  0.10  0 ...  Seconds  time, in seconds, before the character begins to grab for the wound on the first hit
 timeBeforeCollapseWoundLeg  float  0.50  0 ... 2  Seconds  time before a wounded leg is set to be weak and cause the character to collapse
 spinePainTime  float  2.00  0 ...  Seconds  Time spent crunching body (along spine) in pain on new hit
 spinePainMultiplier  float  0.75  0 ... 2    multiplier used to bend the spine in pain on a new hit
 spinePainTwistMultiplier  float  0.50  0 ... 2    multiplier for the spine pain twist-away effect
 useCatchFallOnFall  boolean  false      use the catch fall instead of RollUp when the balance fails during Shot (eg. the character isn't dead yet!)
 headLookAtWoundMinTimer  float  0.25      
 headLookAtWoundMaxTimer  float  0.80      
 headLookAtHeadPosMaxTimer  float  1.70      
 headLookAtHeadPosMinTimer  float  0.60      
 addShockSpin  boolean  false      if enabled, add a short 'shock' of torque to the character's spine to exaggerate bullet impact
 randomizeShockSpinDirection  boolean  false      for use with close-range shotgun blasts, or similar; choose a random direction to apply shock-spin, rather than derive direction from bullet velocity/impact
 alwaysAddShockSpin  boolean  false      if true, apply the shock spin no matter which body component was hit. otherwise only apply if the spine or clavicles get hit
 shockSpinMin  float  50.00      minimum amount of torque to add if using shock-spin feature
 shockSpinMax  float  90.00      maxiumum amount of torque to add if using shock-spin feature
 shockSpinLiftForceMult  float  0.00      if > 0, apply a force to lift the character up while the torque is applied, trying to produce a dramatic spun/twist shotgun-to-the-chest effect. this is a scale of the torque applied, so 8.0 or so would give a reasonable amount of lift
 shockSpinDecayMult  float  4.00      multiplier used when decaying torque spin over time; 4.0 = decay in ~1/4th of a second. 1.0 = decay over ~1 second.
 shockSpinScalePerComponent  float  0.50      torque applied is scaled by this amount across the spine components - spine2 recieving the full amount, then 3 and 1 and finally 0. each time, this value is used to scale it down. 0.5 means half the torque each time.

 Feedback Type  Behaviours Used  Description
 Success  Shot  when fully relaxed after the shot_relax message is called
 Success  Shot  when stabilised
 Start  sub behaviour  dynamicBalance




stayUpright:

This soft constraint keeps the character on his feet.
Use in addition to balance, for better stability.
on by default on body_balance and lower_body_balance. Needs to be added to other balance behaviours such as shot and brace for impact if necessary.

 Parameter  Type  Default  Range  Units  Description
 stiffness  float  3.00  6 ... 16    strength of constraint
 dampingScale  float  0.50  0 ... 3    damping in constraint




upperBodyFlinch:

Will brace arms and twist head and body in reaction to medium speed incoming object from a point(xd,yd,zd).

It will lead with the nearest hand to the incoming object if no hand or both hands are specified. Will look at the target.

Note: there is no logic about when/when not to brace.

 Parameter  Type  Default  Range  Units  Description
 rightHanded  boolean  false      Lead with the right hand
 leftHanded  boolean  false      Lead with the left hand
 handDistanceLeftRight  float  0.10  0 ... 1  Meters  Left-Right distance between the hands
 handDistanceFrontBack  float  0.10  0 ... 1  Meters  Front-Back distance between the hands
 handDistanceVertical  float  0.10  0 ... 1  Meters  Vertical distance between the hands
 bodyStiffness  float  12.00  6 ... 16    stiffness of body. Value carries over to head look, spine twist
 pos  vector3  0.00, 0.00, 0.00    World-Space Position  position in world-space of object to flinch from
 bodyDamping  float  1.00  0 ... 1.5    damping value used for upper body
 backBendAmount  float  -0.55  -1 ... 1    Amount to bend the back during the flinch
 useRightArm  boolean  true      Toggle to use the right arm.
 useLeftArm  boolean  true      Toggle to Use the Left arm
 noiseScale  float  0.10      Amplitude of the perlin noise applied to the arms positions in the flicnh to the front part of the behaviour.
 newHit  boolean  true      
 turnTowards  int  1