View
219
Download
3
Embed Size (px)
Citation preview
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
zyx
zyx
zzyyxx
zzyyxx
zyx
zyx
sasasas
aaa
bababa
bababa
bbb
aaa
a
a
ba
ba
b
a
Vector Magnitude
The magnitude (length) of a vector is:
Unit vector (magnitude=1.0)
222zyx vvv v
v
v
Dot Product
cosbaba
ba
iizzyyxx babababa
Example: Angle Between Vectors
How do you find the angle θ between vectors A and B?
a
b θ
Example: Angle Between Vectors
ba
ba
ba
ba
baba
1cos
cos
cos
a
b θ
Dot Products with Unit Vectors
bθ a
a·b = 00 < a·b < 1
a·b = -1
a·b = 1
-1 < a·b < 0
cos
0.1
ba
baa·b
Dot Products with Non-Unit Vectors
If a and b are arbitrary (non-unit) vectors, then the following are still true:
If θ < 90º then a·b > 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
npx dist
Cross Product
xyyxzxxzyzzy
zyx
zyx
babababababa
bbb
aaa
kji
ba
ba
Properties of the Cross Product
ba
ba
ba
baba
0
sin
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
ab
c
Example: Area of a Triangle
acab 2
1area
b-a
c-a
ab
c
Matrices
1
0
0
0
zyx
zyx
zyx
zyx
ddd
ccc
bbb
aaa
M
x
y
z
a
b
c d
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
Ma
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
Ma
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
Ma
b
c
d
N
Example: Alignment to Target
We will rotate around the axis perpendicular to both M.c and (M.d - N.d)
*
*
* ...
u
uu
dNdMcMu
a
b
c d
Ma
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)
dNdM
dNdMcM
..
...cos 1
a
b
c d
Ma
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 = MT
Orthonormality
If a 4x4 matrix represents a rigid transformation, then the upper 3x3 portion will be orthonormal
bac
acb
cba
cba
1
Matrix Dot Matrix
NML
333231
232221
131211
333231
232221
131211
333231
232221
131211
nnn
nnn
nnn
mmm
mmm
mmm
lll
lll
lll
32132212121112 nmnmnml
Ncc
Nbb
Naa
ML
ML
ML
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:
te
tec
ed
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:
cy
cya
xz cc 0010 c
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.
acb
1*1*190sin acb
Example: Camera ‘Look At’ Matrix
Summary:
acb
te
tec
ed
cy
cya
Inversion
If M transforms v into world space, then M-1 transforms v’ back into local space
IMM
Mvv
Mvv
1
1
Homogeneous Vectors
Technically, homogeneous vectors are 4D vectors that get projected into the 3D w=1 space
w
z
w
y
w
xwzyx v
v
v
v
v
vvvvv
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
1zyx vvv
0zyx vvv
Position Vector Dot Matrix
1
1
w
zzzzyzxz
yyzyyyxy
xxzxyxxx
zyx
v
dcvbvavv
dcvbvavv
dcvbvavv
vvv
Mvv
v
dcbav zyx vvv
1
0
0
0
zyx
zyx
zyx
zyx
ddd
ccc
bbb
aaa
M
Position Vector Dot Matrix
dcbav zyx vvv
v=(.5,.5,0,1)
x
y
Local Space
(0,0,0)
Position Vector Dot Matrix
dcbav zyx vvv
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
dcbav zyx vvv
v=(.5,.5,0,1)
x
y
Local Space
(0,0,0)x
y
World Space
(0,0,0)
a
b
d
v’
Direction Vector Dot Matrix
0
0
w
zzzyzxz
yzyyyxy
xzxyxxx
zyx
v
cvbvavv
cvbvavv
cvbvavv
vvv
Mvv
v
cbav zyx vvv
1
0
0
0
zyx
zyx
zyx
zyx
ddd
ccc
bbb
aaa
M
Matrix Dot Matrix (4x4)
1
0
0
0
zyx
zyx
zyx
zyx
ddd
ccc
bbb
aaa
MNMM
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:
10
10
0
i
ii
iii
w
w
xwx
10
1100 1
iii
ii
iii xwxwxxwxx
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
SystemPose
Rigging
SystemTriangles
Renderer
Rig Data Flow
N ...21Φ
nv ,
RiggingSystem
Rigging Equations
*
*
1*
1
21 ,...,,
n
nn
WBnn
WBvv
nnnn
vvvv
WLW
LL
iii
iii
baseiibase
baseiibase
parent
Njnt
w
w
Skeleton
Morphing
Skinning
Skeleton, Morph, & Skin Data Flow
parent
mjnt
WLW
LL
,...,, 21
*
*
1*
1
n
nn
WBnn
WBvv
iii
iii
w
w
baseiibase
baseiibase
nnnn
vvvv
M ...21 NMM ...21
nv ,
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
Njnt ,...,, 21LL
parentWLW
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
baseiibase vvvv
baseiibase nnnn
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
iiiw WBvv 1
1iw
*
*1* ,
n
nnWBnn
iiiw