BML Twente

The BML Twente extension adds the specification of physical controllers, procedural animation, transition animations and synchronization to anticipated events to BML. It is used in the Elckerlyc realizer. Here we present a quick overview of the BMLT tags and their syntax.

<bmlt:parameter>

Used to pass parameter values to <bmlt:controller>, <bmlt:procanimation> or <bmlt:transition>.

AttributeTypeUseDescription
nameNamerequiredparameter name
valueStringrequiredparameter value

<bmlt:controller>

Describes a physical controller behavior. Parameters can be passed to the controller using <bmlt:parameter>.

AttributeTypeUseDescription
classNamerequiredJava class name of the controller

Example: enable the balance controller with pelvis height at 1.3m (resulting in a balance motion with unbend legs) and slightly increased stiffness

<bmlt:controller id="balance1" class="BalanceController" start="0" end="10">
  <bmlt:parameter name="pelvisheight" value="1.3"/>
  <bmlt:parameter name="stiffnessmultiplier" value="1.1"/>
</bmlt:controller>

<bmlt:procanimation>

Describes a procedural animations. Parameters can be passed using <bmlt:parameter>.

AttributeTypeUseDescription
nameNamerequiredname of the procedural animation

Example: conduct a procedural 3 beat gesture with amplitude 5.

<bmlt:procanimation id="beat1" name="3-beat" start="3">
  <bmlt:parameter name="a" value="5"/>
</bmlt:procanimation>

<bmlt:transition>

Creates a transition animation. The start and end pose of the transition are determined automatically from its surrounding motions.

AttributeTypeUseDescription
classNamerequiredJava class name of the transition used

Example: create a simple slerp transition on the arm's rotations, moving from the neutral pose toward the start arm pose of the conducting gesture

<bmlt:transition id="trans1" class="SlerpTransition" start="1" end="2">
  <bmlt:parameter name="joints" value="r_shoulder,r_elbow,r_wrist,l_shoulder,l_elbow,l_wrist"/>
</bmlt:transition> 
<bmlt:procanimation id="beat1" name="3-beat" start="trans1:end"/>

Synchronization to Predicted Events

We allow synchronization to external, possibly predicted events. This does not require an extension of BML, other than allowing a synchronization to reference ids that are not in the BML script. Example: link conducting beat 1, 2 and 3 of a procedural conducting to tick 1, 2 and 3 of a metronome.

<bmlt:procanimation id="conduct1" name="3-beat"/>
<constraint id="c1">
  <synchronize ref="conduct1:start">
    <sync ref="metronome1:tick1"/>    	
  </synchronize>
  <synchronize ref="conduct1:beat2">
    <sync ref="metronome1:tick2"/>    	
  </synchronize>
  <synchronize ref="conduct1:beat3">
    <sync ref="metronome1:tick3"/>    	
  </synchronize>  
</constraint>

BMLT as description extension

All BMLT behaviors can also be specified within a bmlt description extension. For example:

<gesture start="3" id="beat1" type="LEXICALIZED" lexeme="conduct-3-beat" hand="RIGHT">
  <description priority="1" type="bmlt:procanimation">
    <bmlt:procanimation id="beat1" name="conduct-3-beat" start="3">
      <bmlt:parameter name="a" value="5"/>
      <bmlt:parameter name="hand" value="RIGHT"/>
    </bmlt:procanimation>	
  </description>
</gesture>

Persistent bmlt behaviors

Some BMLT behaviors are persistent (currently just bmlt:controller). They adhere to the same persistent patterns as gaze and posture in core BML. Example:
Specification of a persistent balance controller

<bml id="bml1">
   <bmlt:controller id="balance1" class="BalanceController" start="1"/>
</bml>

Replacement groups

Each bmlt behavior can be assigned a replacement group using a bmlt:parameter. The BMLT realizer ensures that at most one behavior of each replacement group is played at the same time. The played behavior is the behavior with the most recent start time.

Example:

<bml id="bml1">
  <bmlt:controller id="balance1" class="BalanceController">
    <bmlt:parameter name="pelvisheight" value="1.2"/>
    <bmlt:parameter name="replacementgroup" value="balance"/>
  </bmlt:controller>
  <bmlt:controller id="balance1" class="BalanceController" start="4" end="8">
    <bmlt:parameter name="pelvisheight" value="0.8"/>
    <bmlt:parameter name="replacementgroup" value="balance"/>
  </bmlt:controller>
</bml>

Balances with stretched knees (pelvisheight = 1.2m) from time = 0 till time = 4, balances with bend knees (pelvisheight = 0.8m) from time = 4 till time = 8, then balances with stretched knees again.

bmlt behaviors can overwrite persistent core bml behaviors by using their name as replacement group:

<bml id="bml1">
  <posture id="pose1" stance="standing" shape="open" part="lower"/>	
  <bmlt:controller id="balance1" class="BalanceController" start="4">
    <bmlt:parameter name="pelvisheight" value="0.6"/>
    <bmlt:parameter name="replacementgroup" value="posture"/>
  </bmlt:controller>
</bml>

Other Description Extensions Implemented by Elckerlyc

<speech> using Microsoft Speech API

Example:

<bml id="bml1">
  <speech id="speech1" start="5">   	
    <text>I'm speaking BML.</text>    	
    <description priority="1" type="application/msapi+xml">
      <sapi>I'm speaking <spell>BML</spell>.</sapi>
    </description>  	
  </speech>   
</bml>
 
projects/bml/bmlt.txt · Last modified: 2009/10/29 12:35 by herwin
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki