Presentation is loading. Please wait.

Presentation is loading. Please wait.

Week 5 - Wednesday.  What did we talk about last time?  Project 2  Normal transforms  Euler angles  Quaternions.

Similar presentations


Presentation on theme: "Week 5 - Wednesday.  What did we talk about last time?  Project 2  Normal transforms  Euler angles  Quaternions."— Presentation transcript:

1 Week 5 - Wednesday

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

3

4

5

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

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

8  Multiplication  Addition  Conjugate  Norm  Identity

9  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:

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

11

12  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  = q x r x + q y r y + q z r z + q w r w

13

14  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

15  The following equation shows the effect that each bone i (and its corresponding animation transform matrix B i (t) and bone to world transform matrix M i ) 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

16  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?

17  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 p 0 and p 1  Morph targets is another technique that adds in weighted poses to a neutral model

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

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

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

21  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:

22  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

23  Here is the SharpDX projection matrix  It is different from the OpenGL again because it only uses [0,1] for z

24

25

26

27  Light  Materials  Sensors

28  Read Chapter 5 for Friday  Exam 1 next Friday  Keep working on Project 2


Download ppt "Week 5 - Wednesday.  What did we talk about last time?  Project 2  Normal transforms  Euler angles  Quaternions."

Similar presentations


Ads by Google