1 / 14

Maths and Technologies for Games Quaternions

Maths and Technologies for Games Quaternions. CO3303 Week 1. Representing Rotations. We have used two methods to store a rotation :. A matrix: Can just use 3x3 matrix for rotation Used these in DirectX. Three Euler/Fixed angles: X, Y & Z, (or yaw, pitch & roll)

race
Télécharger la présentation

Maths and Technologies for Games Quaternions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Maths and Technologies for GamesQuaternions CO3303 Week 1

  2. Representing Rotations • We have used two methods to store a rotation: • A matrix: • Can just use 3x3 matrix for rotation • Used these in DirectX • ThreeEuler/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]

  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 = RX*RY*RZ • 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

More Related