SmartBody : Configuring Eye Saccades

SmartBody characters can use eye saccade models that emulate listening, speaking and thinking behaviors. In addition, explicit eye saccades can be specified to show scanning an object, looking away to reduce cognitive load, looking up to express thinking, and so forth. (Details can be found at Eye Saccade)

Saccade requires a skeleton that includes 2 joints, one for each eye named eyeball_left and eyeball_right.

Currently SmartBody provides three basic behaviors: listening, talking and thinking. Custom behavior will be supported in the future. However you can adjust these basic behaviors by changing the attributes. Following are the attributes and their default values. (Default values for talking and listening mode come from paper "Eyes Alive", Lee, Badler, Badler with some adjustments for SmartBody skeleton setup).

 

Attributes

Description

Default Value for different <mode>

listeningtalkingthinking
saccade.<mode>.percentage0

chance of saccade falls into 0 degree bin.

considering you are looking into a 2D plane and dividing the plane into 8 direction bins.

the percentage for 8 bins should add up to 100.

15.54

15.545.46
saccade.<mode>.percentage45chance of saccade falls into 45 degree bin6.466.4610.54
saccade.<mode>.percentage90chance of saccade falls into 90 degree bin17.6917.6924.69
saccade.<mode>.percentage135chance of saccade falls into 135 degree bin7.447.446.44
saccade.<mode>.percentage180chance of saccade falls into 180 degree bin16.8016.806.89
saccade.<mode>.percentage225chance of saccade falls into 225 degree bin7.897.8912.80
saccade.<mode>.percentage270chance of saccade falls into 270 degree bin20.3820.3826.38
saccade.<mode>.percentage315chance of saccade falls into 315 degree bin7.797.796.79
saccade.<mode>.magnitudeLimitmagnitude limit for the saccade10.012.012.0
saccade.<mode>.percentageMutual

chance of saccade to be gaze mutual , meaning saccade fixation is the target.

another type is gaze away.

75.041.020.0
saccade.<mode>.mutualMean

saccade interval is decided by Gaussian curve.

mean for the Gaussian curve, saccade type as gaze mutual.

237.593.9180.0
saccade.<mode>.mutualVariantvariant for the Gaussian curve, saccade type as gaze mutual.47.194.947.0
saccade.<mode>.awayMeanmean for the Gaussian curve, saccade type as gaze away.13.027.8180.0
saccade.<mode>.awayVariantvariant for the Gaussian curve, saccade type as gaze away.7.124.047.0

<mode> can be one of the following: listening, talking and thinking. For example, you can do following python commands to reduce the magnitude limit of talking mode from 12.0 to 8.0.

character = scene.getCharacter("mycharactername")

character->setDoubleAttribute("saccade.talking.magnitudeLimit", 8.0f)

 

Note that these attributes would talk effect immediately.