CS361

28
CS361 Week 5 - Wednesday

description

Week 5 - Wednesday. CS361. Last time. What did we talk about last time? Project 2 Normal transforms Euler angles Quaternions. Questions?. Project 2. Quaternions. Quaternions. Quaternions are a compact way to represent orientations Pros: Compact (only four values needed) - PowerPoint PPT Presentation

Transcript of CS361

Page 1: CS361

CS361Week 5 - Wednesday

Page 2: CS361

Last time

What did we talk about last time? Project 2 Normal transforms Euler angles Quaternions

Page 3: CS361

Questions?

Page 4: CS361

Project 2

Page 5: CS361

Quaternions

Page 6: CS361

Quaternions

Quaternions are a compact way to represent orientations

Pros: Compact (only four values needed) Do not suffer from gimbal lock Are easy to interpolate between

Cons: Are confusing Use three imaginary numbers Have their own set of operations

Page 7: CS361

Definition A quaternion has three imaginary parts and one

real part

We use vector notation for quaternions but put a hat on them

Note that the three imaginary number dimensions do not behave the way you might expect

wvwzyxwv qqkqjqiqq qqq ),ˆ(ˆ

kjiijjikkiikjjk

kji

1222

Page 8: CS361

Operations

Multiplication

Addition

Conjugate

Norm

Identity

),(ˆˆ vvwwvwvwvv rqqr rqrqrqrq

),(ˆˆ wwvv rq rqrq

),(*̂wv qqq

2222)̂( wzyx qqqqn q

)1,(ˆ 0i

Page 9: CS361

More operations

Inverse

One (useful) conjugate rule: Note that scalar multiplication is just like

scalar vector multiplication for any vector Quaternion quaternion multiplication is

associative but not commutative For any unit vector u, note that the

following is a unit quaternion:

*2

1 ˆ)̂(1ˆ qqq

n

)cos,(sinˆ φφuq

*** ˆˆ)̂ˆ( qrrq

Page 10: CS361

Quaternion transforms

Take a vector or point p and pretend its four coordinates make a quaternion

If you have a unit quaternion the result of is p rotated around the u axis by 2

Note that, because it's a unit quaternion,

There are ways to convert between rotation matrices and quaternions

The details are in the book

p̂)cos,(sinˆ φφuq

1ˆˆˆ qpq*1 ˆˆ qq

Page 11: CS361

Quaternion rotation example Take vector (0,0,3), write it as p =

(0,0,3,0) Let's rotate it 90° around the x-axis using

a quaternion We want where u is the x-axis and is 45°

p = (0, -3 sin , 0, 3cos , 0) = (0, -6sincos,3cos2-3sincos, 0)= (0, -3, 0, 0)

Page 12: CS361

Slerp Short for spherical linear interpolation Using unit quaternions that represent

orientations, we can slerp between them to find a new orientation at time t = [0,1], tracing the path on a unit sphere between the orientations

To find the angle between the quaternions, you can use the fact that cos = qxrx + qyry + qzrz + qwrw

rqrqs ˆsin

)sin(ˆsin

))1(sin(),̂,ˆ(̂φtφ

φtφt

Page 13: CS361

Student Lecture: Vertex Blending and Morphing

Page 14: CS361

Vertex blending

If we animate by moving rigid bodies around each other, joints won't look natural

To do so, we define bones and skin and have the rigid bone changes dictate blended changes in the skin

Page 15: CS361

Vertex blending continued The following equation shows the effect that

each bone i (and its corresponding animation transform matrix Bi(t) and bone to world transform matrix Mi ) have on the p, the original location of a vertex

Vertex blending is popular in part because it can be computed in hardware with the vertex shader

1

0

1

0

1 1 where )()(n

ii

n

iiii wtwt pMBu

Page 16: CS361

Morphing

Morphing is the technique for interpolating between two complete 3D models

It has two problems: Vertex correspondence▪ What if there is not a 1 to 1 correspondence

between vertices? Interpolation▪ How do we combine the two models?

Page 17: CS361

Morphing continued We're going to ignore the correspondence

problem (because it's really hard) If there's a 1 to 1 correspondence, we use

parameter s[0,1] to indicate where we are between the models and then find the new location m based on the two locations p0 and p1

Morph targets is another technique that adds in weighted poses to a neutral model

10)1( ppm ss

Page 18: CS361

Projections

Finally, we deal with the issue of projecting the points into view space

Since we only have a 2D screen, we need to map everything to x and y coordinates

Like other transforms, we can accomplish projection with a 4 x 4 matrix

Unlike affine transforms, projection transforms can affect the w components in homogeneous notation

Page 19: CS361

Orthographic projections An orthographic projection maintains the property

that parallel lines are still parallel after projection The most basic orthographic projection matrix simply

removes all the z values

This projection is not ideal because z values are lost Things behind the camera are in front z-buffer algorithms don't work

1000000000100001

0P

Page 20: CS361

Canonical view volume To maintain relative depths and allow for clipping, we

usually set up a canonical view volume based on (l,r,b,t,n,f)

These letters simply refer to the six bounding planes of the cube Left Right Bottom Top Near Far

Here is the (OpenGL) matrix that translates all points and scales them into the canonical view volume

1000

200

020

002

0

nfnf

nf

btbt

bt

lrlr

lr

P

Page 21: CS361

Stupid SharpDX OpenGL normalizes to a canonical view volume

from [-1,1] in x, [-1,1] in y, and [-1,1] in z Just to be silly, SharpDX normalizes to a

canonical view volume of [-1,1] in x, [-1,1] in y, and [0,1] in z

Thus, its projection matrix is:

1000

100

020

002

0

nfn

nf

btbt

bt

lrlr

lr

P

Page 22: CS361

Perspective projection A perspective projection does not preserve parallel lines Lines that are farther from the camera will appear

smaller Thus, a view frustum must be normalized to a canonical

view volume Because points actually move (in x and y) based on

their z distance, there is a distorting term in the w row of the projection matrix

Page 23: CS361

Perspective projection matrix Here is the SharpDX projection

matrix It is different from the OpenGL again

because it only uses [0,1] for z

010000

020

002

0

nffn

nffbtbt

btn

lrlr

lrn

P

Page 24: CS361

SharpDX Projection Examples

Page 25: CS361

Quiz

Page 26: CS361

Upcoming

Page 27: CS361

Next time…

Light Materials Sensors

Page 28: CS361

Reminders

Read Chapter 5 for FridayExam 1 next Friday Keep working on Project 2