INTERACTIVE IMAGE SYNTHESIS AND PROCESSING

Abstract: Partial raster images of the objects represented in a desired composite raster image are generated and stored separately. When one object is modified, only that object, or at most a small subset of all the objects in the image, need be re-rendered into raster format. This allows the composite raster image to be redrawn quickly, giving the system a good interactive response. The system also allows a "brush stroke"-like object to be interactively created using a pen and digitising tablet in a similar way to an artist using a conventional paint brush, while retaining the benefits of an "object-based" representation of brush strokes.

Description: INTERACTIVE IMAGE SYNTHESIS AND PROCESSING This invention relates to apparatus for, and methods of, interactive image generation and processing, particularly but not exclusively for use in computer illustration. Digital image processing apparatus is known which allows an artist to produce images by creating objects and defining attributes for them. For example, W0-A1-92/09966 (incorporated herein by reference) describes aspects of a system which allows an artist to define complex brush strokes from which an image is built up. These brush strokes are defined in terms of spline curves and attributes (such as colour, opacity and width) along the curves. The image is created by a rendering process which takes the data defining these objects and produces a raster image at the desired resolution. Each object is rendered into a partial raster image ("bit map" image) defining colour and opacity for an array of picture elements ("pixels"), and this partial image is composited into the image being generated, by performing a "read, modify, write" process on pixel values already stored in a frame store. Pixels in the partial image which are completely transparent cause no modification of the values already stored, while opaque pixels overwrite any value stored in the frame store. Partially transparent pixels have their colours blended with the value already stored. Another system which works in a similar way is "Corel Draw" , which is a program that runs on IBM PCs and compatibles, and is available from Corel Systems Corporation. A first drawback with representing an image in terms of objects is that the artist has to wait while these objects are rendered to see the results of his work. This invention provides in a first aspect a means to allow such images to be produced very much more quickly, such that for most of the time the system can keep the image displayed to the artist up to date with the modifications the artist makes. An apparatus according to this first aspect of the invention comprises interactive editing means for use in creating and editing an image, wherein the image is stored and displayed in raster format while being defined by a plurality of data objects which are stored and edited in non-raster format, the apparatus further comprising store means for separately storing a partial raster image defined by at least one such object, whereby when another such object is edited the partial raster image need not be amended to update and redisplay the edited image. An alternative proposal to address the above drawback is described in WO-A1-93/07583, which stores the boundaries not only of each entire object, but also of each portion of an object which overlaps another object. These boundaries are used to delimit the area to be re-rendered, when an object changes. The system described in O-A1-92/09966 (incorporated herein by reference) allows a user to define a brush stroke in terms of a spline curve and a set of attributes. A second drawback of the known system is therefore that the creation of such a brush stroke is very much a two stage process: the user first creates the spline curves defining the "path" of the - stroke, then adds attributes at various points along the spline to define the brush stroke. It is desirable for artists to be able to paint interactively by moving a stylus, mouse or other interactive pointing device in a manner which * produces finished brush strokes on the image, in the same way that a conventional brush produces marks on paper. In a second aspect, this invention provides a method for creating brush strokes interactively. This can be achieved by extending the method by which strokes are created so that strokes are automatically added to curves as they are created. In particular, the second aspect of the invention provides a computer painting apparatus wherein stroke objects are represented by curve definitions and attribute definitions in a non-raster format, the apparatus having an interactive stroking mode wherein incremental movements of a user-controlled pointing device are converted to incremental stroke sections and rendered for display, and wherein the set of incremental stroke sections is subsequently converted to a non-raster format stroke definition for- storage and further processing. BRIEF DESCRIPTION OF THE DRAWINGS Embodiments of the invention will now be described, by way of example, with reference to the accompanying drawings in which: Figure 1 shows schematically the elements of an apparatus suitable for implementing embodiments of the invention; Figure 2 illustrates a method of painting a composite bit map image, using partial bit map caches; Figure 3 illustrates a known method of representing a complex brush stroke in a computer painting system; Figure 4 illustrates the interactive generation of a brush stroke in the system of Figure 1. GENERAL DECRIPTION OF APPARATUS Referring to Figure 1, the apparatus comprises a computer 100 comprising a central processing unit 110, a memory device 120 for storing the program sequence for the CPU 110 and providing read/write memory, a frame store 130 comprising memory locations each associated with, or mapped to, a point in an image to be generated or processed, and an input/output controller 140 providing input and output ports for reading from and writing to external devices, all intercoupled through common parallel data and address buses 150. A monitor 160 is connected to the computer 100 and its display updated from the frame store 130 under control of the CPU 110. At least one user input device 170a, 170b is provided, typically in the form of a keyboard 170b for inputting commands or control signals for controlling peripheral operations, and a position sensitive input device 170a. The position sensitive device may be for example a stylus and digitising tablet, a "mouse", a touch sensitive screen on the monitor 160, or a "trackerball" device or a joystick. A cursor symbol is generated by the computer 100 for display on the monitor 160 in dependence upon the signal from the position sensitive device 170a to allow a user to inspect an image on the monitor 160 and select or designate a point or region of the image during image generation or processing. A mass storage device 180 such as, for instance, a hard disk drive is preferably provided as a long term image store. The mass storage device 180 may also or alternatively comprise a removable medium storage device such as a floppy disk drive, to allow data to be transferred into and out of the computer 100. Also connected to input/output device 140 and frame store 130 in this embodiment, is a recorder 190 for producing a permanent record of the image generated. The output may be provided in visual form on a transparency or on a sheet of paper, or may be recorded as a video signal in an analogue or digital storage medium such as a magnetic tape or a magnetic or optical disc. A picture input device 195 such as a scanner for scanning an image on, for example, a slide, and inputting a corresponding video image signal to the computer 100 may also be provided. One example of a suitable computer 100 is the NeXTCUBE computer including the NeXTdimension colour board, available from NeXTComputer, Inc., USA. This arrangement provides direct formatted outputs for connection to a video cassette recorder or other video storage device 190, and accepts video signals. Further, it includes means for compressing images for storage on a disk store 180, and for decompressing such stored images for display. An Apple Corp. or IBM-compatible personal computer could also be suitable, given the appropriate interfaces for video signals. ' GENERAL DESCRIPTION OF THE RENDERING PROCESS In the following description, "rendering" an image refers to the process of taking a description of a set of objects making up an image and producing a raster image from this, a raster image being an image represented by a rectangular array of picture elements known as "pixels". Known systems work by representing an image as a set Of objects that collectively make up the image. For example, the system described in W0-A1-92/09966 has objects such as "fills", which are regions bounded by splines that are painted with a single colour, and "strokes" which can simulate the effect of either a pen stroke or a brush stroke by sweeping a notional "brush" along a spline. An ordered list is held, which defines the order in which the objects are rendered. Conventional systems need to render the entire image from scratch when any part of it is changed. This can take from a few seconds to several minutes (depending on the number and complexity of the objects in the image, and the resolution of the image being rendered). One technique available to solve this problem is only to show the user a simplified representation of the image. All splines used for bounding fills or as path for strokes are shown as lines in such a system. The system described in WO-A1-92/09966 also shows strokes as outlines, with "handles" for editing the shape of the stroke. The drawback with this approach is that the artist does not see how the changes made really affect the final image until it is next rendered. The system according to this embodiment (Figure 2) provides means for allowing artists to make edits which immediately affect the final rendered image. CACHING LAYERS OF THE IMAGE The system of Figure 2 takes advantage of the fact that, when an artist makes a change to an image, the change typically affects very few of the objects making up the image. Often, only one object will be affected. If rendered raster images of the individual objects could be cached (stored) then it would only be necessary to rendered the objects that had been changed to create the whole image. In Figure 2, the operational structure of the system of Figure 1 is shown, in so far as it relates . to the caching process. The user interface is shown at 200, which acts to create and edit definitions of "brushstrokes" and other objects, stored in an object database 202. From these object definitions stored in the database 202, a renderer 204 generates image data in bit map (raster) form, which is written at 206 into the frame store 130. In accordance with the transparency attribute for each pixel of the bit map data generated by the renderer 204, this data is combined as necessary at 208 with data already stored in the frame store 130 for the same pixel, in a "read, modify, write" process. The memory 120 or frame store 130 also provides storage space 210 for partial bit map caches, and a cache control mechanism 212 is provided to monitor and control this storage facility. Data in bit map form produced by the renderer 204 can be written into the bit map cache storage 210 instead of, or in addition to, being written to the frame store 130. Similarly, bit map data to be written to the frame store 130 can be read from the bit map cache storage 210, instead of being generated anew by the renderer 204. The frame store has an output 214 for a video output, signal conveying the final, composite bit map image to be displayed on the monitor 160. The first time an image is painted, all objects in the image must be rendered by the renderer 204. Instead of (or in addition to) rendering all the objects * into a single composite raster image, however, each object is rendered into a separate raster image and stored in the cache storage 210. The cached bit map is sized to the bounding box of the object(s) rendered into it. In addition to a colour value, each pixel painted has an opacity component, where an opacity value of 0 indicates a completely transparent pixel, and an opacity value of 1 indicates a completely opaque pixel. This allows areas outside the objects being rendered, but within the bounding box of the objects, to be represented by transparent pixels. It further allows objects with transparent or translucent parts to be fully represented in the conventional manner. Having rendered all the objects making up the image into these separate raster images, the raster, images can be composited together in the frame store 130 to produce the output image. To this point, there is no saving compared with conventional systems. When an object is changed, however, only the raster image containing the object that changed needs to be re-rendered. The result can then be composited at 208 with other raster images read from the bit map cache memory 210 to produce the updated output image in the frame store 130. At the same time, the partial raster image for the changed object is updated in the cache memory 210 for use in producing subsequent images. CACHING GROUPS OF OBJECTS There are a number of problems with the simple minded caching strategy outlined above. The first is that for an image made up of a reasonably large number of objects the amount of memory required to store a cached image of every object could be prohibitive. Furthermore, while it should generally be quicker to composite a cached image than to render the object is contains, the cost of having to perform a large number of compositing operations would eventually, become significant. The caching process can be made more efficient by grouping the objects into layers . Since the objects are ordered for rendering, each layer contains objects that are contiguous in the ordered list. The layers themselves are also stored in an ordered list which matches the order of the objects the layers contain. When an object is changed, all the objects in the same layer as that object need to be rendered and composited to update the layer. The effectiveness of this approach is strongly influenced by the strategy used to group objects into layers. Two possible approaches are as follows: 1. User Defined Grouping. The system described in WO-A1-92/09966 already has facilities for allowing the user to group objects. The grouping structure was originally provided in that system to assist with the ordering of objects. Groups can contain objects or other groups, which allows a hierarchical structure to be set up. For example, an image of a cartoon character may have its objects grouped as "body", "left arm", "right arm" and so on. These groups may contain further groups, for example the "right arm" may contain "upper arm", "lower arm" and "hand". These groups can be used to determine which objects each layer contains. To prevent the amount of storage required for the caches from getting too large, a fixed amount of storage is allocated for the caches. The system then descends the hierarchy creating caches at each level until the cache storage is exhausted. The effect of this would be to cause more objects to be cached together, which would mean that rendering a cached image becomes slower. The cache control process is arranged to balance the compromise between more memory for the caches and slower cache rendering times. 2. Automatically Determined Grouping An alternative to simply using the groups set up by the user is to determine automatically how to group the objects into layers. The following procedure (to be performed by cache control unit 212) tries to group the objects into layers so that each layer has a roughly equal rendering time. It also tries, to keep objects that overlap in the image in the same layer, and objects that are far apart in different layers. The cache control unit 212 needs to know for this procedure the rendering time for each object. Initially, this can be estimated based on various parameters of the object, such as its * area and complexity. Once the object has been rendered, however, the actual time taken can be noted and used. Set L = target number of layers Estimate total rendering time T Find average rendering time for each layer A = T/L Start new layer group For each object: If (rendering time for current layer < A) or (rendering time for current layer < 2A and object bounding box completely inside layer bounding box) then Add object to layer else Start new layer group As objects are edited and reordered, this procedure is repeated to maintain the optimum layers. PREDEFINED VIEWS ' Certain operations will still involve redrawing all the layers, such as changing the resolution at which the layers are stored (by zooming, for example). The system of this embodiment alleviates this problem to an extent by allowing the user to define a set of "favourite" views on the scene, which can be of different regions of the image and at different zoom factors. Each of these views has its own list of layers which is kept up to date. Keeping up to date layers of views different to that which the user is currently using is assigned a low priority for the processor and is performed as a background task only. This means the user will not be held up waiting while images are generated for views other than that which is currently being used, but, when the view is changed, the image may already have been rendered for the new view. COMPRESSING THE CACHES Raster images tend to take up large amounts of storage. This can be significantly reduced by compressing the images when updating the bit map caches, and decompressing when reading from a cache. Computer generated images are often very amenable to compression, and using "lossy" compression algorithms such as JPEG, compression factors of 10:1 or more can be obtained for very little degradation in quality. Hardware compression boards are available using custom 3 chips such as that produced by the company C ("C-cubed") in California U.S.A. which allow compression and decompression to be performed very quickly. This is a particularly suitable application for lossy compression techniques, since each raster is only compressed once, then decompressed as needed. A problem often associated with systems that use lossy compression algorithms is that the image gradually degrades if it is repeatedly decompressed, modified and recompressed. This does not occur in the present system, since the raster images are only compressed once. An alternative lossy compression method is so-called fractal compression, as implemented by Iterated Systems. INTERACTIVE EDITING A further consideration is how to allow the user to make interactive edits. In this case, a small subset of the objects will be being repeatedly changed. For example, the system described in WO-A1-92/09966 allows the user to move control points which control the shape of a spline by moving a cursor over the control points using a mouse or pen, selecting the control point by pressing the mouse button or applying pressure to the pen, then dragging the control point to a new position. In order to have an up to date rendered image at all times during this process, the layers can be optimised for the specific operation being performed. When the user selects the object, then the optimum grouping would be to have three layers, one containing everything under the selected object, one containing everything obove the selected object, and a third containing just the object. When the object is edited, only the layer containing the object need be rendered, which should be fairly fast since it contains just the one object. The updated image is then produced by compositing the three layers together. This process would be repeated as the artist drags the control point to edit the object. If more than one object is being edited at the same time, for example by making a multiple selection of control points, then the optimum grouping of objects into layers may require more than the three layers just described. The system maintains an estimate of the rendering time for each object. It is then possible to render the changed objects while an interactive response can be maintained, but, if rendering becomes too slow, to switch automatically to showing a simplified representation of the object (such as an outline), so that the user still has an interactive response. At the same time, rendering of the current position of the object could commence in the background, so that if the user stops moving the mouse for a sufficient time for the rendering to finish, the rendered image would appear. INTERACTIVE CREATION OF STROKES As described in WO-A1-92/09966, brush strokes in the system of Figure 1 are stored in a compact and versatile format, whereby the "path" of the stroke is defined by a first Bezier curve segment or segments, while the extent and other attributes of the curve are defined by additional control points at desired places along the path. Figure 3 illustrates this representation of part of a brush stroke, showing the path A (defined by end points and associated tangent vectors) and a set of three extent control attributes C1-C3, each defining Bezier curve segments for the boundaries Bl and B2 of the stroke relative to control points on the path A chosen by the user. The extents and other attributes such as colour profile, capacity profile and so forth, are defined throughout the stroke by interpolation between such attributes as defined at these movable control points. To display the brush stroke, the apparatus sub-divides the stroke into a number of smaller and smaller segments, until a sufficiently good approximation to the extent 300 of the brush stroke is obtained by piecewise linear interpolation, as shown by broken lines at 302 in Figure 3. The brush stroke can then be rendered for display by filling the resulting polygonal areas of pixels in accordance with the appropriate opacity and colour profiles. It will be appreciated that in the known system the user is required to define first the path A and then the extent and other attributes of the brush stroke at at least one control point, before he or she is able to see rendered the resulting brush stroke. The present system, however, also provides a. tool by which brush strokes can be defined by drawing freehand lines, to provide a level of interactive control similar to that provided by conventional raster based painting systems, whereby, as the user drags the pointing device 170a, a stroke is incrementally added to the image. Figure 4 illustrates this interactive stroking process, in which the new path and stroke are created in many short sections, each section being defined by the distance between successive samples "x" of the pointing device 170a. As each short section is added, it is rendered and added to the image, so the user sees the rendered brush stroke appearing in real time as he draws it, up to a current stylus position 400. These short sections are rendered in the same way as the polygonal sections derived from the data defining the stroke as in the known system (Figure 3). The only difference is that the sections are determined directly by successive samples "x" of the pointing device instead of being interpolated from the data defining the stroke. In a case where the samples of the pointing device position are widely spaced, the system can be arranged to give a smoother appearance to the stroke, even while it is being drawn, by interpolating additional sample points "x" between those supplied by the pointing device. For this purpose, quadratic or cubic interpolation can be performed on the basis of a few most recent sample positions, in a manner known already in the context of purely raster-based pointing systems. Once the stroke is complete, a minimisation function is used to reduce the number of sections such that the shape of the stroke is unchanged to within a certain tolerance. The path of the stroke in the present apparatus is converted into a number of Bezier curves using a curve fitting algorithm such as the one described in "Graphics Gems" edited by Andrew S. Glassner, p. 612 "An algorithm for automatically fitting digitized curves" by Philip J. Schneider, ISBN 0-12-286166-3. If the new stroke is of constant width, then only one extent attribute value is needed. If the pointing device has a third degree of freedom, such as the pressure which many pen & tablets can measure, then this can be used to modify the stroke as it is created. This value can be used to modify one (or even several together) of the attributes defining the stroke, such as the width or opacity. • Figure 4 illustrates extent bars 402 to 410 varying the width of the stroke in accordance with stylus pressure. The attribute is initially sampled at every section of the stroke (while it is being created), then reduced to the minimum number of samples required to represent the change in the attribute value along the stroke, using a one dimensional version of a curve fitting algorithm such as the one referred to above. This allows strokes to be created with the same immediacy and control of a conventional raster based painting system, whilst retaining the advantages of resolution independence and full editability. This process can be extended to other systems which describe strokes in different ways, for example, a stroke defined by two spline curves representing the outlines and cross sectional lines between these. This representation is fully described in patent application WO-A1-92/21096, incorporated herein by reference. Again, the user would need to define the colour profile, opacity profile and width of the stroke, but instead of a single path being constructed, two paths would be needed, each at a distance of half the stroke width from the path traced by the user. The width of the stroke could be varied depending on some other input parameter, such as the pressure applied to the pen if a pen & tablet is used. The stroke would be built up in sections, each section being defined by successive samples of the pointing device in exactly the same way as described previously. The difference comes once the stroke is complete, when instead of generating a central path, two paths need to be generated by applying a curve fitting algorithm such as the one referred to above to the sets of points defining the outline of the stroke. The following patent applications are incorporated herein by reference in their entirety: WO-A1-92/09965, WO-A1-92/09966, WO-A1-92/21095, and WO-A1-92/21096.

Claims: CLAIMS : 1. Apparatus for interactive computer painting comprising interactive editing means for use in creating and editing an image, wherein the image is stored and displayed in raster format while being defined by a plurality of data objects which are stored and edited in non-raster format, the apparatus further comprising means for separately storing a partial raster image defined by at least one such object, whereby when another such object is edited the partial raster image need not be amended to update and redisplay the edited image. 2. An apparatus according to claim 1 comprising: storage means providing (i) a frame store for data defining a composite image in raster format, (ii) cache storage for individual partial raster images and ' (iii) storage for object data defining the composite image in non-raster format; means for transferring a plurality of individual partial raster images from said cache storage to said frame store in an order defined by said object data, to define said composite image in raster format; rendering means for generating from said object data defined in non-raster format partial raster images representing subsets of a plurality of objects represented in said composite image; and means responsive to changes in said object data to cause the rendering means to generate partial raster images for changed objects and to cause the newly generated partial raster image to be combined in said frame storage with partial raster images for unchanged objects, transferred from said cache storage, to define a modified composite image in raster format. 3. An apparatus according to claim 1 or 2 wherein said control means maintains a plurality of partial raster images in said cache storage, in accordance with groupings of said data objects.. 4. An apparatus according to claim 3 wherein said groupings are determined with reference to user-defined groupings of said data objects. 5. An apparatus according to claim 3 or 4 wherein said groupings are determined automatically with reference to object rendering times, in order to make uniform the total rendering time per group. 6. An apparatus according to claim 3, 4 or 5 wherein said groupings are determined automatically with reference to a predetermined object rendering order, such that different groups do not overlap in said order. 7. An apparatus according to claim 3, 4, 5 or 6 wherein said groupings are determined automatically with reference to relative positions of said data objects in the plane of the composite image, such that mutually distant objects are grouped separately. 8. An apparatus according to claim 7 wherein said partial raster image for a group of objects covers at least a rectangular bounding area of those objects, and wherein a further object is judged distant in relation to an existing group of objects in the event that said further object lies wholly or partially outside said bounding area. 9. An apparatus according to any of claims 3 to 8 wherein said groupings are determined automatically with reference to a rendering order for the objects, such that objects preceding and following the object being edited in the rendering order are grouped separately. 10. An apparatus according to any of claims * 1 to 9 wherein a plurality of sets of partial raster images are generated and stored automatically in relation to a plurality of pre-defined views of the objects that may be selected by the user. 11. An apparatus according to claim 10 wherein a high priority is given to the task of maintaining a set of partial raster images relevant to a currently selected view, and a lower priority is given to the task of maintaining the other sets. 12. A computer painting apparatus wherein stroke objects are represented by curve definitions and attribute definitions in a non-raster format, the apparatus having an interactive stroking mode wherein incremental movements of a user-controlled pointing device are converted to incremental stroke sections and rendered for display, and wherein the . set of incremental stroke sections is subsequently converted to a non-raster format stroke definition for storage and further processing. 13. An apparatus according to claim 12 wherein an incremental attribute value is generated for each incremental stroke section in accordance with an attribute signal generated by the pointing device, and each incremental stroke section rendered in accordance with said attribute value, wherein the set of incremental attribute values is subsequently converted to a non-incremental format attribute definition for storage and further processing. 14. An apparatus according to claim 13 wherein said non-raster format attribute definition comprises a definition of attribute values at attribute control points whose locations are defined relative to a curve defined for the stroke. 15. An apparatus according to any of claims 12 to 14 wherein said attribute is one of the following attributes: extent, colour and opacity. 16. An apparatus according to any of claims 12 to 15 wherein in said interactive stroking mode said incremental movements of the pointing device are converted to incremental stroke sections by non-linear interpolation, so as to smooth the rendered stroke. 17. An image signal or picture or motion picture recording conveying image data generated by an apparatus as claimed in any of claims 1 to 14. 18. A method of operating an interactive computer painting apparatus by interactively creating and editing an image, wherein the image is stored and displayed by the apparatus in raster format while being defined by a plurality of data objects which are created, stored and edited in non-raster format, the method further comprising separately storing a partial raster image defined by at least one such object, and editing another such object while updating and redisplaying the edited image without amending the partial raster image. 19. A method according to claim 18 wherein a plurality of partial raster images are maintained in said cache storage, in accordance with groupings of said data objects. 20. A method according to claim 19 wherein said groupings are determined with reference to user-defined groupings of said data objects. 21. A method according to claim 19 or 20 wherein said groupings are determined with reference to object rendering times, in order to make uniform the total rendering time per group. 22. A method according to claim 19, 20 or 21 wherein said groupings are determined with reference to a predetermined object rendering order, such that different groups do not overlap in said order. 23. A method according to any of claims 19 to 22 wherein a plurality of sets of partial raster images are generated and stored in relation to a plurality of pre-defined views of the objects that may be selected by the user. 24. A method of operating a computer painting apparatus wherein stroke objects are represented within the apparatus by curve definitions and attribute definitions in a non-raster format, the method comprising an interactive stroking process wherein incremental movements of a user-controlled pointing device are converted to incremental stroke sections and rendered for display in accordance with a specific attribute definition, and wherein the set of incremental stroke sections is subsequently converted to a non-raster format stroke definition for storage and further processing. 25. A picture or motion picture recording generated by a method as claimed in any of claims 1 to 14. 26. A record carrier conveying machine readable instructions effective to cause computer apparatus to operate automatically in the manner of a computer painting apparatus or method according to any preceding claim.

Inventors: BEREND ANDREW LOUIS CHARLES, BROCKLEHURST MICHAEL JOHN, WILLIAMS MARK JONATHAN, BEREND, ANDREW, LOUIS, CHARLES, BROCKLEHURST, MICHAEL, JOHN, WILLIAMS, MARK, JONATHAN
Applicants: BEREND ANDREW LOUIS CHARLES, BROCKLEHURST MICHAEL JOHN, CAMBRIDGE ANIMATION SYST, WILLIAMS MARK JONATHAN, BEREND, ANDREW, LOUIS, CHARLES, BROCKLEHURST, MICHAEL, JOHN, CAMBRIDGE ANIMATION SYSTEMS LIMITED, WILLIAMS, MARK, JONATHAN
Application year: 1994
Main classification: G06F
IPC codes: G06T11, G09G5