## Controlling a PseudoD Stroke

We have demonstrated how to create an illusion of rotation by making use of the general anchoring mechanism. To perform that deformation, only one control parameter, the aspect ratio of the stroke, has been used. We could in theory control any kind of deformation of a picture with the aspect ratio alone. If different features in a picture are to change in different ways, however, it would be more convenient to have independent controls.

easily set up an external control system by which users can manipulate different features with pop-up sliders, dials or other graphical user interfaces. We shall not go into details here.

Figure 16: Hierarchical definition allowing independent control of different parts. (a) The definition of the stroke 'cube', 2nd order anchored by providing 3 instances at 1, 1.5 and 2 times its original aspect ratio(i.e. the left most one). (b) The definition of the sub-stroke 'cubeface' used in the definition of the stroke 'cube'. Notice that the eyes in the 'cubeface' stroke are also anchored skeletal strokes. The right eye has been closed by lengthening the application path. (c) Demonstrating how the 'eye' closes on varying its stroke length. (d) Application of the stroke 'cube' at different path lengths. Notice that the closing of the right eye takes effect at any 'angle' of the cube stroke.

Figure 16: Hierarchical definition allowing independent control of different parts. (a) The definition of the stroke 'cube', 2nd order anchored by providing 3 instances at 1, 1.5 and 2 times its original aspect ratio(i.e. the left most one). (b) The definition of the sub-stroke 'cubeface' used in the definition of the stroke 'cube'. Notice that the eyes in the 'cubeface' stroke are also anchored skeletal strokes. The right eye has been closed by lengthening the application path. (c) Demonstrating how the 'eye' closes on varying its stroke length. (d) Application of the stroke 'cube' at different path lengths. Notice that the closing of the right eye takes effect at any 'angle' of the cube stroke.

We shall explain how to introduce extra independent controls with an example. Figure 16 shows a stroke of a cube which has a face on one of its sides. We can independently control the rotation of the cube and the blinking of the eyes of the face. This is done by defining the cube as a main stroke with the face as its sub-stroke. As was mentioned in Section 5.5, each stroke application is recorded with reference to the stroke definition (or stroke definitions if sub-strokes exist). This means that any changes in the definition of the stroke 'cubeface' would propagate to that of the stroke 'cube' and the changes would be reflected in its resulting stroke applications. Now using general anchoring, we can define the eyes on the stroke 'cubeface' to blink by varying the stroke application length of the 'eye' stroke. Hence by manipulating the lengths of the definitions of the strokes 'cube' and 'eye', we can control the cube rotation and eye blinking actions independently. This feature is particularly attractive for animating stylish cartoon characters which have no actual 3D realization.

This hierarchical way to define skeletal strokes means it is possible to build up powerful 2^D models with an arbitrary number of independent control parameters. Actually, these controls can be raised from the stroke definition level: we can

-4 ?n Skeletal SW<es" Figure 17: A picture after a CACM front cover[1].