hmi.environment.bridge.emitters
Class GazeEmitter
java.lang.Object
java.lang.Thread
hmi.environment.bridge.emitters.GazeEmitter
- All Implemented Interfaces:
- Runnable
public class GazeEmitter
- extends Thread
This controller emits BML blocks with gaze behavior, to control where the VH is looking.
Strategies:
- look at user
- don't look
- look randomly around
To implement these strategies, there area number of VJoints/WorldObjects:
-vjRandomTarget
-vjXuukTarget (moves around with user)
-vjUserTarget (nonmoving version of vjXuuk -- allows us to statically gaze at the user without tracking when the user is moving around)
The xuukTarget moves around all the time to reflect the position of the user's face in the camera view.
while running:
- Author:
- Dennis Reidsma
| Methods inherited from class java.lang.Thread |
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield |
logger
private org.slf4j.Logger logger
activeGazeBehavior
private GazeEmitter.GazePattern activeGazeBehavior
- Which automatic gaze behavior is activated?
realizerBridge
RealizerBridge realizerBridge
randomTargetName
protected String randomTargetName
- The VJoint that is moved around
vjRandomTarget
protected VJoint vjRandomTarget
userTargetName
protected String userTargetName
vjUserTarget
protected VJoint vjUserTarget
vjXuukTarget
protected VJoint vjXuukTarget
lastmove
private long lastmove
currentwaitingtime
private double currentwaitingtime
parameterschanged
private boolean parameterschanged
userGazeDynamic
boolean userGazeDynamic
running
boolean running
averagewaitingtime
private double averagewaitingtime
range
private double range
trackingDistanceLimit
private float trackingDistanceLimit
- between 0..1: maximum delta before switch to non-dynamic gaze
z
private float z
minX
private float minX
maxX
private float maxX
minY
private float minY
maxY
private float maxY
lastgazeblock
private int lastgazeblock
allGazeEmitters
private static HashMap<String,GazeEmitter> allGazeEmitters
GazeEmitter
public GazeEmitter(RealizerBridge rb,
String id)
getGazeEmitter
public static GazeEmitter getGazeEmitter(String id)
setXuukTarget
public void setXuukTarget(VJoint xj)
setRandomTarget
public void setRandomTarget(VJoint rj,
String targetName)
setUserTarget
public void setUserTarget(VJoint uj,
String targetName)
run
public void run()
- Specified by:
run in interface Runnable- Overrides:
run in class Thread
stopRunning
public void stopRunning()
emitGaze
protected void emitGaze()
- if gazing at user, and dynamic gaze is active, then this method only updates the target position but does not emit new BML
setWaitForNextEmitGaze
protected void setWaitForNextEmitGaze()
- waitingtime is dependent on current gaze behavior method...
randomSetAvg
public void randomSetAvg(double w)
randomSetRange
public void randomSetRange(double r)
setGazeBehavior
public void setGazeBehavior(GazeEmitter.GazePattern gazeBehavior)