740 likes | 963 Views
CSCE 552 Spring 2010. Animation. By Jijun Tang. 2D Example of Transforming. θ. Homogeneous coordinates. Four-dimensional space Combines 3 3 matrix and translation into one 4 4 matrix. What is Physics Simulation?. The Cycle of Motion: Force, F ( t ) , causes acceleration
E N D
CSCE 552 Spring 2010 Animation By Jijun Tang
Homogeneous coordinates • Four-dimensional space • Combines 3 3 matrix and translation into one 4 4 matrix
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
Concrete Example: Target Practice Projectile Launch Position, pinit Target
Errors Exact Euler
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
Bisect Testing: Iteration V Time right before the collision
Overlap Testing: Limitations Fails with objects that move too fast • Thin glass vs. bulltes • Unlikely to catch time slice during overlap
Intersection Testing:Swept Geometry • Extrude geometry in direction of movement • Swept sphere turns into a “capsule” shape
Simplified Geometry Approximate complex objects with simpler geometry, like this ellipsoid or bounding boxes
Reduce Number of Detections O(n) Time Complexity can be achieved. One solution is to partition space
Animation Overview • Fundamental Concepts • Animation Storage • Playing Animations • Blending Animations • Motion Extraction • Mesh Deformation • Inverse Kinematics • Attachments & Collision Detection • Conclusions
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.
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
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
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.
Fundamental Problems • Volume of data, processor limitations • Mathematical complexity, especially for rotations. • Translation of motion
Fundamental Concepts • Skeletal Hierarchy • The Transform • Euler Angles • The 3x3 Matrix • Quaternions • Animation vs Deformation • Models and Instances • Animation Controls
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”
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
Three rotations about three axes Intuitive meaning of values Euler Angles
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
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
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
Problems • Euler Angles Are Evil • 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
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
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
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
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!
Quaternions (Scalar/Vector) • Sometimes, they are written as the combination of a scalar value s and a vector value v where
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
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
Quaternion to Matrix • To convert a quaternion to a rotation matrix:
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
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
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
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
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
Animation Storage • The Problem • Decomposition • Keyframes and Linear Interpolation • Higher-Order Interpolation • The Bezier Curve • Non-Uniform Curves • Looping
Storage – The Problem • 4x3 matrices, 60 per second is huge • 200 bone character = 0.5Mb/sec • Consoles have around 256-512Mb • Animation system gets maybe 25% • PC has more memory, but also higher quality requirements
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