Coordinated movement with arms and hands, including simple gestures like beats and more complex parameterized ones.
A gesture can be made to start and end at any internal sync point. The attributes start/end can be assigned any internal sync point of the gesture, e.g.
<gesture id="gesture1" start="this:ready" end="this:stroke-end"/>
which means that the gesture starts with the ready and ends with the stroke-end sync points, i.e. the gesture has neither a preparation nor a retraction phase. This is a general extension to the use of the start/end attributes.
If a gesture has repeated strokes, other behaviors can be synchronized with specific iterations using autogenerated sync points of the form <id>:stroke:<n> e.g.
<other_behavior id="ob1" start="gesture5:stroke:2"/>
which means other_behavior starts with the second iteration of the stroke of gesture5.
Note that defining specific times for stroke iterations is left for future extensions.
Note that you can realize overlaid beats using two synchronized but separate BML behaviors for the same hand(s), one of which would be of type “beat”.
Core
| Attribute | Type | Use | Description |
|---|---|---|---|
| type | name | required | The category of gesture movement [POINT, BEAT, CONDUIT, LEXICALIZED, …] |
| hand | name | optional | What hand/arm is being used [LEFT, RIGHT, BOTH] |
| repetition | integer | optional | The number of times the stroke should be repeated for this gesture (between stroke-start and stroke-end) |
| target | ID | optional | The gesture is directed towards this target |
| lexeme | lexicalized | required with LEXICALIZED, otherwise optional | Refers to an animation or a controller to realize this particular gesture |
WORLD and CHARACTER. This <target> sub-element should also be used by gaze and pointing gestures.
Locomotion also defines target proximity. What is the equivalent here?
Beyond core:
| Attribute | Type | Use | Description |
|---|---|---|---|
| handshape | lexicalized | optional | The shape of the hand [INDEXFINGER, THUMB, OPENHAND, FIST, FINGER-RING, CUP, PURSE] |
| extendedfingerdirection | direction | optional | Refers to the orientation of the wrist by specifying where the (extended) index finger is pointing, it's relative to the character. |
| palmdirection | direction | optional | The palm comes from this direction relative to the target, if one is specified. Otherwise, it's relative to the character |
| trajectory | lexicalized | optional | The characteristic shape of the gesture movement through space [straight, curved, circular, rectangular, triangular, wave-like, zigzag,…] |
| twohanded | lexicalized | optional | How the two hands/arms of a two-handed gesture should be coordinated [mirror, alternate, parallel,…] |
| location_vertical | location_vertical | optional | The vertical location (height) of the hand at stroke-start [LOW, CENTER, HIGH] |
| location_horizontal | location_horizontal | optional | The horizontal location of the hand at stroke¬start [CENTER, LEFT, RIGHT, INWARD, OUTWARD]. OUTWARD means to the body side of the hand being used (analogous for INWARD) which means left hand and right for right hand. The reason to include INWARD/OUTWARD is you are not required to specify the handedness and can specify outwardness. INCLUDE GRAPHICS |
| location_distance | location_distance | optional | The distance of the hand from the body at stroke¬start [CONTACT, NEAR, MEDIUM, FAR] |
| movementdirection | direction | optional | The general direction of the overall gesture movement relative to the character |
| amplitude | size | optional | Refers to the spatial extent of the gesture [SMALL, MEDIUM, LARGE, EXTRA-LARGE] |
| power | power | optional | Refers to how powerfully the gesture is executed [WEAK, NORMAL, FORCEFUL] |
| scope | lexicalized | optional | Refers to scope [FINGERx, WRIST, HAND, FOREARM, ARM] |
The following three figures give a visual indication of the three location attributes:
Figure: location_vertical
Figure: location_horizontal
Figure: location_distance
NOTE: WG3 actually proposed to have each gesture type be a separate sub-element under <gesture>, but see the forum thread for discussion.
NOTE: An interesting question raised by Herwin: What If I want to point/beat using whatever bodypart available (head, hands, feet)? This would probably not fall under gesture as it is defined here, but where would be put it?
Words to be spoken by a character. Generates both speech audio (or text) and speech movement (for example using a speech synthesizer and viseme morphing).
Unlike many of the other behavior elements, the <speech> element requires a sub-element. This sub-element is a <text> element that contains the text to be spoken, with optionally embedded synchronization elements for alignment with other behaviors. No other elements or attributes are specified for this core level.
This is an example of a complete speech behavior, synchronized to a beat gesture (striking on “speech”):
<speech id="s1"> <text>This is a complete core level BML <sync id="tm1"/> speech description.</text> </speech> <gesture id="g1" stroke="s1:tm1" type="BEAT">
Description Extensions are to be used to provide a more detailed description of the to be realized speech, typically in an existing XML representation language (SSML, ToBi, MaryTTS, etc.). Since not all BML realizers can execute the description extension, it is required that the description extension provides exactly the same synchronization points as its accompanying core BML speech text. It is allowed to place the synchronization points in the description level at slightly different positions than those in the core BML speech text. This allows description levels to provide synchronization at a finer grained level (e.g. at the start of a syllable rather than a word).
<speech id="s1"> <text>This is the proposed BML <sync id="tm1"/> extended speech specification.</text> <description priority="3" type="audio/x-wav"> <sound xmlns="http://www.ouraudiodesc.com/"> <file ref="bml.wav"/> <sync id="tm1" time="2.3" /> <!-- This binds the word break with a particular playback time --> </sound> </description> </speech>
<speech> <text>This is the proposed BML <sync id="tm1"/> extended speech specification.</text> <description priority="1" type="application/ssml+xml"> <speak xmlns="http://www.w3.org/2001/10/synthesis"> This is the <emphasis>proposed</emphasis> BML <mark name=”tm1”/> extended speech specification. </speak> </description> </speech>