Download presentation
Presentation is loading. Please wait.
1
Midterm Review CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2004
2
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)
3
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 … }
4
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
5
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
6
Linear Algebra Review
7
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
8
Vector Arithmetic
9
Vector Magnitude The magnitude (length) of a vector is: Unit vector (magnitude=1.0)
10
Dot Product
11
Example: Angle Between Vectors How do you find the angle θ between vectors A and B? a b θ
12
Example: Angle Between Vectors a b θ
13
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
14
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
15
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
16
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
17
Example: Distance to Plane The distance is the length of the projection of x-p onto n: p n x x-p
18
Cross Product
19
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
20
Example: Area of a Triangle Find the area of the triangle defined by 3D points a, b, and c a b c
21
Example: Area of a Triangle b-a c-a a b c
22
Matrices
23
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
24
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
25
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
26
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
27
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 θ
28
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
29
Orthonormality If a 4x4 matrix represents a rigid transformation, then the upper 3x3 portion will be orthonormal
30
Matrix Dot Matrix
31
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.
32
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.
33
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
34
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:
35
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:
36
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.
37
Example: Camera ‘Look At’ Matrix Summary:
38
Inversion If M transforms v into world space, then M -1 transforms v’ back into local space
39
Homogeneous Vectors Technically, homogeneous vectors are 4D vectors that get projected into the 3D w=1 space
40
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
41
Position Vector Dot Matrix
42
v=(.5,.5,0,1) x y Local Space (0,0,0)
43
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
44
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’
45
Direction Vector Dot Matrix
46
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
47
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
48
Weighted Blending & Averaging Weighted sum: Weighted average: Convex average: Additive blend:
49
Rigging & Animation Review
50
Rigging & Animation Concepts Rigging DOF Joint Skeleton Skin Morphing, PSD FFD, SOFFD Rig Animation Pose Keyframe Channel Animation Clip Player Blender State Machine
51
Rigging and Animation Animation System Pose Rigging System Triangles Renderer
52
Rig Data Flow Rigging System
53
Rigging Equations Skeleton Morphing Skinning
54
Skeleton, Morph, & Skin Data Flow
55
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
56
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
57
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
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.