ANIMATION SPLINE SCALING AND STACKING METHOD AND
APPARATUS
CROSS-REFERENCES TO RELATED APPLICATIONS [0001] The present application incorporates by reference for all purposes and claims priority to Provisional Application No. 60/470948, filed May 14, 2003.
BACKGROUND OF THE INVENTION
[0002] The present invention relates to computer animation. More specifically, the present invention relates to management of animation objects. [0003] Throughout the years, movie makers have often tried to tell stories involving make- believe creatures, far away places, and fantastic things. To do so, they have often relied on animation techniques to bring the make-believe to "life." Two of the major paths in animation have traditionally included, drawing-based animation techniques and stop motion animation techniques. [0004] Drawing-based animation techniques were refined in the twentieth century, by movie makers such as Walt Disney and used in movies such as "Snow White and the Seven Dwarfs" (1937) and "Fantasia" (1940). This animation technique typically required artists to hand-draw (or paint) animated images onto a transparent media or eels. After painting, each eel would then be captured or recorded onto film as one or more frames in a movie. [0005] Stop motion-based animation techniques typically required the construction of miniature sets, props, and characters. The filmmakers would construct the sets, add props, and position the miniature characters in a pose. After the animator was happy with how everything was arranged, one or more frames of film would be taken of that specific arrangement. Stop motion animation techniques were developed by movie makers such as Willis O'Brien for movies such as "King Kong" (1933). Subsequently, these techniques were refined by animators such as Ray Harryhausen for movies including "Mighty Joe Young" (1948) and Clash Of The Titans (1981).
[0006] With the wide-spread availability of computers in the later part of the twentieth century, animators began to rely upon computers to assist in the animation process. This included using computers to facilitate drawing-based animation, for example, by painting
images, by generating in-between images ("tweening"), and the like. This also included using computers to augment stop motion animation techniques. For example, physical models could be represented by virtual models in computer memory, and manipulated.
[0007] One of the pioneering companies in the computer aided animation (CAA) industry was Pixar, dba Pixar Animation Studios. Over the years, Pixar developed and offered both computing platforms specially designed for CAA, and rendering software now known as RenderMan®. RenderMan® renders images based upon geometric scene descriptors including references to object models. Between different scenes, the objects are typically repositioned, or animated by an animator. This is typically done by setting values for one or more animation variables (avars) for the object. The possible range of values for avars are typically different. For example, to represent rotation of two objects relative to each other, an avar may have a value from 0 to 360 degrees; to represent a length of an object, an avar may have a value from 0.5 to 15; etc.
[0008] One method for setting values for animation variables is by directly setting a numeric value for an avar. Another method is through direct manipulation of a graphical control point associated with the avar. Although these methods are sufficient for setting animation variables for a single frame animation, the setting of avars for all individual frames is virtually impossible.
[0009] One method for reducing the burden of setting animation variables for each frame, is through the use of animation key frames. In such examples, an animator sets values for animation variables for only key frames, for example, every 10th frame. For non key frames, the values are linearly interpolated, or the like. Drawbacks to these methods include that objects animated using values sometimes have robotic, or non-organic movement. In other words, the object may not move in a natural and convincing manner. [0010] One method used by Pixar to give objects more fluid, life-like motion has been through the use of graphical representations of values for animation variables. With such techniques, values for animation variables are displayed to animators in a graph with respect to time. Because, the values for the avars are defined by the animator through the use of geometric paths, movements for an object are more natural. Pixar also discovered that it is advantageous to display values for more than one animation variable at a time, so that different movements for an object could be coordinated with each other.
[0011] A problem with these technique discovered by Pixar has been when more than one graph of an avar with respect to time is displayed on a display. Because the ranges of animation variables can be dramatically different, when values for avars are displayed, some parts of an animation variable graphical may be too small for the animator to see, and some parts of other animation variables may extend beyond the edges of the display. As an examples values for a first avar ranges from 0 to 500, values for a second avar range from 0 to 1, and a vertical scale is from -10 to 100. In such a display, values for the first avar greater than 10 would not be displayed on the display, and values for the second avar would be difficult to determine. [0012] The inventors of the present invention have determined that additional improvements for displaying and setting of animation variables are needed.
BRIEF SUMMARY OF THE INVENTION
[0013] The present invention relates to computer animation. More specifically, the present invention relates to methods for displaying and manipulating values for animation variables.
[0014] The present embodiments disclose an animation system having the capability to graphically display values of animation variables with respect to time. The embodiments also provide a path editor that allows users (e.g. animators) to directly define the shape of a graphical path, such as a spline, Bezier curve, and the like. [0015] Further embodiments disclose methods for independently scaling paths of avars on a display. This is implemented by associating separate display scale factors with each path displayed so that each animation variable is displayed at an appropriate size on the display, hi various embodiments, the scaling factor determined for each of the different paths is automatically determined based upon a range of values for each path. The range of values may be determined based upon possible or actual minimum and maximum values for an animation variable. For example, the time period may be for an entire feature, for a scene, for a shot, for a defined amount of time, or the like. In other example, the time period may be for the time period displayed on the display, a time period displayed on the display plus a certain amount before and after, and the like. [0016] In various embodiments, paths for more than one animation variable may be
"stacked" on a display for visual comparison purposes, hi other words, a display offset may
also be that so the avar paths appear offset or "stacked" on the display. The amount of display space for each path is the same or may be different.
[0017] According to one aspect of the invention, a method for a computer system including a display is disclosed. One technique includes receiving sets of animation variable data for a plurality of animation variables, wherein the plurality of animation variables comprise a first animation variable and a second animation variable, wherein a first set of animation variable data for the first animation variable is characterized by a first geometric path having values within a first range of values, wherein a second set of animation variable data for the second animation variable is characterized by a second geometric path having values within a second range of values. Other processes include automatically determining a target vertical size on the display for display of the first geometric path and the second geometric path, determining a time period for display of the first geometric path and the second geometric path, automatically determining a first display scaling factor in response to the target vertical size on the display and to the first range of values, and automatically determining a second display scaling factor in response to the target vertical size on the display and to the second range of values, wherein the first path display scaling factor is different from the second path display scaling factor. Other processes may include displaying a portion of the first geometric path on the display in response to the time period, wherein the portion of the first geometric path is vertically scaled to fit within the target vertical size in response to the first display scaling factor, and displaying a portion of the second geometric path on the display in response to the time period, wherein the portion of the second geometric path is vertically scaled to fit within the target vertical size in response to the second display scaling factor.
[0018] According to one aspect of the invention, a graphical user interface for a computer system display is disclosed. One user interface includes a first portion configured to display values for a first animation variable as a function of time, wherein the values are represented by a first geometric path, wherein the values are within a first range, wherein the first geometric path is graphically scaled by a first graphical scaling factor to fit within the first portion in response to the first range, and wherein the first portion is also configured to enable a user, to graphically modify parameters of the first geometric path. Another user interface includes a second portion configured to display values for a second animation variable as a function of time, wherein the values are represented by a second geometric path, wherein the values are within a second range, wherein the second geometric path is graphically scaled by a second graphical scaling factor to fit within the second portion in
response to the second range, and wherein the second portion is also configured to enable the user to graphically modify parameters of the second geometric path.
[0019] According to one aspect of the invention, a computer system is disclosed. One ■ apparatus includes a processor configured to receive sets of animation variable data for a plurality of animation variables, wherein the plurality of animation variables comprise a first animation variable and a second animation variable, wherein a first set of animation variable data associated with the first animation variable is characterized by a first geometric path having values within a first range of value, wherein a second set of animation variable data associated with the second animation variable is characterized by a second geometric path having values within a second range of values, wherein the processor is also configured to determine a vertical display size for the first geometric and for the second geometric path, wherein the processor is configured to determine a time period of the first geometric path and the second geometric path, wherein the processor is configured to determine a first display scaling factor in response to the vertical display size and to the first range of values, wherein the processor is configured to determine a second display scaling factor in response to the vertical display size and to the second range of values, wherein the first path display scaling factor is different from the second path display scaling factor, wherein the processor is configured to output a portion of the first geometric path in response to the time period, wherein the portion of the first geometric path is vertically scaled to fit within the vertical display size in response to the first display scaling factor, and wherein the processor is configured to output a portion of the second geometric path in response to the time period, wherein the portion of the second geometric path is vertically scaled to fit within the vertical display size in response to the second display scaling factor. A system may also include a display coupled to the processor wherein the display is configured to display the portion of the first geometric path and configured to display the portion of the second geometric path.
BRIEF DESCRIPTION OF THE DRAWINGS
[0020] hi order to more fully understand the present invention, reference is made to the accompanying drawings. Understanding that these drawings are not to be considered limitations in the scope of the invention, the presently described embodiments and the presently understood best mode of the invention are described with additional detail through use of the accompanying drawings in which:
[0021] Fig. 1 illustrates a block diagram of a computer system according to one embodiment of the present invention;
[0022] Fig. 2 illustrates a block diagram of an embodiment of the present invention;
[0023] Figs. 3 A-B illustrate a block diagram of a flow chart according to embodiments of the present invention; and
[0024] Fig. 4 illustrates an example of an embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
[0025] Fig. 1 is a block diagram of typical computer system 100 according to an embodiment of the present invention.
[0026] In the present embodiment, computer system 100 typically includes a monitor 110, computer 120, a keyboard 130, a user input device 140, a network interface 150, and the like.
[0027] hi the present embodiment, user input device 140 is typically embodied as a computer mouse, a trackball, a track pad, wireless remote, and the like. User input device 140 typically allows a user to select objects, icons, text, control points and the like that appear on the monitor 110. hi some embodiments, monitor 110 and user input device 140 may be integrated, such as with a touch screen display or pen based display such as a Cintiq marketed by Wacom.
[0028] Embodiments of network interface 150 typically include an Ethernet card, a modem (telephone, satellite, cable, ISDN), (asynchronous) digital subscriber line (DSL) unit, and the like. Network interface 150 are typically coupled to a computer network as shown, hi other embodiments, network interface 150 may be physically integrated on the motherboard of computer 120, may be a software program, such as soft DSL, or the like.
[0029] Computer 120 typically includes familiar computer components such as a processor 160, and memory storage devices, such as a random access memory (RAM) 170, disk drives 180, and system bus 190 interconnecting the above components.
[0030] hi one embodiment, computer 120 is a PC compatible computer having multiple microprocessors such as Xeon™ microprocessor from Intel Corporation. Further, in the present embodiment, computer 120 typically includes a UNIX-based operating system. [0031] RAM 170 and disk drive 180 are examples of tangible media for storage of data, audio / video files, computer programs, embodiments of the present invention, including an
animation environment, geometric descriptions of values of animation variables, and the like. Other types of tangible media include floppy disks, removable hard disks, optical storage media such as CD-ROMS and bar codes, semiconductor memories such as flash memories, read-only-memories (ROMS), battery-backed volatile memories, networked storage devices, and the like.
[0032] hi the present embodiment, computer system 100 may also include software that enables communications over a network such as the HTTP, TCP/IP, RTP/RTSP protocols, and the like, hi alternative embodiments of the present invention, other communications software and transfer protocols may also be used, for example IPX, UDP or the like. [0033] Fig. 1 is representative of computer systems capable of embodying the present invention. It will be readily apparent to one of ordinary skill in the art that many other hardware and software configurations are suitable for use with the present invention. For example, the use of other microprocessors are contemplated, such as Pentium™ or Itanium™ microprocessors; Opteron™ or AthlonXP™ microprocessors from Advanced Micro Devices, Inc; PowerPC G4™, G5™ microprocessors from Motorola, Inc.; and the like. Further, other types of operating systems are contemplated, such as Windows® operating system such as WindowsXP®, WindowsNT®, or the like from Microsoft Corporation, Solaris from Sun Microsystems, LINUX, UNIX, MAC OS from Apple Computer Corporation, and the like.
[0034] Fig. 2 illustrates a block diagram of an embodiment of the present invention. Specifically, Fig. 2 illustrates an animation environment 200, an object creation environment 210, and a storage system 220.
[0035] hi the present embodiment, object creation environment 210 is an environment that allows users (e.g. modelers) to specify object articulation models, including armatures and rigs. Within this environment, users can create models (manually, procedurally, etc.) of other objects (components), and specify how the objects articulate with respect to animation variables (avars). In one specific embodiment, object creation environment 210 is a Pixar proprietary object creation environment known as "Geppetto." Li other embodiements, other types of object creation environments can be used.
[0036] hi the present embodiment, the object models that are created with object creation environment 210 may be used in animation environment 200. Typically, object models are heirarchically built, and the user (modeler) specifies how the components are interconnected via an object hierarchy 230. The heirarchical nature for building-up object models is useful
because different users (modellers) are typically assigned the tasks of creating the different models.
[0037] In the present embodiment, animation environment 200 is an environment that allows users (animators) to manipulate object articulation models, via setting of animation variables (avars). In one embodiment, animation environment 200 is a Pixar proprietary animation enviroment known as "Menv," although in other embodiments, other animation environments could also be adapted. In this embodiment, animation environment 200 allows an animator to display and manipulate the avars provided in the object models (generic rigs) and to move the objects with respect to time, i.e. animate an object. [0038] In the present embodiment, animation environment 200 supports the use of an object hierarchy, that may be different from the heirarchy used by the object modelers. In other embodiments of the present invention, animation environment 200 and object creation environment 210 may be combined into a single integrated environment.
[0039] In Fig. 2, storage system 220 may include any organized and repeatable way to access object articulation models. For example, in one embodiment, storage system 220 includes a simple flat-directory structure on local drive or network drive; in other embodiments, storage system 220 may be an asset management system or a database access system tied to a database, or the like. As illustrated, object models typically specify one or more animation variables 250. In response, via animation environment 200, the user may specify values 260 for animation variables 250 either graphically (e.g. with the user interfaces illustrated below), via keyboard, or the like.
[0040] Figs. 3 A-B illustrate a block diagram of a flow chart according to embodiments of the present invention. More specifically, Figs. 3A-B illustrate a process for displaying paths (e.g. splines) representing values of animation variables. [0041] Initially, values for animation variables such as a first avar, and second avar are provided, step 300. As an example, neutral or default values may be defined for each avar by an object modeler, or the like. In some embodiments of the present invention, the values are parameters of geometric descriptions of avars. In some examples, the geometric descriptions included a spline, curve, Bezier curve, and the like. [0042] Next, the user (e.g. animator) specifies animation variables that are to be displayed on the display, step 310. For example, an animator may wish to compare how four different animation variables change over time, and the like. Based upon the number of avars to
display, a vertical display size for each avar is determined, step 320. In some embodiments, the vertical display size is the same for each avar, and in other embodiments, the vertical display size for the avars may be different. For example, one avar may be selected to be of "interest" and thus the vertical display size would be larger than the vertical display size of other avars.
[0043] In the present embodiment, a range of animation values for each of the specified animation variables is determined, step 330. More specifically, the range of values is determined for each animation variables depending upon a minimum and maximum value for each avar. In one embodiment, the range is determined based upon the "possible" maximum and "possible" minimum values for the animation variable. In another embodiment, the range is determined based upon the "actual" maximum and "actual" minimum values for the avar. As an example, if an animation variable represents an angle of rotation from -180 to +180 degrees, the possible minimum would be -180 and the possible maximum would be +180. If the avar has actual animation values from 0 to 45 degrees, the actual minimum would be 0 and the actual maximum would be 45 degrees.
[0044] In various embodiments, the actual maximum and minimum animation values for different avars are determined with respect to the same time period, which may be fixed or not. As examples, the time period maybe a 100 seconds, a "shot", a "scene", for 30 seconds before and after the amount of time on the x-axis on the display, and the like. In embodiments where animation variables are not yet specified, or are at their default values, the minimum and maximum used in this step may be the possible maximum and possible minimum values.
[0045] In the present embodiment, a display period of time is specified, step 340. This period of time represents the amount of time the avar will be plotted against on the display. In embodiments of the present invention, the amount of time is freely user selectable, whereas in other embodiments, the amount of time is constrained. For example, the amount of time may be in increments of 1 second, 10 seconds, a shot, a scene, or the like.
[0046] Next, in response to the range of values for each avar and the vertical display size for each avar, display scaling factors for each avar are determined, step 350. Based upon the respective scaling factors, a portion of each avar is then plotted against time for the period of time specified in step 340, step 360. Illustrations of this will be given below.
IUU47J Along with the avar plot, a number of geometric controls are superimposed along with each avar, step 370. These controls may be conventional path control points that control the shape of the curve, and the like.
[0048] In the present embodiments, the user graphically manipulates the geometric controls of one or more avar on the display, step 380. As an example, the user may select a control node of an avar with a pen device and move the pen across the display. When the pen is deselected, the value of the control node is modified and updated. In response to the updated value for the path, the shape of the avar is recalculated , step 390. Next, a portion of the avar is then plotted against time for the period of time specified in step 320, again referring to the respective scaling factor for that avar, step 400.
[0049] The process above, may be repeated until the user, animator, is satisfied with the reshaping of the avars, step 410. Once satisfied, the modified avars are stored, step 420. In various embodiments, the modified avar may be stored in a number of ways. For example, if the avar is represented by a spline, the relative locations of control point is saved. In another example, if the avar is bit-mapped, each avar value with respect to time is stored. Other methods for storing the above data are contemplated in other embodiments.
[0050] Fig. 4 illustrates an embodiment of the present invention. Illustrated in Fig. 4 is a display 500 of three paths (e.g. splines) 510, 520, 530 representing values of animation variables (y dimension) with respect to time (x direction). As can be seen, the animation variable represented by spline 510 has a range from -50 to 170; the animation variable represented by spline 520 has a rage from -5 to 14; and the animation variable represented by spline 520 has a range from 0 to 1. Additionally, as can be seen, each spline 510, 520, and 530 have approximately the same vertical size on display 500 or different. Accordingly, as can be determined, the display scaling factor for each spline 510, 520, and 530 are different. [0051] Also illustrated in Fig. 4, are a number of spline control points such as 540 and 550. hi the present embodiment, these control points can be graphically manipulated by the user in order to modify the shape of the path (e.g. spline) using conventional and known techniques. With other types of definitions for paths, the paths may also be manipulated in different ways. [0052] In the example in Fig. 4, the animation values of the avars represented by splines 510, 520, and 530 vary in value for the period of time illustrated. By providing a user visual
correlation between animation variables, the user is better able to coordinate the movement of objects for animation purposes.
[0053] Many changes or modifications are readily envisioned. In the above disclosure, the term "spline" is used to cover a general class of curves including Bezier, B-Spline, Catmull- Rom spline, Hermite, Tau, Linear, Held, user defined splines, or other path descriptor.
Additionally, the paths may be represented as vector-objects, bit-mapped objects, or the like.
[0054] Additionally, in other embodiments, a global scaling factor may also be specified by the user, hi such embodiments, in addition the respective scaling factors, the displayed splines are all scaled by the global scaling factor. In still other embodiments, the respective scaling factors for the animation variables may depend upon the minimum and maximum actual animation values for an animation variable within a period of time. For example, the period of time may be the time displayed on the display, the display time plus an amount of time before and after, an entire "shot" or "scene" and the like. As an example, the scale for a particular animation variable may change from 5 units per display pixel to 10 units per display pixel depending upon the time period represented on the display.
[0055] Further embodiments can be envisioned to one of ordinary skill in the art after reading this disclosure. In other embodiments, combinations or sub-combinations of the above disclosed invention can be advantageously made. The block diagrams of the architecture and flow charts are grouped for ease of understanding. However it should be understood that combinations of blocks, additions of new blocks, re-arrangement of blocks, and the like are contemplated in alternative embodiments of the present invention.
[0056] The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.