Each BML command specifies a behavior, which, by default, start immediately, and end at various times depending on the specific behavior. For example, a nod lasts one second by default, a gesture lasts as long as the animation used to specify it, and so forth. A behavior can be scheduled to play or finish playing at different times using synchronization points. Each behavior generated by a BML command uses a set of synchronization points. Most use the minimal set of points - start and end. Some behaviors are deemed persistent, and have no finish time, such as gazing or idling, and thus have no end synchronization point. A behavior can be designed to to start or stop at a specific time in the future. For example:
<head type="NOD" start="2"/>
Indicates that you would like your character to start nodding his head two seconds from the time the command is given. Some BML commands, such as <animation> and <gesture> also contain implicit synchronization points that indicate the phases of the action. For example, the stroke synchronization point indicates the emphasis phase of a gesture, so:
<gesture type="BEAT" stroke="5"/>
indicates to make a beat gesture where the stroke (emphasis) point is five seconds after the BML command was given. The gesture will be automatically started such that the stroke phase of the gesture will occur at the five second mark. For example, if the gesture ordinarily takes 2 seconds to complete, with the stroke phase at the 1 second mark, then the above command will start the gesture four seconds after the command was given, yielding the stroke phase at the 5 seconds, and completion at the 6 seconds.
BML commands can also use relative timings by using the + or - modifiers, such as:
<head type="NOD" start="2" end="start+5"/>
which indicates to finish the head nod five seconds after it started, in this case, finishing at seven seconds.
The following table shows the synchronization points used for each behavior.
Behavior | Synchronization Points | Comments |
---|---|---|
Gaze | start | |
Locomotion | start ready | start = start time of idle motion ready = time when motion is fully blended with last idle motion |
Head Movement | start ready stroke relax end | ready = ramp-in time stroke = middle of head movement relax = ramp-out time |
Idle | start ready | |
Animation | start ready stroke relax end | ready = ramp-in time stroke = emphasis point of the animation relax = ramp-out time |
Gesture | start ready stroke relax end | ready = ramp-in time stroke = emphasis point of the animationrelax = ramp-out time |
Reach | start | |
Constraint | start ready | ready = time needed to achieve constraint |
Face | start ready stroke relax end | ready = ramp-in time stroke = emphasis point of the face motionrelax = ramp-out time |
Speech | start ready stroke relax end | start, ready, stroke = time of first word spoken relax, end = time of last word spoken |
Eye saccade | ..? |