Midterm Review CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2004.

Slides:



Advertisements
Similar presentations
Animation in Video Games presented by Jason Gregory
Advertisements

Homogeneous Transformations CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2005.
Blending & State Machines CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2005.
Computer Graphics Lecture 4 Geometry & Transformations.
Kinematic Modelling in Robotics
Animation Following “Advanced Animation and Rendering Techniques” (chapter 15+16) By Agata Przybyszewska.
Channels & Keyframes CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2005.
3D Graphics for Game Programming (J. Han) Chapter XI Character Animation.
Multimedia System and Networking UTD Slide- 1 University of Texas at Dallas B. Prabhakaran Blending & State Machines.
Lecture 2: linear algebra, animation basics
Cubic Curves CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2005.
Skeletons CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2005.
Orientation & Quaternions
Character Animation CSE 191A: Seminar on Video Game Programming Lecture 5: Character Animation UCSD, Spring, 2003 Instructor: Steve Rotenberg.
Advanced Skinning CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2004.
Outline for Today More math… Finish linear algebra: Matrix composition
3-D Geometry.
3D orientation.
Computer Graphics CSC 630 Lecture 2- Linear Algebra.
CSCE 689: Computer Animation Rotation Representation and Interpolation
CSCE 441: Computer Graphics Rotation Representation and Interpolation
Quaternions CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2004.
CSCE 641: Computer Graphics Rotation Representation and Interpolation Jinxiang Chai.
Advanced Skin CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2005.
Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.
Computer Graphics (Fall 2005) COMS 4160, Lecture 2: Review of Basic Math
Linear Algebra Review CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2005.
CSE 473 Dr. Charles B. Owen Fundamentals of 3D Game Development1 Skeletons and Skinning Bones and Skeletons Mesh Skinning.
3D Graphics Goal: To produce 2D images of a mathematically described 3D environment Issues: –Describing the environment: Modeling (mostly later) –Computing.
Computer Animation Rick Parent Computer Animation Algorithms and Techniques Technical Background.
An Introduction to Robot Kinematics
CS 450: COMPUTER GRAPHICS 3D TRANSFORMATIONS SPRING 2015 DR. MICHAEL J. REALE.
ME/ECE Professor N. J. Ferrier Forward Kinematics Professor Nicola Ferrier ME Room 2246,
Foundations of Computer Graphics (Fall 2012) CS 184, Lecture 2: Review of Basic Math
Rotations and Translations
Game Physics – Part IV Moving to 3D
Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2005.
Graphics CSE 581 – Interactive Computer Graphics Mathematics for Computer Graphics CSE 581 – Roger Crawfis (slides developed from Korea University slides)
6.837 Linear Algebra Review Patrick Nichols Thursday, September 18, 2003.
Patrick Nichols Thursday, September 18, Linear Algebra Review.
CS 450: COMPUTER GRAPHICS QUATERNIONS SPRING 2015 DR. MICHAEL J. REALE.
3D Computer Graphics An oh so brief introduction.
6.837 Linear Algebra Review Patrick Nichols Thursday, September 18, 2003.
CSE 681 Review: Transformations. CSE 681 Transformations Modeling transformations build complex models by positioning (transforming) simple components.
Week 5 - Wednesday.  What did we talk about last time?  Project 2  Normal transforms  Euler angles  Quaternions.
CS 376 Introduction to Computer Graphics 02 / 16 / 2007 Instructor: Michael Eckmann.
6.837 Linear Algebra Review Rob Jagnow Monday, September 20, 2004.
Jinxiang Chai CSCE441: Computer Graphics 3D Transformations 0.
Jinxiang Chai Composite Transformations and Forward Kinematics 0.
Maths & Technologies for Games Animation: Practicalities CO3303 Week 3.
Multimedia System and Networking UTD Slide- 1 University of Texas at Dallas B. Prabhakaran Rigging.
Matthew Christian. About Me Introduction to Linear Algebra Vectors Matrices Quaternions Links.
What is Kinematics. Kinematics studies the motion of bodies.
Review CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2005.
CS 551/651 Advanced Graphics Technical Background.
Basic Theory (for curve 01). 1.1 Points and Vectors  Real life methods for constructing curves and surfaces often start with points and vectors, which.
CS559: Computer Graphics Lecture 9: 3D Transformation and Projection Li Zhang Spring 2010 Most slides borrowed from Yungyu ChuangYungyu Chuang.
Week 5 - Monday.  What did we talk about last time?  Lines and planes  Trigonometry  Transforms  Affine transforms  Rotation  Scaling  Shearing.
An Introduction to Robot Kinematics Renata Melamud.
Linear Algebra Review Tuesday, September 7, 2010.
Fundamentals of Computer Animation Orientation and Rotation.
CGDD 4003 Character Animation. The Skeletal Hierarchy (aka the “rig”) Based on the concept of bones Each bone has exactly one parent Each bone has a transform.
CSE 167 [Win 17], Lecture 2: Review of Basic Math Ravi Ramamoorthi
CPSC 641: Computer Graphics Rotation Representation and Interpolation
COMP 175: Computer Graphics February 9, 2016
Skeletons and Skinning
CSCE441: Computer Graphics 2D/3D Transformations
UNIVERSITY OF ILLINOIS AT URBANA-CHAMPAIGN
Math review - scalars, vectors, and matrices
Game Programming Algorithms and Techniques
Presentation transcript:

Midterm Review CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2004

Project 3 Load an.anim file and play back a keyframed animation on a skinned character Extra Credit: Display the channel curve (1 point) Simple channel editor (2 points)

Anim File animation { range [time_start] [time_end] numchannels [num] channel { extrapolate [extrap_in] [extrap_out] keys [numkeys] { [time] [value] [tangent_in] [tangent_out] … } channel … }

Project 3 The first 3 channels will be the root translation (x,y,z) After that, there will be 3 rotational channels for every joint (x,y,z) in the same order that the joints are listed in the.skel file

Project 3 Suggested classes: Keyframe: stores time, value, tangents, cubics… Channel: stores an array (or list) of Keyframes Animation: stores an array of Channels Player: stores pointer to an animation & pointer to skeleton. Keeps track of time, accesses animation data & poses the skeleton. Optional: Rig: simple container for a skeleton, skin, and morphs Pose: array of floats (or just use stl vector) ChannelEditor: it’s always nice to separate editor classes from the data that they edit

Linear Algebra Review

Key Math Concepts Vectors (dot & cross products…) Matrices (& systems of equations) Homogeneous vectors & matrices Transformations, inverse transformations Viewing, cameras Euler angles Quaternions Summation (weighted sum, average, convex) Cubic equations Interpolation, splines, radial basis functions

Vector Arithmetic

Vector Magnitude The magnitude (length) of a vector is: Unit vector (magnitude=1.0)

Dot Product

Example: Angle Between Vectors How do you find the angle θ between vectors A and B? a b θ

Example: Angle Between Vectors a b θ

Dot Products with Unit Vectors b θ a a·b = 0 0 < a·b < 1 a·b = -1 a·b = 1 -1 < a·b < 0 a·b

Dot Products with Non-Unit Vectors If a and b are arbitrary (non-unit) vectors, then the following are still true: If θ 0 If θ = 90º then a · b = 0 If θ > 90º then a · b < 0

Dot Products with One Unit Vector a u a·u If |u|=1.0 then a·u is the length of the projection of a onto u

Example: Distance to Plane A plane is described by a point p on the plane and a unit normal n. Find the distance from point x to the plane p n x

Example: Distance to Plane The distance is the length of the projection of x-p onto n: p n x x-p

Cross Product

Properties of the Cross Product area of parallelogram ab is perpendicular to both a and b, in the direction defined by the right hand rule if a and b are parallel

Example: Area of a Triangle Find the area of the triangle defined by 3D points a, b, and c a b c

Example: Area of a Triangle b-a c-a a b c

Matrices

Example: Alignment to Target A spaceship with a matrix M must target another ship with matrix N. Find a unit rotation axis u and an angle θ that will rotate M to be facing N a b c d M a b c d N

Example: Alignment to Target As objects are defined looking down the -z axis in their local space, the -c axis of their world matrix will represent the object’s heading a b c d M a b c d N heading

Example: Alignment to Target Therefore, we want to rotate matrix M so that it’s c axis lines up with the vector going from N to M, or (M.d - N.d) (M.d-N.d) a b c d M a b c d N

Example: Alignment to Target We will rotate around the axis perpendicular to both M.c and (M.d - N.d) a b c d M a b c d N (M.d-N.d) u

Example: Alignment to Target The rotation angle θ is just the angle between M.c and (M.d - N.d) a b c d M a b c d N (M.d-N.d) u θ

Orthonormality If all row vectors and all column vectors of a matrix are unit length, that matrix is said to be orthonormal This also implies that all vectors are perpendicular to each other Orthonormal matrices have some useful mathematical properties, such as: M -1 = M T

Orthonormality If a 4x4 matrix represents a rigid transformation, then the upper 3x3 portion will be orthonormal

Matrix Dot Matrix

Camera Matrix Think of the camera just like any other object. Just as a chair model has a matrix W that transforms it into world space, the camera matrix C would transform a camera model into world space. We don’t want to transform the camera into world space. Instead, we want to transform the world into the camera’s space, so we use the inverse of C.

Example: Camera ‘Look At’ Our eye is located at position e and we want to look at a target at position t. Generate an appropriate camera matrix M.

Example: Camera ‘Look At’ Our eye is located at position e and we want to look at a target at position t. Generate an appropriate camera matrix M. Two possible approaches include: Measure angles and rotate matrix into place Construct a,b,c, & d vectors of M directly

Example: Camera ‘Look At’ Matrix The d vector is just the position of the camera, which is e: The c vector is a unit length vector that points directly behind the viewer:

Example: Camera ‘Look At’ Matrix The a vector is a unit length vector that points to the right of the viewer. It is perpendicular to the c axis. To keep the camera from rolling, we also want the a vector to lay flat in the xz-plane, perpendicular to the y-axis. Note that a cross product with the y-axis can be optimized as follows:

Example: Camera ‘Look At’ Matrix The b vector is a unit length vector that points up relative to the viewer. It is perpendicular to the both the c and a axes Note that b does not need to be normalized because it is already unit length. This is because a and c are unit length vectors 90 degrees apart.

Example: Camera ‘Look At’ Matrix Summary:

Inversion If M transforms v into world space, then M -1 transforms v’ back into local space

Homogeneous Vectors Technically, homogeneous vectors are 4D vectors that get projected into the 3D w=1 space

Homogeneous Vectors Vectors representing a position in 3D space can just be written as: Vectors representing direction are written: The only time the w coordinate will be something other than 0 or 1 is in the projection phase of rendering, which is not our problem

Position Vector Dot Matrix

v=(.5,.5,0,1) x y Local Space (0,0,0)

Position Vector Dot Matrix v=(.5,.5,0,1) x y Local Space (0,0,0) x y World Space (0,0,0) a b d Matrix M

Position Vector Dot Matrix v=(.5,.5,0,1) x y Local Space (0,0,0) x y World Space (0,0,0) a b d v’v’

Direction Vector Dot Matrix

Matrix Dot Matrix (4x4) The row vectors of M’ are the row vectors of M transformed by matrix N Notice that a, b, and c transform as direction vectors and d transforms as a position

Quaternions In computer animation, quaternions are used as an alternative way to store orientations (other than matrices & Euler angles) One of their biggest advantages is their ability to interpolate between arbitrary orientations nicely They are also a compact, fast way to store & manipulate orientations As we generally require matrices at some point, the ability to convert a quaternion to/from a matrix is very important Once in quaternion format, we can interpolate smoothly using ‘slerp’ (spherical linear interpolation), or construct quaternion curves through several orientations

Weighted Blending & Averaging Weighted sum: Weighted average: Convex average: Additive blend:

Rigging & Animation Review

Rigging & Animation Concepts Rigging DOF Joint Skeleton Skin Morphing, PSD FFD, SOFFD Rig Animation Pose Keyframe Channel Animation Clip Player Blender State Machine

Rigging and Animation Animation System Pose Rigging System Triangles Renderer

Rig Data Flow Rigging System

Rigging Equations Skeleton Morphing Skinning

Skeleton, Morph, & Skin Data Flow

Skeleton Forward Kinematics Every joint computes a local matrix based on its DOFs and any other constants necessary (joint offsets…) To find the joint’s world matrix, we compute the dot product of the local matrix with the parent’s world matrix Normally, we would do this in a depth-first order starting from the root, so that we can be sure that the parent’s world matrix is available when its needed

Shape Interpolation Algorithm To compute a blended vertex position: The blended position is the base position plus a contribution from each target whose DOF value is greater than 0 To blend the normals, we use a similar equation: We don’t need to normalize them now, as that will happen later in the skinning phase

Smooth Skin Algorithm The deformed vertex position is a weighted average over all of the joints that the vertex is attached to: W is a joint’s world matrix and B is a joint’s binding matrix that describes where it’s world matrix was when it was attached to the skin model (at skin creation time) Each joint transforms the vertex as if it were rigidly attached, and then those results are blended based on user specified weights All of the weights must add up to 1: Blending normals is essentially the same, except we transform them as directions (x,y,z,0) and then renormalize the results