hmi.elckerlyc.faceengine
Class FACSFU

java.lang.Object
  extended by hmi.elckerlyc.faceengine.FACSFU
All Implemented Interfaces:
KeyPositionManager, FaceUnit

public class FACSFU
extends Object
implements FaceUnit

A basic facial animation unit consisting of one FACS configuration The key positions are: start, ready, relax, end. This descripes an apex-like intensity development: Between start and ready, the face configuration is blended in; between relax and end the face configuration is blended out. Parameter constraint: facsConfig should not be null

Author:
Dennis Reidsma

Field Summary
private  FacePlayer facePlayer
           
private  FACSConfiguration facsConfig
           
private  float intensity
           
private  KeyPositionManager keyPositionManager
           
private  MPEG4Configuration mpeg4Config
           
 
Constructor Summary
FACSFU()
           
 
Method Summary
 void addKeyPosition(KeyPosition kp)
           
 void cleanup()
          Clean up the face - i.e. remove traces of this faceunit
 FaceUnit copy(FacePlayer fp)
          Create a copy of this face unit and link it to the faceplayer
 TimedFaceUnit createTFU(BMLBlockPeg bbPeg, String i, String bmlId)
          Creates the TimedFaceUnit corresponding to this face unit
 KeyPosition getKeyPosition(String name)
           
 List<KeyPosition> getKeyPositions()
          Gets a sorted view of the list of keypositions
 String getParameterValue(String name)
           
 double getPreferedDuration()
           
 String getReplacementGroup()
          Get the faceunit replacement group (=typically the BML behavior) Used to determine the currently active persistent TFU for this group in the player Only one group is active at a time
 boolean hasValidParameters()
           
 void play(double t)
          Executes the face unit, by applying the face configuration.
 void removeKeyPosition(String id)
           
 void setConfig(FACSConfiguration fc)
           
 void setFacePlayer(FacePlayer fp)
           
 void setKeyPositions(List<KeyPosition> p)
           
 void setParameterValue(String name, float value)
           
 void setParameterValue(String name, String value)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

keyPositionManager

private final KeyPositionManager keyPositionManager

intensity

private float intensity

facsConfig

private FACSConfiguration facsConfig

facePlayer

private FacePlayer facePlayer

mpeg4Config

private final MPEG4Configuration mpeg4Config
Constructor Detail

FACSFU

public FACSFU()
Method Detail

setFacePlayer

public void setFacePlayer(FacePlayer fp)

setParameterValue

public void setParameterValue(String name,
                              float value)
Specified by:
setParameterValue in interface FaceUnit

setParameterValue

public void setParameterValue(String name,
                              String value)
Specified by:
setParameterValue in interface FaceUnit

getParameterValue

public String getParameterValue(String name)
Specified by:
getParameterValue in interface FaceUnit

hasValidParameters

public boolean hasValidParameters()
Specified by:
hasValidParameters in interface FaceUnit

setConfig

public void setConfig(FACSConfiguration fc)

play

public void play(double t)
          throws FUPlayException
Executes the face unit, by applying the face configuration. Linear interpolate from intensity 0..max between start and ready; keep at max till relax; then back to zero from relax till end.

Specified by:
play in interface FaceUnit
Parameters:
t - execution time, 0 < t < 1
Throws:
FUPlayException - if the play fails for some reason

cleanup

public void cleanup()
Description copied from interface: FaceUnit
Clean up the face - i.e. remove traces of this faceunit

Specified by:
cleanup in interface FaceUnit

createTFU

public TimedFaceUnit createTFU(BMLBlockPeg bbPeg,
                               String i,
                               String bmlId)
Creates the TimedFaceUnit corresponding to this face unit

Specified by:
createTFU in interface FaceUnit
Parameters:
i - behaviour id
bmlId - BML block id
Returns:
the TFU

getReplacementGroup

public String getReplacementGroup()
Description copied from interface: FaceUnit
Get the faceunit replacement group (=typically the BML behavior) Used to determine the currently active persistent TFU for this group in the player Only one group is active at a time

Specified by:
getReplacementGroup in interface FaceUnit

getPreferedDuration

public double getPreferedDuration()
Specified by:
getPreferedDuration in interface FaceUnit
Returns:
Prefered duration (in seconds) of this face unit, 0 means not determined/infinite

copy

public FaceUnit copy(FacePlayer fp)
Create a copy of this face unit and link it to the faceplayer

Specified by:
copy in interface FaceUnit

addKeyPosition

public void addKeyPosition(KeyPosition kp)
Specified by:
addKeyPosition in interface KeyPositionManager

getKeyPosition

public KeyPosition getKeyPosition(String name)
Specified by:
getKeyPosition in interface KeyPositionManager

getKeyPositions

public List<KeyPosition> getKeyPositions()
Description copied from interface: KeyPositionManager
Gets a sorted view of the list of keypositions

Specified by:
getKeyPositions in interface KeyPositionManager

setKeyPositions

public void setKeyPositions(List<KeyPosition> p)
Specified by:
setKeyPositions in interface KeyPositionManager

removeKeyPosition

public void removeKeyPosition(String id)
Specified by:
removeKeyPosition in interface KeyPositionManager