SmartBody characters can synthesize locomotion using only a single walking cycle file. The motion synthesis uses the steering engine as a controller for the position objective and can follow the computed path. 

Setup

The locomotion system requires a retargeted motion file and footstep annotations in order to work. A number of options can be defined to modify the behaviour of the character:

AttributeDescription

walkCycle

Name of the file that contains the walking cycle

walkSkeletonName of the file that contains the associated skeleton of the cycle
walkScaleThe scale of the motion data, usually 1 for meters and 0.01 for centimeters
walkSpeedGainThe desired speed of the motion. Default is 1 for no alteration
LEndEffectorJointName of the left foot on the skeleton. It represents the joint that goes in contact with the floor while walking
REndEffectorJointName of the right foot on the skeleton. It represents the joint that goes in contact with the floor while walking
CenterHipJointName of the joint that connects both lower extremities. Normally is on the middle of the hips
FadeInInterpolation value needed for motion continuity between the fly phase and the landing phase
FadeOutInterpolation value needed for motion continuity between the departing phase and the fly phase
TurningRateRate at which the character turns. If it is too high, the character legs will likely collide
footPlantRightFoot contact information of the right foot
footPlantLeftFoot contact information of the left foot
startsWithRight

True if the motion starts with the right foot on the floor, false if it starts with the left one. Default is true

After the parameters are set, the system can start to generate locomotion, a possible configuration looks like this:

brad.setDoubleAttribute("walkSpeedGain", .8)
brad.setStringAttribute("CenterHipJoint", "JtPelvis")
brad.setStringAttribute("footPlantLeft", "10,22")
brad.setStringAttribute("footPlantRight", "0,6,29,36")
brad.setStringAttribute("walkCycle", "ChrBrad@Walk01B")
brad.setStringAttribute("walkSkeleton", "ChrBrad.sk")

The motion file needs to self concatenate. In order to achieve this, it runs through a smoothing process. It is assumed that the file provided was already segmented and has the following characteristics:

  •  It starts and ends on a similar pose, this pose is not repeated among the cycle.
  • The cycle contains 2 full steps.
  • The initial pose starts(ends) with one foot on full contact with the ground and one flying on the air.
  • Both feet have a minimum distance at the start(end) of the cycle.

                

 The picture on the left presents the starting-and ending- pose. The one on the right is when when foot contact starts for the left foot and ends for the right foot

Foot contact

The foot contact information assumes the walking cycle start with the right foot on the ground, if not, the motion is mirrored so it starts that way. Given that you will see a motion that starts with the right foot in contact with the floor anyway, the amount of information on footPlantRight and footPlantLeft will be the same regardless of the foot that starts in contact with the ground.

footPlantRight: It contains the information of the foot that starts in contact with the ground. It has to be a list of four integers:

  1. It is 0 and represents the first frame of the motion in contact with the floor.
  2. Is the first frame that is not on full contact with the floor, the toes can still be in contact.
  3. Is the first frame greater than the previous value that has a complete foot contact with the floor.
  4. Is the last frame of the cycle, the foot should be in contact with the floor at this moment.

footPlantLeft: It contains the information of the foot that starts and end on the air in the cycle. It has to be a list of two integers

  1. Is the first frame that is on full contact with the floor.
  2. Is the first frame greater than the previous value that is not on complete contact with the floor.

Limitations

Due to the nature of the controller and its low requirements, some limitations are encountered. The first one is that the style is fixed by the cycle, that limits considerably the speed to which it can deform without introducing artifacts. A second limitation is that it doesn't blend in or out of an idle position, if it begins to walk, there will be no motion connecting the cycle and the idle pose.

Regardless of the limitations is suitable to mention that this controller relies only on one motion file while the example one needs 20, each one with specific characteristics. 

 

Attachments:

contact.png (image/png)
landing.png (image/png)