Although there are many ways in which facial expressions could be evolved using my system, the following describes a typical session.
At the start, the user is presented with a pool of 12 random facial
expressions; it is assumed that she has some idea of the facial expression
which she seeks to evolve.
Some of the random expressions may look favourable to the user, in other
words, expressing the qualities which she is looking for. (If this is not the
case, the user can request a new batch of random expressions.)
If the user sees an expression which she wishes to retain for future
operations, she may lock it by pressing the ``lock'' button beneath it.
This will cause it to be immune to any other changes made.
If the user notices two expressions, of which each contains some desirable
characteristics, she may select them and breed them, replacing the other
(unlocked) expressions with their offspring (expressions whose parameters
are taken from the parents). If the user sees several expressions which have
characteristics which she would like the others to have, she can select these
and apply the towards operator, causing the others to move towards the
average of these expressions.
At some stage, the user will arrive at a situation where she has one of the aspects of the expression (say, the eyes or the mouth) as desired, but still wishes to modify the other aspects. In this situation, the user can lock the attributes which are as desired using the controls on the right-hand side of the window (see fig. 2) and resume the process for the remaining attributes.
Using the locking mechanism, both for individual expressions and for particular attributes of an expression, the user can narrow the search through expression space, helping to guide the process. One technique which is useful is to lock all but one attribute and apply the randomise operation, generating random values of that attribute; this is particularly useful when other attributes are as desired or close to the desired effect.