US20070139420A1 - Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions - Google Patents

Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions Download PDF

Info

Publication number
US20070139420A1
US20070139420A1 US11/705,214 US70521407A US2007139420A1 US 20070139420 A1 US20070139420 A1 US 20070139420A1 US 70521407 A US70521407 A US 70521407A US 2007139420 A1 US2007139420 A1 US 2007139420A1
Authority
US
United States
Prior art keywords
rotation
path
roll
pose
poses
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/705,214
Inventor
Michael Isner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US11/705,214 priority Critical patent/US20070139420A1/en
Publication of US20070139420A1 publication Critical patent/US20070139420A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S345/00Computer graphics processing and selective visual display systems
    • Y10S345/949Animation processing method
    • Y10S345/953Geometric processing
    • Y10S345/954Quaternions

Definitions

  • 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.
  • skeletal structures typically are approximated using a set of objects that are manipulated using inverse or forward kinematics.
  • a structure typically is created using a representation of a skeleton that includes a hierarchy of objects.
  • a manipulation applied to an element is applied to other elements that are below it in the hierarchy.
  • 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.
  • FIGS. 1A-1C a skeleton with a spine 100 defined by a hierarchy of vertebra 102 is shown.
  • FIG. 1A shows a character with a straight spine.
  • the hierarchy of vertebra 102 is defined upwards, meaning a change in one vertebra causes a change in the vertebra above it. If ten degrees of rotation is added to the bottom vertebra 104 , as shown in FIG. 1B , then all the vertebra above it then have the same rotation and are at a ten degree angle. If another ten degrees of rotation is added to the fourth vertebra 106 , as shown in FIG. 1C , then all the vertebra above the fourth vertebra have this additional ten degrees of rotation and are now at a twenty degree angle.
  • the animator would have to counter-animate the end of the spine 108 . That is, the animator would first place the bottom vertebra 104 at a desired position, and then would reposition the other spine elements above until the end of the spine 108 was in the same position as in FIG. 1C .
  • This process of counter-animation wastes a significant amount of time while animating or posing a character, especially when fine adjustments are repeatedly made to the lower body, which then entails similar fine counter-animation to the upper body.
  • FIGS. 2A-2E An example of pinching is shown in FIGS. 2A-2E , which illustrates rotation of a cube. As the corner 202 and face 200 are rotated from the orientation in FIGS. 2A to the orientation shown in FIG. 2E , the face 204 , for example, is pinched inwards. This same kind of pinching occurs in three-dimensionally animated characters that have rotating parts, such as arms and legs, which often requires corrective steps to be taken to modify the form or shape of the rotating part.
  • 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.
  • 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.
  • quaternion interpolation is used to subdivide rotation on an envelope, muscle or skin or other structure being driven by a controlling structure.
  • This embodiment is particularly useful for modeling and animating structures such as arms, legs, tails, and other appendages that may rotate.
  • FIGS. 1A-1C illustrate a hierarchy of objects in a character.
  • FIGS. 2A-2E illustrate a problem of shearing in a rotated object.
  • FIG. 3 is a descriptive illustration of a spine or other similar skeletal structure.
  • FIGS. 4A-4B graphically illustrate an example of how position, direction and rotation of elements may be determined.
  • FIG. 5 is a data flow diagram illustrating an example of how position, direction and rotation of elements may be determined.
  • FIG. 6 is a descriptive illustration of several poses of a spine that may be produced in modeling or in an animation.
  • FIG. 7 graphically illustrates how counteranimation may be reduced.
  • FIGS. 8A-8C graphically illustrate forearm roll.
  • FIGS. 9A-9B graphically illustrate bicep roll.
  • FIG. 10 is a flowchart describing how rotation may be distributed over set of interconnected elements using quaternion interpolation.
  • a spine or other similar skeletal structure of a character may be defined using a combination of one or more elements 300 along a path 302 between a first control object 304 and a second control object 306 .
  • Each control object has a position ( 308 , 310 ) and an orientation in three-dimensional space. The orientation is described as a direction ( 312 , 314 ) and a roll ( 316 , 318 ) around that direction.
  • each element 300 has a position and an orientation.
  • the first control object may correspond to a structure in the lower body, such as the hip.
  • the second control object may correspond to a structure in the upper body, such as a chest or ribcage.
  • the path 302 is derived from two vectors corresponding to the orientations of the control objects. These two vectors may be used to define a curve, for example, a Bezier curve or a NURBS curve, in three-dimensional space. Control points representing these two vectors, and optionally additional control points of the curve, may be displayed through a user interface and may be manipulated or animated or controlled through an algorithm to modify the shape of the curve.
  • the position of each element on the path is determined by defining the path and dividing the path into a number of segments 400 corresponding to the number of elements.
  • the direction each element is defined by the tangent 402 to the path at the position of the element along the path.
  • the roll 404 of each element is determined using quaternion interpolation between the orientations of the control objects. The result of quaternion interpolation is mapped to a vector in three-dimensional space. The roll of the element is set to be aligned with this vector. The result of applying this operation on each element is incremented roll division along the path between the control objects.
  • FIG. 5 is a data flow diagram describing how the pose of each element 300 ( FIG. 3 ) may be determined.
  • the pose 500 of the first control object and the pose 502 of the second control object are used by a path generator 504 to generate a defined path 506 .
  • the path generator 504 may use the poses 500 and 502 to derive two vectors to specify a curve, for example a Bezier curve or NURBS curve, in three-dimensions.
  • An element positioning module 508 uses the defined path and specifications 510 of the elements to determine the position and direction 512 of each element.
  • the position of each element may be determined, for example, by uniformly dividing the path by the number of elements or by using a fixed distance between elements along the path or by some other method, as noted in connection with FIG.
  • the direction for each element is determined by the tangent to the path at the position determined for the element along the path, as noted in connection with FIG. 4B .
  • the defined path 506 and the poses 500 and 502 of the control objects are used by quaternion interpolator 514 to determine a value from which the rotation 516 of each element is determined, as described above in connection with FIG. 4C .
  • the position and direction 512 and the rotation 516 of each element define the pose of each element between the first and second control objects.
  • 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.
  • 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.
  • the poses of the first and second control objects can be modified as shown in FIG. 6 .
  • each different pose 606 - 624 of the first and second control objects 600 and 602 results in different poses of the elements 604 between them.
  • a modeling tool may automatically generate the poses of the interconnected elements during setup of the character based on the positions of the control objects, or an animation tool may automatically generate the poses of the interconnected elements during an animation according to the poses of the control objects.
  • the poses of the control objects can be animated using key frames, rigging techniques, an algorithm and other techniques.
  • the different images in FIG. 6 may represent different poses displayed by a modeler or different orientations of the structure over time in an animation.
  • 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.
  • the lower body structure 700 can be rotated (in comparison to FIG. 1C ), without causing any movement to the upper body structure 702 .
  • the vertebrae 704 between the lower body structure 700 and the upper body structure 702 are automatically reassigned an appropriate roll using the techniques described above.
  • 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.
  • 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.
  • the path could be defined as a fixed length from one of the control objects where the other control object is free.
  • the range of one of the control objects may be limited to the length of the path away from the other control object.
  • the path length may be controlled using various interfaces and/or algorithms.
  • the foregoing examples illustrate a spine.
  • the forearm, upper arm, thigh, and other appendages of characters have similar problems of dividing roll.
  • 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.
  • FIGS. 8A-8C an example based on roll of a forearm will now be described.
  • an arm 800 having a bicep bone 802 , a forearm bone 804 and a hand bone 806 is shown.
  • the rotation of the hand is controlled by a hand controller roll input 808 .
  • the shapes 803 , 805 and 807 are merely icons, typically called chains in computer graphics, and do not represent the shape of the bones in three-dimensional space.
  • Each bone is typically modeled as a straight line (or cylinder) having a position and direction and an associated rotation.
  • FIG. 8A shows a forearm with no rotation.
  • FIG. 8A shows a forearm with no rotation.
  • a forearm controller is manipulated to rotate the forearm bone 804 as shown at 810 , which in turn rotates the hand bone 806 .
  • This roll affects the forearm by affecting any structures, such as an envelope, skin or muscle, associated with the forearm bone 804 .
  • any skin should twist from one end of the forearm 812 to the other end of the forearm 814 .
  • the rotation along the forearm bone from the bicep bone to the hand bone is subdivided using quaternion interpolation as indicated by the arrows 816 and 818 .
  • Further movement of the hand bone 806 as shown at 820 in FIG. 8C , causes a further rotation to be associated with the forearm, as indicated by the arrows at 822 and 824 .
  • FIGS. 9A-9B an example of roll of a bicep of an arm is illustrated in FIGS. 9A-9B .
  • an arm 900 having a bicep bone 902 , a forearm bone 904 and hand bone 906 is shown.
  • the position and orientation of the bicep bone 902 affects the orientation of the forearm bone 904 and everything below it.
  • FIG. 9A illustrates the bicep bone without any rotation.
  • FIG. 9B the bicep bone 902 has been rotated 908 to a new position.
  • the rotation of the bicep affects any structures, such as an envelope, skin or muscle, associated with the bicep.
  • any skin should twist from one end 910 of the bicep to the other end 912 .
  • the rotation along the bicep bone from the shoulder (not shown) to the forearm bone is subdivided using quaternion interpolation as indicated by the arrows 914 and 916 .
  • FIGS. 10 and 11 are flow charts describing examples of how rotation may be subdivided along an object that is defined in a hierarchy of objects.
  • the process of FIG. 10 would be used to subdivide rotation along an object such as a bicep, thigh or other similar skeletal structure. For example, this process could be used for the first bone of an appendage.
  • the process of FIG. 11 would be used to subdivide rotation along an object such as a forearm or lower leg or other similar structure. For example , this process could be used for the second bone of an appendage.
  • two poses in three dimensions are identified. The first pose is associated with one end of the object and the second pose is associated with the other end of the object. Using quaternion interpolation between the first pose and the second pose, an amount of roll is determined at intermediate positions along the object. The amount of roll determined for each intermediate position along the object then may be applied to structures driven by the object.
  • a first rotation value is the current rotation of the object, as indicated at 1000 .
  • a second rotation value, an “unspun” rotation value, for the object is determined in 1002 .
  • the unspun rotation is the minimum rotation that the object could have if it were rotated towards its current direction from the pose of its parent object.
  • Quaternion interpolation, as described above, is then used in 1004 to interpolate, for intermediate positions along the object, between the unspun rotation value and the actual rotation of the object to determine the subdivide roll.
  • the subdivided roll then may be applied 1006 to the structures, such as an envelope, skin, muscle or other structure, associated with the object.
  • an unspun rotation value for the object is determined in 1100 , in the same manner as described above.
  • a second rotation value called a “straightened” rotation value, is then computed in 1102 .
  • the straightened rotation value is the rotation that the next control object in the appendage would have if this next object were rotated to match the direction of the current object, but maintaining its roll.
  • Quaternion interpolation is then used in 1104 to interpolate, for intermediate positions along the object, between the unspun rotation value and the straightened rotation value to determine the subdivided roll.
  • the subdivided roll then may be applied 1106 to structures, such as an envelope, skin, muscle or other structure, associated with the object.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

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.

Description

    CROSS REFERENCE TO RELATED APPLICATION
  • This patent application claims the benefit, under 35 U.S.C. §120, of, and is a continuation of, U.S. Ser. No. 10/216,402, filed on Aug. 9, 2002, pending, which is incorporated herein by reference.
  • BACKGROUND
  • 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.
  • 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.
  • For example, referring to FIGS. 1A-1C, a skeleton with a spine 100 defined by a hierarchy of vertebra 102 is shown. In particular, FIG. 1A shows a character with a straight spine. In this example, the hierarchy of vertebra 102 is defined upwards, meaning a change in one vertebra causes a change in the vertebra above it. If ten degrees of rotation is added to the bottom vertebra 104, as shown in FIG. 1B, then all the vertebra above it then have the same rotation and are at a ten degree angle. If another ten degrees of rotation is added to the fourth vertebra 106, as shown in FIG. 1C, then all the vertebra above the fourth vertebra have this additional ten degrees of rotation and are now at a twenty degree angle.
  • If the animator decided to move the bottom vertebra 104 to a certain orientation and leave the end of the spine 108 where it is in FIG. 1C, then the animator would have to counter-animate the end of the spine 108. That is, the animator would first place the bottom vertebra 104 at a desired position, and then would reposition the other spine elements above until the end of the spine 108 was in the same position as in FIG. 1C. This process of counter-animation wastes a significant amount of time while animating or posing a character, especially when fine adjustments are repeatedly made to the lower body, which then entails similar fine counter-animation to the upper body.
  • A parallel problem, called pinching, may occur when an appendage, such as an arm, is rotated. An example of pinching is shown in FIGS. 2A-2E, which illustrates rotation of a cube. As the corner 202 and face 200 are rotated from the orientation in FIGS. 2A to the orientation shown in FIG. 2E, the face 204, for example, is pinched inwards. This same kind of pinching occurs in three-dimensionally animated characters that have rotating parts, such as arms and legs, which often requires corrective steps to be taken to modify the form or shape of the rotating part.
  • SUMMARY
  • 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.
  • 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.
  • In another embodiment, to avoid the pinching problem, as in FIGS. 2A-2E, quaternion interpolation is used to subdivide rotation on an envelope, muscle or skin or other structure being driven by a controlling structure. This embodiment is particularly useful for modeling and animating structures such as arms, legs, tails, and other appendages that may rotate.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIGS. 1A-1C illustrate a hierarchy of objects in a character.
  • FIGS. 2A-2E illustrate a problem of shearing in a rotated object.
  • FIG. 3 is a descriptive illustration of a spine or other similar skeletal structure.
  • FIGS. 4A-4B graphically illustrate an example of how position, direction and rotation of elements may be determined.
  • FIG. 5 is a data flow diagram illustrating an example of how position, direction and rotation of elements may be determined.
  • FIG. 6 is a descriptive illustration of several poses of a spine that may be produced in modeling or in an animation.
  • FIG. 7 graphically illustrates how counteranimation may be reduced.
  • FIGS. 8A-8C graphically illustrate forearm roll.
  • FIGS. 9A-9B graphically illustrate bicep roll.
  • FIG. 10 is a flowchart describing how rotation may be distributed over set of interconnected elements using quaternion interpolation.
  • DETAILED DESCRIPTION
  • Referring to FIG. 3, a spine or other similar skeletal structure of a character may be defined using a combination of one or more elements 300 along a path 302 between a first control object 304 and a second control object 306. Each control object has a position (308, 310) and an orientation in three-dimensional space. The orientation is described as a direction (312, 314) and a roll (316, 318) around that direction. Similarly, each element 300 has a position and an orientation. For a spine, the first control object may correspond to a structure in the lower body, such as the hip. The second control object may correspond to a structure in the upper body, such as a chest or ribcage.
  • The path 302 is derived from two vectors corresponding to the orientations of the control objects. These two vectors may be used to define a curve, for example, a Bezier curve or a NURBS curve, in three-dimensional space. Control points representing these two vectors, and optionally additional control points of the curve, may be displayed through a user interface and may be manipulated or animated or controlled through an algorithm to modify the shape of the curve.
  • Referring now to FIGS. 4A-4C, how the position and orientation of each element is determined will now be explained. The position of each element on the path, shown in FIG. 4A is determined by defining the path and dividing the path into a number of segments 400 corresponding to the number of elements. The direction each element, shown in FIG. 4B, is defined by the tangent 402 to the path at the position of the element along the path. The roll 404 of each element, shown in FIG. 4C, is determined using quaternion interpolation between the orientations of the control objects. The result of quaternion interpolation is mapped to a vector in three-dimensional space. The roll of the element is set to be aligned with this vector. The result of applying this operation on each element is incremented roll division along the path between the control objects.
  • FIG. 5 is a data flow diagram describing how the pose of each element 300 (FIG. 3) may be determined. The pose 500 of the first control object and the pose 502 of the second control object are used by a path generator 504 to generate a defined path 506. For example, the path generator 504 may use the poses 500 and 502 to derive two vectors to specify a curve, for example a Bezier curve or NURBS curve, in three-dimensions. An element positioning module 508 uses the defined path and specifications 510 of the elements to determine the position and direction 512 of each element. The position of each element may be determined, for example, by uniformly dividing the path by the number of elements or by using a fixed distance between elements along the path or by some other method, as noted in connection with FIG. 4A. The direction for each element is determined by the tangent to the path at the position determined for the element along the path, as noted in connection with FIG. 4B. The defined path 506 and the poses 500 and 502 of the control objects are used by quaternion interpolator 514 to determine a value from which the rotation 516 of each element is determined, as described above in connection with FIG. 4C. The position and direction 512 and the rotation 516 of each element define the pose of each element between the first and second control objects.
  • 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.
  • 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.
  • 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.
  • For either modeling or animation, the poses of the first and second control objects can be modified as shown in FIG. 6. In FIG. 6, each different pose 606-624 of the first and second control objects 600 and 602 results in different poses of the elements 604 between them. Using the techniques described above, a modeling tool may automatically generate the poses of the interconnected elements during setup of the character based on the positions of the control objects, or an animation tool may automatically generate the poses of the interconnected elements during an animation according to the poses of the control objects. The poses of the control objects can be animated using key frames, rigging techniques, an algorithm and other techniques. The different images in FIG. 6 may represent different poses displayed by a modeler or different orientations of the structure over time in an animation.
  • 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 FIG. 7, the lower body structure 700 can be rotated (in comparison to FIG. 1C), without causing any movement to the upper body structure 702. The vertebrae 704 between the lower body structure 700 and the upper body structure 702 are automatically reassigned an appropriate roll using the techniques described above.
  • 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.
  • 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.
  • 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.
  • Referring to FIGS. 8A-8C, an example based on roll of a forearm will now be described. In particular, an arm 800 having a bicep bone 802, a forearm bone 804 and a hand bone 806 is shown. The rotation of the hand is controlled by a hand controller roll input 808. The shapes 803, 805 and 807, for example, are merely icons, typically called chains in computer graphics, and do not represent the shape of the bones in three-dimensional space. Each bone is typically modeled as a straight line (or cylinder) having a position and direction and an associated rotation. FIG. 8A shows a forearm with no rotation. In FIG. 8B, a forearm controller is manipulated to rotate the forearm bone 804 as shown at 810, which in turn rotates the hand bone 806. This roll affects the forearm by affecting any structures, such as an envelope, skin or muscle, associated with the forearm bone 804. For example, any skin should twist from one end of the forearm 812 to the other end of the forearm 814. The rotation along the forearm bone from the bicep bone to the hand bone is subdivided using quaternion interpolation as indicated by the arrows 816 and 818. Further movement of the hand bone 806, as shown at 820 in FIG. 8C, causes a further rotation to be associated with the forearm, as indicated by the arrows at 822 and 824.
  • Similarly, an example of roll of a bicep of an arm is illustrated in FIGS. 9A-9B. In particular, an arm 900 having a bicep bone 902, a forearm bone 904 and hand bone 906 is shown. The position and orientation of the bicep bone 902 affects the orientation of the forearm bone 904 and everything below it. FIG. 9A illustrates the bicep bone without any rotation. In FIG. 9B, the bicep bone 902 has been rotated 908 to a new position. The rotation of the bicep affects any structures, such as an envelope, skin or muscle, associated with the bicep. For example, any skin should twist from one end 910 of the bicep to the other end 912. The rotation along the bicep bone from the shoulder (not shown) to the forearm bone is subdivided using quaternion interpolation as indicated by the arrows 914 and 916.
  • 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.
  • FIGS. 10 and 11 are flow charts describing examples of how rotation may be subdivided along an object that is defined in a hierarchy of objects. The process of FIG. 10 would be used to subdivide rotation along an object such as a bicep, thigh or other similar skeletal structure. For example, this process could be used for the first bone of an appendage. The process of FIG. 11 would be used to subdivide rotation along an object such as a forearm or lower leg or other similar structure. For example , this process could be used for the second bone of an appendage. In both of these examples, two poses in three dimensions are identified. The first pose is associated with one end of the object and the second pose is associated with the other end of the object. Using quaternion interpolation between the first pose and the second pose, an amount of roll is determined at intermediate positions along the object. The amount of roll determined for each intermediate position along the object then may be applied to structures driven by the object.
  • Referring now to FIG. 10, a first rotation value is the current rotation of the object, as indicated at 1000. A second rotation value, an “unspun” rotation value, for the object is determined in 1002. The unspun rotation is the minimum rotation that the object could have if it were rotated towards its current direction from the pose of its parent object. Quaternion interpolation, as described above, is then used in 1004 to interpolate, for intermediate positions along the object, between the unspun rotation value and the actual rotation of the object to determine the subdivide roll. The subdivided roll then may be applied 1006 to the structures, such as an envelope, skin, muscle or other structure, associated with the object.
  • Referring now to FIG. 11, an unspun rotation value for the object is determined in 1100, in the same manner as described above. A second rotation value, called a “straightened” rotation value, is then computed in 1102. The straightened rotation value is the rotation that the next control object in the appendage would have if this next object were rotated to match the direction of the current object, but maintaining its roll. Quaternion interpolation, as described above, is then used in 1104 to interpolate, for intermediate positions along the object, between the unspun rotation value and the straightened rotation value to determine the subdivided roll. The subdivided roll then may be applied 1106 to structures, such as an envelope, skin, muscle or other structure, associated with the object.
  • 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.
  • 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.

Claims (3)

1. An apparatus for subdividing rotation, comprising:
means for receiving data defining a first pose and a second pose in three dimensions;
means for determining a. path associated with the first pose and the second pose;
means for determining an amount of roll at intermediate positions along the path using quaternion interpolation between the two poses; and
means for applying the determined amount of roll at the intermediate positions along the path to three dimensional structures associated with the intermediate positions.
2. A method for subdividing rotation, comprising:
receiving data defining a first pose and a second pose in three dimensions;
determining a path associated with the first pose and the second pose;
determining an amount of roll at intermediate positions along the path using quaternion interpolation between the two poses; and
applying the determined amount of roll at the intermediate positions along the path to three dimensional structures associated with the intermediate positions.
3. A computer program product comprising:
a computer readable medium;
computer program instructions stored on the computer readable medium that, when executed by a computer, cause the computer to perform a method for subdividing rotation, comprising:
receiving data defining a first pose and a second pose in three dimensions;
determining a path associated with the first pose and the second pose;
determining an amount of roll at intermediate positions along the path using quaternion interpolation between the two poses; and
applying the determined amount of roll at the intermediate positions along the path to three dimensional structures associated with the intermediate positions.
US11/705,214 2002-08-09 2007-02-12 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions Abandoned US20070139420A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/705,214 US20070139420A1 (en) 2002-08-09 2007-02-12 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/216,402 US7176915B1 (en) 2002-08-09 2002-08-09 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions
US11/705,214 US20070139420A1 (en) 2002-08-09 2007-02-12 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/216,402 Continuation US7176915B1 (en) 2002-08-09 2002-08-09 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions

Publications (1)

Publication Number Publication Date
US20070139420A1 true US20070139420A1 (en) 2007-06-21

Family

ID=33096480

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/216,402 Expired - Lifetime US7176915B1 (en) 2002-08-09 2002-08-09 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions
US10/822,344 Expired - Fee Related US7233327B2 (en) 2002-08-09 2004-04-12 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions
US11/705,214 Abandoned US20070139420A1 (en) 2002-08-09 2007-02-12 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US10/216,402 Expired - Lifetime US7176915B1 (en) 2002-08-09 2002-08-09 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions
US10/822,344 Expired - Fee Related US7233327B2 (en) 2002-08-09 2004-04-12 Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions

Country Status (1)

Country Link
US (3) US7176915B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090315893A1 (en) * 2008-06-18 2009-12-24 Microsoft Corporation User avatar available across computing applications and devices
JP2011220825A (en) * 2010-04-09 2011-11-04 Toyota Motor Corp Attitude estimating device and method, attitude controlling device and method, and program
CN106227368A (en) * 2016-08-03 2016-12-14 北京工业大学 A kind of human synovial angle calculation method and device
CN109658484A (en) * 2018-12-21 2019-04-19 上海哔哩哔哩科技有限公司 A kind of Automatic Generation of Computer Animation method and Automatic Generation of Computer Animation system

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391420B1 (en) * 2000-09-28 2008-06-24 At&T Corp. Graphical user interface graphics-based interpolated animation performance
US7248270B1 (en) * 2004-01-22 2007-07-24 Pacific Data Images Llc Stroke-based posing of three-dimensional models
KR100682849B1 (en) * 2004-11-05 2007-02-15 한국전자통신연구원 Apparatus and its method for generating digital character
JP4660357B2 (en) * 2005-11-18 2011-03-30 任天堂株式会社 Image processing program and image processing apparatus
CN100410972C (en) * 2006-06-22 2008-08-13 上海交通大学 Method for detecting image reconstruction algorithm performance by using dynamic thoracic digital simulation model
US9892485B2 (en) * 2008-04-08 2018-02-13 Disney Enterprises, Inc. System and method for mesh distance based geometry deformation
US8114918B2 (en) * 2008-08-15 2012-02-14 The Florida State University Research Foundation, Inc. Compacted polyelectrolyte complexes and articles
US8963829B2 (en) * 2009-10-07 2015-02-24 Microsoft Corporation Methods and systems for determining and tracking extremities of a target
US7961910B2 (en) * 2009-10-07 2011-06-14 Microsoft Corporation Systems and methods for tracking a model
US8564534B2 (en) 2009-10-07 2013-10-22 Microsoft Corporation Human tracking system
US8867820B2 (en) 2009-10-07 2014-10-21 Microsoft Corporation Systems and methods for removing a background of an image
CN108665518B (en) * 2017-04-01 2021-10-22 Tcl科技集团股份有限公司 Control method and system for adjusting animation speed
CN109509241B (en) * 2018-08-16 2023-06-23 北京航空航天大学青岛研究院 Quaternary-based character animation bone redirecting method for digital
US20200097879A1 (en) * 2018-09-25 2020-03-26 Oracle International Corporation Techniques for automatic opportunity evaluation and action recommendation engine
CN110705576B (en) * 2019-09-29 2020-09-22 慧影医疗科技(北京)有限公司 Region contour determining method and device and image display equipment
JP7233399B2 (en) * 2020-06-23 2023-03-06 任天堂株式会社 GAME PROGRAM, GAME DEVICE, GAME SYSTEM, AND GAME PROCESSING METHOD

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797836A (en) * 1986-11-19 1989-01-10 The Grass Valley Group, Inc. Image orientation and animation using quaternions
US5590261A (en) * 1993-05-07 1996-12-31 Massachusetts Institute Of Technology Finite-element method for image alignment and morphing
US5854634A (en) * 1995-12-26 1998-12-29 Imax Corporation Computer-assisted animation construction system using source poses within a pose transformation space
US20020196258A1 (en) * 2001-06-21 2002-12-26 Lake Adam T. Rendering collisions of three-dimensional models
US6522331B1 (en) * 2000-02-01 2003-02-18 Stormfront Studios, Inc. Character animation using directed acyclic graphs
US6796415B2 (en) * 2000-10-20 2004-09-28 At Systems, Inc. Loose coin and rolled coin dispenser

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797836A (en) * 1986-11-19 1989-01-10 The Grass Valley Group, Inc. Image orientation and animation using quaternions
US5590261A (en) * 1993-05-07 1996-12-31 Massachusetts Institute Of Technology Finite-element method for image alignment and morphing
US5854634A (en) * 1995-12-26 1998-12-29 Imax Corporation Computer-assisted animation construction system using source poses within a pose transformation space
US6522331B1 (en) * 2000-02-01 2003-02-18 Stormfront Studios, Inc. Character animation using directed acyclic graphs
US6796415B2 (en) * 2000-10-20 2004-09-28 At Systems, Inc. Loose coin and rolled coin dispenser
US20020196258A1 (en) * 2001-06-21 2002-12-26 Lake Adam T. Rendering collisions of three-dimensional models

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090315893A1 (en) * 2008-06-18 2009-12-24 Microsoft Corporation User avatar available across computing applications and devices
JP2011220825A (en) * 2010-04-09 2011-11-04 Toyota Motor Corp Attitude estimating device and method, attitude controlling device and method, and program
CN106227368A (en) * 2016-08-03 2016-12-14 北京工业大学 A kind of human synovial angle calculation method and device
CN109658484A (en) * 2018-12-21 2019-04-19 上海哔哩哔哩科技有限公司 A kind of Automatic Generation of Computer Animation method and Automatic Generation of Computer Animation system

Also Published As

Publication number Publication date
US20040196301A1 (en) 2004-10-07
US7233327B2 (en) 2007-06-19
US7176915B1 (en) 2007-02-13

Similar Documents

Publication Publication Date Title
US20070139420A1 (en) Subdividing rotation in a character using quaternion interpolation for modeling and animation in three dimensions
Aristidou et al. Inverse kinematics: a review of existing techniques and introduction of a new fast iterative solver
Wilhelms et al. Anatomically based modeling
US7515155B2 (en) Statistical dynamic modeling method and apparatus
JP4972734B2 (en) Musculoskeletal shape skinning
US6476804B1 (en) System and method for generating computer animated graphical images of an exterior patch surface layer of material stretching over an understructure
US7307633B2 (en) Statistical dynamic collisions method and apparatus utilizing skin collision points to create a skin collision response
US7570264B2 (en) Rig baking
US7983882B1 (en) Joint wrinkle and muscle movement simulating software
US7259764B2 (en) Defrobulated angles for character joint representation
US7646383B1 (en) Methods and apparatuses to effect deformation of computer-generated three-dimensional surfaces
Yan et al. Skeleton-based shape deformation using simplex transformations
Huang et al. NURBS curve controlled modelling for facial animation
CN115311391A (en) Animation transfer method and device between skeleton models and electronic equipment
US6483506B1 (en) System and method for generating computer animated graphical images of a vascular structure attached to an anatomical structure
Schneider et al. Hybrid anatomically based modelling of animals
Yang The skinning in character animation: A survey
JPS62202270A (en) Shape data generating method for deformed object
WO2004104934A1 (en) Statistical dynamic collisions method and apparatus
Byrnes et al. Joining NURBS-based Body Sections for Human Character Animation
Kurihara Interactive surface design using recursive subdivision
CN116968075A (en) Method, apparatus and device for correcting joint distortion in a gesture drive
Bondarenko Skin deformation techniques
Bukatov et al. A Control Cross-Sections Method for Character Deformation
Haavardsholm et al. Surface deformation over flexible joints using spline blending techniques

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION