Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCE 552 Spring 2010 Animation By Jijun Tang.

Similar presentations


Presentation on theme: "CSCE 552 Spring 2010 Animation By Jijun Tang."— Presentation transcript:

1 CSCE 552 Spring 2010 Animation By Jijun Tang

2 2D Example of Transforming
θ

3 Homogeneous coordinates
Four-dimensional space Combines 3  3 matrix and translation into one 4  4 matrix

4 What is Physics Simulation?
The Cycle of Motion: Force, F(t), causes acceleration Acceleration, a(t), causes a change in velocity Velocity, V(t) causes a change in position Physics Simulation: Solving variations of the above equations over time to emulate the cycle of motion

5 Concrete Example: Target Practice
Projectile Launch Position, pinit Under constant gravitional acceleration, projectile path is a parabola Target

6 Errors Exact Euler

7 Overlap Testing Results
Useful results of detected collision Pairs of objects will have collision Time of collision to take place Collision normal vector Collision time calculated by moving object back in time until right before collision Bisection is an effective technique

8 Bisect Testing: Iteration V
Time right before the collision

9 Overlap Testing: Limitations
Fails with objects that move too fast Thin glass vs. bulltes Unlikely to catch time slice during overlap

10 Intersection Testing: Swept Geometry
Extrude geometry in direction of movement Swept sphere turns into a “capsule” shape

11 Simplified Geometry Approximate complex objects with simpler geometry, like this ellipsoid or bounding boxes

12 Minkowski Sum

13 Using Minkowski Sum

14 Reduce Number of Detections
O(n) Time Complexity can be achieved. One solution is to partition space

15 Animation Overview Fundamental Concepts Animation Storage
Playing Animations Blending Animations Motion Extraction Mesh Deformation Inverse Kinematics Attachments & Collision Detection Conclusions

16 Animation Roles Programmer – loads information created by the animator and translates it into on screen action. Animator – Sets up the artwork. Provides motion information to the artwork.

17 Different types of animation
Particle effects (fire, smoke, etc) Procedural / Physics “Hard” object animation (door, robot) “Soft” object animation (tree swaying in the wind, flag flapping the wind) Character animation

18 2D Versus 3D Animation Borrow from traditional 2D animation
Understand the limitations of what can be done for real-time games Designing 3D motions to be viewed from more than one camera angle Pace motion to match game genre

19 Animation terms frame – an image that is displayed on the screen, usually as part of a sequence. pose – an orientation of an objects or a hierarchy of objects that defines extreme or important motion. keyframe – a special frame that contains a pose. tween – the process of going “between” keyframes. secondary motion – an object motion that is the result of its connection or relationship with another object.

20 Fundamental Problems Volume of data, processor limitations
Mathematical complexity, especially for rotations. Translation of motion

21 Fundamental Concepts Skeletal Hierarchy The Transform Euler Angles
The 3x3 Matrix Quaternions Animation vs Deformation Models and Instances Animation Controls

22 Skeletal Hierarchy The Skeleton is a tree of bones
Modelling characters Often flattened to an array in practice Each bone has a transform, stored relative to its parent’s transform Top bone in tree is the “root bone” Normally the hip May have multiple trees, so multiple roots Transforms are animated over time Tree structure is often called a “rig”

23 Example

24 The Transform “Transform” is the term for combined:
Translation Rotation Scale Shear Can be represented as 4x3 or 4x4 matrix But usually store as components Non-identity scale and shear are rare

25 Examples

26 Euler Angles Three rotations about three axes
Intuitive meaning of values

27 Euler Angles This means that we can represent an orientation with 3 numbers A sequence of rotations around principle axes is called an Euler Angle Sequence Assuming we limit ourselves to 3 rotations without successive rotations about the same axis, we could use any of the following 12 sequences: XYZ XZY XYX XZX YXZ YZX YXY YZY ZXY ZYX ZXZ ZYZ

28 Using Euler Angles To use Euler angles, one must choose which of the 12 representations they want There may be some practical differences between them and the best sequence may depend on what exactly you are trying to accomplish

29 Interpolating Euler Angles
One can simply interpolate between the three values independently This will result in the interpolation following a different path depending on which of the 12 schemes you choose This may or may not be a problem, depending on your situation Note: when interpolating angles, remember to check for crossing the +180/-180 degree boundaries

30 Problems Euler Angles Are Evil Use matrix rotation
No standard choice or order of axes Singularity “poles” with infinite number of representations Interpolation of two rotations is hard Slow to turn into matrices Use matrix rotation

31 Rotation Matrix

32 3x3 Matrix Rotation Easy to use Moderately intuitive
Large memory size - 9 values Interpolation is hard Introduces scales and shears Need to re-orthonormalize matrices after

33 Quaternions Quaternions are an interesting mathematical concept with a deep relationship with the foundations of algebra and number theory Invented by W.R.Hamilton in 1843 In practice, they are most useful to use as a means of representing orientations A quaternion has 4 components

34 Quaternions on Rotation
Represents a rotation around an axis Four values <x,y,z,w> <x,y,z> is axis vector times sin(θ /2) w is cos(θ/2) Interpolation is fast

35 Illustration

36 Quaternions (Imaginary Space)
Quaternions are actually an extension to complex numbers Of the 4 components, one is a ‘real’ scalar number, and the other 3 form a vector in imaginary ijk space!

37 Quaternions (Scalar/Vector)
Sometimes, they are written as the combination of a scalar value s and a vector value v where

38 Unit Quaternions For convenience, we will use only unit length quaternions, as they will be sufficient for our purposes and make things a little easier These correspond to the set of vectors that form the ‘surface’ of a 4D hypersphere of radius 1 The ‘surface’ is actually a 3D volume in 4D space, but it can sometimes be visualized as an extension to the concept of a 2D surface on a 3D sphere

39 Quaternions as Rotations
A quaternion can represent a rotation by an angle θ around a unit axis a: If a is unit length, then q will be also

40 Quaternions as Rotations

41 Quaternion to Matrix To convert a quaternion to a rotation matrix:

42 Matrix to Quaternion Matrix to quaternion is doable
It involves a few ‘if’ statements, a square root, three divisions, and some other stuff Search online if interested

43 Animation vs. Deformation
Skeleton + bone transforms = “pose” Animation changes pose over time Knows nothing about vertices and meshes Done by “animation” system on CPU Deformation takes a pose, distorts the mesh for rendering Knows nothing about change over time Done by “rendering” system, often on GPU

44 Pose

45 Model Describes a single type of object Skeleton + rig
One per object type Referenced by instances in a scene Usually also includes rendering data Mesh, textures, materials, etc Physics collision hulls, gameplay data, etc

46 Instance A single entity in the game world References a model
Holds current states: Position & orientation Game play state – health, ammo, etc Has animations playing on it Stores a list of animation controls Need to be interpolated

47 Animation Control Links an animation and an instance
1 control = 1 anim playing on 1 instance Holds current data of animation Current time Speed Weight Masks Looping state

48 Animation Storage The Problem Decomposition
Keyframes and Linear Interpolation Higher-Order Interpolation The Bezier Curve Non-Uniform Curves Looping

49 Storage – The Problem 4x3 matrices, 60 per second is huge
200 bone character = 0.5Mb/sec Consoles have around Mb Animation system gets maybe 25% PC has more memory, but also higher quality requirements

50 Decomposition Decompose 4x3 into components
Translation (3 values) Rotation (4 values - quaternion) Scale (3 values) Skew (3 values) Most bones never scale & shear Many only have constant translation But human characters may have higher requirement Muscle move, smiling, etc. Cloth under winds Don’t store constant values every frame, use index instead

51 Keyframes Motion is usually smooth
Only store every nth frame (key frames) Interpolate between keyframes Linear Interpolate Inbetweening or “tweening” Different anims require different rates Sleeping = low, running = high Choose rate carefully

52 Key Frame Example Recall we have done something in Flash

53 Linear Interpolation

54 Higher-Order Interpolation
Tweening uses linear interpolation Natural motions are not very linear Need lots of segments to approximate well So lots of keyframes Use a smooth curve to approximate Fewer segments for good approximation Fewer control points Bézier curve is very simple curve

55 Bézier Curves (2D & 3D) Bézier curves can be thought of as a higher order extension of linear interpolation p1 p1 p2 p3 p1 p0 p0 p0 p2

56 The Bézier Curve (1-t)3F1+3t(1-t)2T1+3t2(1-t)T2+t3F2 T2 t=1.0 T1 F2

57 The Bézier Curve (2) Quick to calculate
Precise control over end tangents Smooth C0 and C1 continuity are easy to achieve C2 also possible, but not required here Requires three control points per curve (assume F2 is F1 of next segment) Far fewer segments than linear

58 C0/C1/C2 The curves meet the"speed" is the same before and after
the tangents are shared

59 Bézier Variants Store 2F2-T2 instead of T2
Equals next segment T1 for smooth curves Store F1-T1 and T2-F2 vectors instead Same trick as above – reduces data stored Called a “Hermite” curve Catmull-Rom curve Passes through all control points

60 Catmull-Rom Curve Defined by 4 points. Curve passes through middle 2 points. P = C3t3 + C2t2 + C1t + C0 C3 = -0.5 * P * P * P * P3 C2 = P * P * P * P3 C1 = -0.5 * P * P2 C0 = P1

61 Non-Uniform Curves Each segment stores a start time as well
Time + control value(s) = “knot” Segments can be different durations Knots can be placed only where needed Allows perfect discontinuities Fewer knots in smooth parts of animation Add knots to guarantee curve values: Transition points between animations

62 Looping and Continuity
Ensure C0 and C1 for smooth motion At loop points At transition points: walk cycle to run cycle C1 requires both animations are playing at the same speed: reasonable requirement for anim system

63 Playing Animations “Global time” is game-time
Animation is stored in “local time” Animation starts at local time zero Speed is the ratio between the two Make sure animation system can change speed without changing current local time Usually stored in seconds Or can be in “frames” - 12, 24, 30, 60 per second

64 Scrubbing Sample an animation at any local time
Important ability for games Footstep planting Motion prediction AI action planning Starting a synchronized animation Walk to run transitions at any time Avoid delta-compression storage methods Very hard to scrub or play at variable speed

65 Delta Compression Delta compression is a way of storing or transmitting data in the form of differences between sequential data rather than complete files. The differences are recorded in discrete files called deltas or diffs. Because changes are often small (only 2% total size on average), it can greatly reduce data redundancy. Collections of unique deltas are substantially more space-efficient than their non-encoded equivalents.

66 Animation Blending The animation blending system allows a model to play more than one animation sequence at a time, while seamlessly blending the sequences Used to create sophisticated, life-like behavior Walking and smiling Running and shooting

67 Blending Animations The Lerp Quaternion Blending Methods
Multi-way Blending Bone Masks The Masked Lerp Hierarchical Blending

68 The Lerp Foundation of all blending “Lerp”=Linear interpolation
Blends A, B together by a scalar weight lerp (A, B, i) = iA + (1-i)B i is blend weight and usually goes from 0 to 1 Translation, scale, shear lerp are obvious Componentwise lerp Rotations are trickier – normalized quaternions is usually the best method.

69 Quaternion Blending Normalizing lerp (nlerp) Many others:
Lerp each component Normalize (can often be approximated) Follows shortest path Not constant velocity Multi-way-lerp is easy to do Very simple and fast Many others: Spherical lerp (slerp) Log-quaternion lerp (exp map)

70 Which is the Best No perfect solution!
Each missing one of the features All look identical for small interpolations This is the 99% case Blending very different animations looks bad whichever method you use Multi-way lerping is important So use cheapest - nlerp

71 Multi-way Blending Can use nested lerps Weighted sum associates nicely
lerp (lerp (A, B, i), C, j) But n-1 weights - counterintuitive Order-dependent Weighted sum associates nicely (iA + jB + kC + …) / (i + j + k + … ) But no i value can result in 100% A More complex methods Less predictable and intuitive Can be expensive

72 Bone Masks Some animations only affect some bones
Wave animation only affects arm Walk affects legs strongly, arms weakly Arms swing unless waving or holding something Bone mask stores weight for each bone Multiplied by animation’s overall weight Each bone has a different effective weight Each bone must be blended separately Bone weights are usually static Overall weight changes as character changes animations

73 The Masked Lerp Two-way lerp using weights from a mask
Each bone can be lerped differently Mask value of 1 means bone is 100% A Mask value of 0 means bone is 100% B Solves weighted-sum problem (no weight can give 100% A) No simple multi-way equivalent Just a single bone mask, but two animations

74 Hierarchical Blending
Combines all styles of blending A tree or directed graph of nodes Each leaf is an animation Each node is a style of blend Blends results of child nodes Construct programmatically at load time Evaluate with identical code each frame Avoids object-specific blending code Nodes with weights of zero not evaluated


Download ppt "CSCE 552 Spring 2010 Animation By Jijun Tang."

Similar presentations


Ads by Google