CSCE 641: Computer Graphics Rotation Representation and Interpolation Jinxiang Chai.

Post on 21-Dec-2015

229 views 2 download

Tags:

Transcript of CSCE 641: Computer Graphics Rotation Representation and Interpolation Jinxiang Chai.

CSCE 641: Computer Graphics Rotation Representation and

InterpolationJinxiang Chai

Joints and Rotation

Rotational dofs are widely used in character animation

3 translation dofs

48 rotational dofs

1 dof: knee 2 dof: wrist 3 dof: shoulder

• Orientation is described relative to some reference alignment

• A rotation changes object from one orientation to another

• Can represent orientation as a rotation from the reference alignment 

Orientation vs. Rotation 

Ideal Orientation Format 

• Represent 3 degrees of freedom with minimum number of values

• Allow concatenations of rotations

• Math should be simple and efficient – concatenation – interpolation – rotation

Outline

• Rotation matrix

• Fixed angle and Euler angle

• Axis angle

• Quaternion

Matrices as Orientation 

• Matrices just fine, right?

• No… – 9 values to interpolate – don’t interpolate well

Representation of orientation

Homogeneous coordinates (review):– 4X4 matrix used to represent translation,

scaling, and rotation

– a point in the space is represented as

– Treat all transformations the same so that they can be easily combined

1

z

y

x

P

Rotation

New points rotation matrix old points

Interpolation

• In order to “move things”, we need both translation and rotation

• Interpolating the translation is easy, but what about rotations?

Interpolation of Orientation

• How about interpolating each entry of the rotation matrix?

• The interpolated matrix might no longer be orthonormal, leading to nonsense for the inbetween rotations

Interpolation of Orientation

Example: interpolate linearly from a positive 90 degree rotation about y axis to a negative 90 degree rotation about y

Linearly interpolate each component and halfway between, you get this...

1000

0001

0010

0100

1000

0001

0010

0100

Rotate about y-axis with 90

Rotate about y-axis with -90

1000

0000

0010

0000

Properties of Rotation Matrix

Easily composed?

Interpolation?

Compact representation?

Properties of Rotation Matrix

Easily composed? yes

Interpolation?

Compact representation?

Properties of Rotation Matrix

Easily composed? yes

Interpolation? not good

Compact representation?

Properties of Rotation Matrix

Easily composed? yes

Interpolation? not good

Compact representation? - 9 parameters (only needs 3 parameters)

Outline

• Rotation matrix

• Fixed angle and Euler angle

• Axis angle

• Quaternion

Fixed angles

• Angles are used to rotate about fixed axes

• Orientations are specified by a set of 3 ordered parameters that represent 3 ordered rotations about fixed axes

• Many possible orderings: x-y-z, x-y-x,y-x-z - as long as axis does immediately follow itself such as x-x-y

E.g., (z, y, x)

XZ

Y

Q = Rx(x). Ry(y). Rz(z). P

Ordered triple of rotations about global axes, any triple can be used that doesn’t immediately repeat an axis, e.g., x-y-z, is fine, so is x-y-x. But x-x-z is not.

Fixed angles

Euler Angles vs. Fixed Angles 

One point of clarification

Euler angle

- rotates around local axes

Fixed angle

- rotates around world axes Rotations are reversed

- x-y-z Euler angles == z-y-x fixed angles

Euler angle Interpolation

• Interpolating each component separately

• Might have singularity problem – Halfway between (0, 90, 0) & (90, 45, 90) – Interpolate directly, get (45, 67.5, 45)– Desired result is (90, 22.5, 90) (verify this!)

Euler angle concatenation 

• Can't just add or multiply components • Best way:

– Convert to matrices – Multiply matrices – Extract Euler angles from resulting matrix

• Not cheap

Gimbal lock 

• Euler/fixed angles not well-formed • Different values can give same rotation • Example with z-y-x fixed angles:

– ( 90, 90, 90 ) = ( 0, 90, 0 )

Gimbal lock 

• Euler/fixed angles not well-formed • Different values can give same rotation • Example with z-y-x fixed angles:

– ( 90, 90, 90 ) = ( 0, 90, 0 )

z

x

y

Gimbal lock 

• Euler/fixed angles not well-formed • Different values can give same rotation • Example with z-y-x fixed angles:

– ( 90, 90, 90 ) = ( 0, 90, 0 )

z

x

y

z

x

y

(90,0,0)

Gimbal lock 

• Euler/fixed angles not well-formed • Different values can give same rotation • Example with z-y-x fixed angles:

– ( 90, 90, 90 ) = ( 0, 90, 0 )

z

x

y

z

x

y

z

x

y

(90,0,0) (90,90,0)

Gimbal lock 

• Euler/fixed angles not well-formed • Different values can give same rotation • Example with z-y-x Euler angles:

– ( 90, 90, 90 ) = ( 0, 90, 0 )

z

y

x

z

x

y

z

x

y z

x

y

(90,0,0) (90,90,0) (90,90,90)

Gimbal lock

• A Gimbal is a hardware implementation of Euler angles used for mounting gyroscopes or expensive globes

• Gimbal lock is a basic problem with representing 3D rotation using Euler angles or fixed angles

Gimbal lock

• When two rotational axis of an object pointing in the same direction, the rotation ends up losing one degree of freedom

Outline

• Rotation matrix

• Fixed angle and Euler angle

• Axis angle

• Quaternion

(Ax,Ay,Az,)

Euler’s rotation theorem: An arbitrary rotation may be described by only three parameters.

X

Y

Z

Rotate an object by around A

Axis angle

Axis-angle rotation

rr’

n

Given r – Vector in space to rotate n – Unit-length axis in space about which to rotate – The amount about n to rotate

Solve r’ – The rotated vector

Axis-angle rotation

rr’

rpar

• Compute rpar: the projection of r along the n direction

rpar = (n·r)n

Axis-angle rotation

r

r’rperprpar

• Compute rperp: rperp = r-rpar

Axis-angle rotation

r

r’rperp

v

rpar

• Compute v: a vector perpedicular to rpar and rperp: v= rparxrperp

Axis-angle rotation

r

r’rperp

v

Use rpar, rperp and v, θ to compute the new vector!

rpar

• Compute v: a vector perpedicular to rpar and rperp: v= rparxrperp

Axis-angle rotation

r

r’

n

rpar = (n·r) n

rperp = r – (n·r) n

V = n x (r – (n·r) n) = n x r

r’ = r’par + r’perp

= r’par + (cos ) rperp + (sin ) V=(n·r) n + cos (r – (n·r)n) + (sin ) n x r= (cos )r + (1 – cos ) n (n·r) + (sin ) n x r

Axis-angle rotation

• Can interpolate rotation well

1. Interpolate axis from A1 to A2 Rotate axis about A1 x A2 to get A

X

Y

Z

2. Interpolate angle from 1 to to get

3. Rotate the object by around A

A1 x A2

Axis-angle interpolation

Axis-angle rotation

• Can interpolate rotation well

• Compact representation

• Messy to concatenate - might need to convert to matrix form

Outline

• Rotation matrix

• Fixed angle and Euler angle

• Axis angle

• Quaternion

Quaternion

Remember complex numbers: a+ib, where i2=-1

Quaternions are a non-commutative extension of complex numbers

Invented by Sir William Hamilton (1843) Quaternion: - Q = a + bi + cj + dk: where i2=j2=k2=ijk=-1,ij=k,jk=i,ki=j - Represented as: q = (w, v) = w + xi + yj + zk

Quaternion

• 4 tuple of real numbers: w, x, y, z

• Same information as axis angles but in a more computational-friendly form

Quaternion math

Unit quaternion

Multiplication

Associative

Non-commutative

Quaternion math

Conjugate

Inverse

Quaternion Example

let

then

Quaternion Rotation

Quaternion rotation

Quaternion Example

• Rotate a point (1,0,0) about y-axis with -90 degrees

z

x

y

(1,0,0)

(0,0,1)

Quaternion Example

• Rotate a point (1,0,0) about y-axis with -90 degrees

z

x

y

(1,0,0)

(0,0,1)

)

1

0

0

,0(

)

0

1

0

2

90sin,

2

90)(cos

0

0

1

,0)(

0

1

0

2

90sin,

2

90(cos *

Quaternion Example

• Rotate a point (1,0,0) about y-axis with 90 degrees

z

x

y

(1,0,0)

(0,0,1)

)

1

0

0

,0(

)

0

1

0

2

90sin,

2

90)(cos

0

0

1

,0)(

0

1

0

2

90sin,

2

90(cos *

Point (1,0,0)

Quaternion Example

• Rotate a point (1,0,0) about y-axis with 90 degrees

z

x

y

(1,0,0)

(0,0,1)

)

1

0

0

,0(

)

0

1

0

2

90sin,

2

90)(cos

0

0

1

,0)(

0

1

0

2

90sin,

2

90(cos *

Point (1,0,0)

Quaternion rotation

Quaternion Example

• Rotate a point (1,0,0) about y-axis with 90 degrees

z

x

y

(1,0,0)

(0,0,1)

)

1

0

0

,0(

)

0

1

0

2

90sin,

2

90)(cos

0

0

1

,0)(

0

1

0

2

90sin,

2

90(cos *

Quaternion composition

Rotq (Rotp (v)) Rotq (p 0 v p 1)

qp 0 v p 1q 1

qp 0 v (qp) 1

Rotqp (v)

Rotation by p then q is the same as rotation by qp

Matrix Form

1

0

0

0

0

1

'

'

'

q

z

y

xq

z

y

x

1

)(

1

'

'

'

0

0

0

z

y

x

qRz

y

x

For a 3D point (x0,y0,z0)

Quaternion interpolation

1-angle rotation can berepresented by a unit circle

Quaternion interpolation

1-angle rotation can berepresented by a unit circle

2-angle rotation can berepresented by a unit sphere

Quaternion interpolation

• Interpolation means moving on n-D sphere

• Now imagine a 4-D sphere for 3-angle rotation

1-angle rotation can berepresented by a unit circle

2-angle rotation can berepresented by a unit sphere

Quaternion interpolation

Moving between two points on the 4D unit

Sphere:

• a unit quaternion at each step - another point on the 4D unit sphere

• move with constant angular velocity along the great circle between the two points on the 4D unit sphere

Quaternion interpolation

Direct linear interpolation does not workLinearly interpolated intermediate points are not uniformly spaced when projected onto the circle

Quaternion interpolation

Spherical linear interpolation (SLERP) Normalize to regain unit quaternion

Quaternion interpolation

Spherical linear interpolation (SLERP) Normalize to regain unit quaternion

Quaternion interpolation

Spherical linear interpolation (SLERP) Normalize to regain unit quaternion

Quaternions

• Can interpolate rotation well

• Compact representation

• Also easy to concatenate