Game Development Reference
In-Depth Information
Euler
Quaternions
(a)
(b)
(c)
(d)
Fig 2.23 Two planes rotated 1°
around each axis every frame. One
uses the Euler angle to calculate the
other quaternions. (a) Planes begin
aligned, (b) planes remain aligned at
first, (c) once the x angle becomes 90
for the Euler plane its rotations go off
course with respect to the quaternion
plane, and (d) even further in the
simulation.
1°. The plane on the left in Figure 2.23 is rotated using Euler angles and the
other uses quaternions. The movement of the quaternion plane is smoother.
Quaternions are used throughout modern game engines, including Unity, as
they do not suffer from gimbal lock.
For Research
Quaternions
If you are interested in the complex inner workings of quaternions,
check out Visualizing Quaternions by Andrew J. Hanson (2006,
ISBN: 978-0120884001).
Although the rotation value for the transform component of GameObjects
appears as Euler x , y , and z values in the inspector, Unity uses quaternions for
storing orientations. The most used quaternion functions are LookRotation() ,
Angle() , and Slerp() .
LookRotation() given a vector will calculate the equivalent quaternion to turn
an object to look alone the original vector. This means this.transform
.rotation = Quaternion.LookRotation(target.position - this
.transform.position) achieves the same result as this.transform
.LookAt(target.transform.position ).