Our database is divided according to emotional responses. This allows us to categorize a type of response based on its emotional content.
We are able to estimate how long a given response will take based on the number of ASCII characters in a response. This is to say that if we have a 33-bit response of a "joy" emotional type (ex: "Oh this is so great I am so happy.") then it will take approximately 2 seconds to speak this sentence (if, for example, it takes about 1 second to read 16 bits of text). Therefor, with this particular response, we know we have a need for a "joyful" appearing 4-second animation that accompanies it.
But these animations are of an indeterminate length. That is to say that we don't know how long a single animation will be since we have an indeterminate number of possible responses. We have to build a series of small animations that can all be tied together and rendered alongside the response. What makes this more difficult is that these animations should not loop, or 'pop'. This means that animations need to be 'tied' together by interpolation and not by hard-coding the geometry's movement.
By using "chunks" of animations that are based on a fibonacci sequence (1, 1, 2, 3, 5, 8, 13, 21, etc) we can generate an animation of any length. these "chunks" must, of course, have the same emotional content so as not to appear incongruous with each other.
To generate these chunks we began by building a large one-minute animation "template" based on one of the eight main emotions (which you see above). These templates were then peeled apart and individual chunk animations were saved of our determined lengths (1, 1, 2, 3, etc). This preserves the artistic emotional feel of the animation, but builds a set of discreet pieces that can then be stitched together by interpolating between specific keyframes.
But there are two problems. Emphasis needs to come on certain words of phrases and their positions are indeterminate. Cameras need to appear at certain moments, etc. Therefor specific cues are used in the script to indicate what is happening, and when. These cues over-ride all other animations or generated responses of a visual sort. This is the work that is currently taking place.
|