Presentation is loading. Please wait.

Presentation is loading. Please wait.

Maths and Technologies for Games Quaternions CO3303 Week 1.

Similar presentations


Presentation on theme: "Maths and Technologies for Games Quaternions CO3303 Week 1."— Presentation transcript:

1 Maths and Technologies for Games Quaternions CO3303 Week 1

2 We have used two methods to store a rotation: Representing Rotations 2.Three Euler/Fixed angles: – X, Y & Z, (or yaw, pitch & roll) –Can be combined in any order –Used in TL-Engine [See Van Verth for more detail] 1.A matrix: –Can just use 3x3 matrix for rotation –Used these in DirectX

3 Converting between Formats We can create a matrix from fixed angles –Create a rotation matrix for each angle: –E.g. Z rotation matrix of α: Multiply the matrices together: M = R X *R Y *R Z –Different results for different multiplication orders Can also convert matrix back to fixed angles –See Van Verth or the matrix class in the labs

4 Euler Angles – Pros/Cons Concise storage – just three floats Euler/Fixed angles seem intuitive –But which order to multiply when forming a matrix? –Different orders in same app can cause problems Are the rotations world or local rotations? –Depends on order again Gimbal lock can occur when one angle is 90° –The other angles interfere with each other, result is ambiguous –E.g. causing strange spinning effects when looking straight up or down (you will have seen this problem in some games)

5 Matrices – Pros/Cons Unambiguous definition of rotation –As compared to Euler angles 4x4 matrix can also hold position and scale –And totally different things: projection matrix Used by graphics hardware –Must convert all forms to matrices eventually But uses 16 floats –Much processing/storage even for simple operations Can be stored in two ways, by row or by column –APIs (DirectX) and maths texts use different forms

6 Axis-Angle Rotations Look for other ways to specify rotations… Can specify any rotation as a rotation axis r (a vector) and an angle θ (a scalar): Can convert to and from matrices (see Van Verth or matrix class) Useful way to think about rotation But operations are generally complex with this form –Including interpolation (see later)

7 Quaternions Quaternions can be used to represent rotation A general quaternion takes the form: –We will use these forms interchangeably We will mostly consider normalised quaternions: However, several quaternion formulae result in un- normalised quaternions –Often need to renormalise quaternions before reuse = examinable

8 Quaternions A quaternion is a form of axis-angle rotation –When in a normalised form If we rewrite a quaternion in this form: Then r and θ form an axis-angle rotation as described before: –r is a unit vector here

9 Quaternions – Pros/Cons Why use this more complex variation on angle-axis form? Because quaternions can easily be: –Combined together –Used to transform points/vectors –Quaternions can be interpolated easily A feature vital for animation, which is more difficult with matrices Quaternions only use 4 floats for storage However, they lack hardware support –So we need to convert them to and from matrices

10 Quaternion Formulae 1 A quaternion can be converted to a matrix: –A little expensive, can be simplified in code –Transposed from Van Verth book for row-based system (DirectX / math text difference) Reverse conversion is also possible (see Van Verth) Quaternions don’t convert easily to Euler angles

11 Quaternion Formulae 2 Quaternions can be added and scaled: –Scaling is used for normalisation Two quaternions can be multiplied to create a single quaternion performing both rotations: –Same effect as multiplying matrices, order important –Coded efficiently this is faster than matrix multiplication –N.B. Swapped multiplication order from text for row-based system

12 Quaternion Formulae 3 Inverse of a quaternion (the rotation in the opposite direction) is simple: –Assumes quaternion is normalised –Much faster than matrix equivalent, which can be complex We can also represent vectors as quaternions –Just set w = 0:

13 Quaternion Formulae 4 Rotate a vertex or vector p by a quaternion q=(w,v) : –Slower than matrix equivalent –1st formula reversed for row-based system (2nd remains same) –N.B. The formula in earlier Van Verth edition is incorrect Derivation of most formulae in Van Verth –As well as further detail

14 Quaternions: Initial Summary Quaternions can perform similar operations to matrices –With comparable performance –But need to convert to / from matrices –And can’t store position / scaling No compelling reason to use them yet But next week we will see how quaternions compare to matrices for interpolation –And how this is used this for animation


Download ppt "Maths and Technologies for Games Quaternions CO3303 Week 1."

Similar presentations


Ads by Google