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> | ||
---|---|---|---|---|
listening | talking | thinking | ||
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.54 | 5.46 |
saccade.<mode>.percentage45 | chance of saccade falls into 45 degree bin | 6.46 | 6.46 | 10.54 |
saccade.<mode>.percentage90 | chance of saccade falls into 90 degree bin | 17.69 | 17.69 | 24.69 |
saccade.<mode>.percentage135 | chance of saccade falls into 135 degree bin | 7.44 | 7.44 | 6.44 |
saccade.<mode>.percentage180 | chance of saccade falls into 180 degree bin | 16.80 | 16.80 | 6.89 |
saccade.<mode>.percentage225 | chance of saccade falls into 225 degree bin | 7.89 | 7.89 | 12.80 |
saccade.<mode>.percentage270 | chance of saccade falls into 270 degree bin | 20.38 | 20.38 | 26.38 |
saccade.<mode>.percentage315 | chance of saccade falls into 315 degree bin | 7.79 | 7.79 | 6.79 |
saccade.<mode>.magnitudeLimit | magnitude limit for the saccade | 10.0 | 12.0 | 12.0 |
saccade.<mode>.percentageMutual | chance of saccade to be gaze mutual , meaning saccade fixation is the target. another type is gaze away. | 75.0 | 41.0 | 20.0 |
saccade.<mode>.mutualMean | saccade interval is decided by Gaussian curve. mean for the Gaussian curve, saccade type as gaze mutual. | 237.5 | 93.9 | 180.0 |
saccade.<mode>.mutualVariant | variant for the Gaussian curve, saccade type as gaze mutual. | 47.1 | 94.9 | 47.0 |
saccade.<mode>.awayMean | mean for the Gaussian curve, saccade type as gaze away. | 13.0 | 27.8 | 180.0 |
saccade.<mode>.awayVariant | variant for the Gaussian curve, saccade type as gaze away. | 7.1 | 24.0 | 47.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.