1 / 64

CSCE 552 Spring 2010

CSCE 552 Spring 2010. Animation. By Jijun Tang. Announcements. Homework #3 due Mar 19 th Group based A model to be used in your own game Second demo Very Early April A demo is needed. Animation Overview. Fundamental Concepts Animation Storage Playing Animations Blending Animations

mendel
Download Presentation

CSCE 552 Spring 2010

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSCE 552 Spring 2010 Animation By Jijun Tang

  2. Announcements • Homework #3 due Mar 19th • Group based • A model to be used in your own game • Second demo • Very Early April • A demo is needed

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

  4. 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

  5. Example

  6. 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

  7. 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

  8. Linear Interpolation

  9. The Bézier Curve • (1-t)3F1+3t(1-t)2T1+3t2(1-t)T2+t3F2 T2 t=1.0 T1 F2 t=0.25 F1 t=0.0

  10. 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

  11. Blending Animations • The Lerp • Quaternion Blending Methods • Multi-way Blending • Bone Masks • The Masked Lerp • Hierarchical Blending

  12. 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.

  13. Quaternion Blending • Normalizing lerp (nlerp) • 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)

  14. Spherical lerp (slerp) • Usual textbook method • Follows shortest path • Constant velocity • Multi-way-lerp is not obvious • Moderate cost

  15. Log-quaternion lerp (exp map) • Rather obscure method • Does not follow shortest path • Constant velocity • Multi-way-lerp is easy to do • Expensive

  16. 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

  17. Multi-way Blending • Can use nested lerps • 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

  18. 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

  19. 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

  20. 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

  21. Triangles • Fundamental primitive of pipelines • Everything else constructed from them • (except lines and point sprites) • Three points define a plane • Triangle plane is mapped with data • Textures • Colors • “Rasterized” to find pixels to draw

  22. Mesh

  23. Vertices • A vertex is a point in space • Plus other attribute data • Colors • Surface normal • Texture coordinates • Whatever data shader programs need • Triangles use three vertices • Vertices shared between adjacent triangles

  24. Textures • Array of texels • Same as pixel, but for a texture • Nominally R,G,B,A but can mean anything • 1D, 2D, 3D and “cube map” arrays • 2D is by far the most common • Basically just a 2D image bitmap • Often square and power-of-2 in size • Cube map - six 2D arrays makes hollow cube • Approximates a hollow sphere of texels • For environmental

  25. Cube Map

  26. Texture Example

  27. High-Level Organization • Gameplay and Rendering • Render Objects • Render Instances • Meshes • Skeletons • Volume Partitioning

  28. Gameplay and Rendering • Rendering speed varies according to scene • Some scenes more complex than others • Typically 15-60 frames per second • Gameplay is constant speed • Camera view should not change game • In multiplayer, each person has a different view, but there is only one shared game • 1 update per second (RTS) to thousands (FPS) • Keep the two as separate as possible!

  29. Render Objects • Description of renderable object type • Mesh data (triangles, vertices) • Material data (shaders, textures, etc) • Skeleton (+rig) for animation • Shared by multiple instances

  30. Render Instances • A single entity in a world • References a render object • Decides what the object looks like • Position and orientation • Lighting state • Animation state

  31. Meshes • Triangles • Vertices • Single material • “Atomic unit of rendering” • Not quite atomic, depending on hardware • Single object may have multiple meshes • Each with different shaders, textures, etc • Level-Of-Distance (LOD)

  32. LOD • Objects have different mesh for different distance from the player • The mesh should be simpler if object is faraway • Many games have LOD, for example, Microsoft Train Simulator

  33. Volume Partitioning • Cannot draw entire world every frame • Lots of objects – far too slow • Need to decide quickly what is visible • Partition world into areas • Decide which areas are visible • Draw things in each visible area • Many ways of partitioning the world

  34. Volume Partitioning - Portals • Nodes joined by portals • Usually a polygon, but can be any shape • See if any portal of node is visible • If so, draw geometry in node • See if portals to other nodes are visible • Check only against visible portal shape • Common to use screen bounding boxes • Recurse to other nodes

  35. Volume Partitioning – Portals Node View frustum Portal Visible Test first two portals Invisible Not tested ? ? Eye

  36. Volume Partitioning – Portals Node Portal Visible Both visible Invisible Not tested Eye

  37. Volume Partitioning – Portals Node Portal Visible Mark node visible, test all portals going from node Invisible Not tested ? ? Eye

  38. Volume Partitioning – Portals Node Portal Visible One portal visible, one invisible Invisible Not tested Eye

  39. Volume Partitioning – Portals Node Portal ? Visible Mark node as visible, other node not visited at all. Check all portals in visible node Invisible ? ? Not tested Eye

  40. Volume Partitioning – Portals Node Portal Visible One visible, two invisible Invisible Not tested Eye

  41. Volume Partitioning – Portals Node Portal ? Visible Mark node as visible, check new node’s portals Invisible Not tested Eye

  42. Volume Partitioning – Portals Node Portal Visible One portal invisible. No more visible nodes or portals to check. Render scene. Invisible Not tested Eye

  43. Real Example

  44. Volume Partitioning – Portals • Portals are simple and fast • Low memory footprint • Automatic generation is difficult, and generally need to be placed by hand • Hard to find which node a point is in, and must constantly track movement of objects through portals • Best at indoor scenes, outside generates too many portals to be efficient

  45. Volume Partitioning – BSP • Binary space partition tree • Tree of nodes • Each node has plane that splits it in two child nodes, one on each side of plane • Some leaves marked as “solid” • Others filled with renderable geometry

  46. BSP

  47. Volume Partitioning – BSP • Finding which node a point is in is fast • Start at top node • Test which side of the plane the point is on • Move to that child node • Stop when leaf node hit • Visibility determination is similar to portals • Portals implied from BSP planes • Automated BSP generation is common • Generates far more nodes than portals • Higher memory requirements

  48. Volume Partitioning: Quadtree • Quadtree (2D) and octree (3D) • Quadtrees described here • Extension to 3D octree is obvious • Each node is square • Usually power-of-two in size • Has four child nodes or leaves • Each is a quarter of size of parent

  49. Quadtree

  50. Octree

More Related