[0001] This application is a divisional application of U.S. patent application Ser. No. 10/216,402, filed Aug. 9, 2002, now pending, which is hereby incorporated by reference.
[0002] In three-dimensional modeling and animation, characters typically have a skeletal structure in which elements may be rotated or rolled. Such characters may include humanoid, animal or imaginary characters. These skeletal structures include, but are not limited to, spines, necks and other appendages that rotate, such as arms, legs or tails. In these structures, it is often desirable to have the rotation or roll distributed or divided over the elements to realistically simulate motion and poses. As a result, roll division presents a fundamental problem in three dimensional character setup and animation for almost all characters.
[0003] These skeletal structures typically are approximated using a set of objects that are manipulated using inverse or forward kinematics. Such a structure typically is created using a representation of a skeleton that includes a hierarchy of objects. In such a hierarchy of objects, a manipulation applied to an element is applied to other elements that are below it in the hierarchy. For example, an animation on a spine typically involves manipulating individual vertebra, and any rotation of one vertebra automatically is applied to other vertebrae that are connected to it.
[0004] For example, referring to
[0005] If the animator decided to move the bottom vertebra
[0006] A parallel problem, called pinching, may occur when an appendage, such as an arm, is rotated. An example of pinching is shown in
[0007] These problems are solved by subdividing rotation using quaternion interpolation. Subdividing rotation between two poses in three dimensions may be accomplished in three parts. First, data defining the two poses is obtained from the animation or modeling interface. Second, a path associated with the two poses is determined. Third, using quaternion interpolation, the roll between the two poses is interpolated at intermediate positions along the path. The amount of roll at each of these intermediate positions then may be applied to three dimensional structures used for character rigging.
[0008] In one embodiment, a skeletal structure of a three-dimensional character that includes interconnected elements that rotate is defined by two control objects and one or more interconnected elements between them. The control objects may represent, for example, a structure in the lower body such as the hips and a structure in the upper body such as the chest. The interconnected elements between them may represent, for example, vertebrae of the spine. Each control object has a pose that is defined by a position and orientation in three-dimensional space. The orientation is defined by a direction and a roll around that direction. A path is defined between the poses of the two control objects. One or more additional control parameters may define the form, nature or algorithm of the path. The interconnected elements, e.g., vertebrae, are positioned along the path. The direction of each element is determined by the tangent to the path at the position of the element along the path. The roll of each element is determined using quaternion interpolation between the rotation of the first control object and the rotation of the second control object.
[0009] In another embodiment, to avoid the pinching problem, as in
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020] Referring to
[0021] The path
[0022] Referring now to
[0023]
[0024] The interpolation used to determine the rotation of each element may be a form of quaternion interpolation. Conventional quaternion interpolation is described, for example, in “Quaternions, Interpolation and Animation,” by Erik Dam, Martin Koch and Martin Lillholm, Technical Report DIKU-TR-98/5, from University of Copenhagen, Department of Computer Science. Linear interpolation between quaternions, spherical linear interpolation (slerp) between quaternions, spherical spline interpolation between quaternions, and variations on these techniques may be used. Useful variations include those that minimize the tangential curvature using gradient descent.
[0025] In one example, using conventional spherical linear interpolation of quaternions, two paths from one orientation to another are determined along the surface of a hypersphere, and the shortest path is selected. Thus the maximum amount of rotation that can be computed is limited to 180 degrees in any direction on the surface of the hypersphere. That means, for example, that an amount of rotation that might be considered to be 220 degrees would be discarded in favor of the 140 degree path in the opposite direction. This limitation is enforced in a conventional implementation of spherical linear interpolation by computing the cross product between two quaternions. This cross product is used in the remainder of the interpolation calculations. If the cross product is negative, it is first inverted before it is used in the remainder of the interpolation calculations. A scaling value that is generated from the interpolation calculations also is inverted. Linear interpolation may be used if the quaternions are close together, for example, if their cross product is determined to be close to 1.0.
[0026] A number of strategies can be employed to increase range of rotation that can be achieved. For example, the shortest path decision can be eliminated from a conventional implementation of spherical linear interpolation. This decision is eliminated by removing the test for whether the computed cross product is negative, and by removing the related inversion operations. As a result, a range of 360 degrees in either direction can be achieved.
[0027] For either modeling or animation, the poses of the first and second control objects can be modified as shown in
[0028] Counter-animation is reduced by using these techniques because the poses of the interconnected elements, e.g., the vertebrae, are driven by the poses of the control objects, e.g, the hip and chest. For example, as shown in
[0029] Because this example system can be dynamically proportioned to different sizes, it therefore becomes feasible to create standard skeletal structures for different types of characters. These dynamic skeletal structures may be used to transfer animation and attributes between different skeletal structures and as templates in a modeling system.
[0030] One problem that may arise, particularly during keyframed animation, is that the poses of the first and second control objects might cause the chain of elements to be stretched or compressed. Many strategies may be employed to solve this problem. For example, the path could be defined as a fixed length from one of the control objects where the other control object is free. Alternatively, the range of one of the control objects may be limited to the length of the path away from the other control object. Alternatively, the path length may be controlled using various interfaces and/or algorithms.
[0031] The foregoing examples illustrate a spine. The forearm, upper arm, thigh, and other appendages of characters, have similar problems of dividing roll. In these examples, the divided roll is applied to other structures describing the mass of the character, such as an envelope, muscles, skin or other objects. Quaternion interpolation can be used to subdivide the rotation along such appendages in a manner parallel to the example of the spine provide above.
[0032] Referring to
[0033] Similarly, an example of roll of a bicep of an arm is illustrated in
[0034] It will now be described in more detail how quaternion interpolation may be used to subdivide rotation associated with such appendages, or other similar structures, will now be described in more detail.
[0035]
[0036] Referring now to
[0037] Referring now to
[0038] It is also advantageous using these techniques to combine multiple spine systems or arms systems together to allow animation and modeling of long appendages with multiple controllers. Such a combination of systems could be used, for example, to model and animate a snake like character or a character with a long neck or tail.
[0039] Having now described an example embodiment, it should be apparent to those skilled in the art that the foregoing is merely illustrative and not limiting, having been presented by way of example only. Numerous modifications and other embodiments are within the scope of one of ordinary skill in the art and are contemplated as falling within the scope of the invention.