Download presentation
Presentation is loading. Please wait.
Published byMagdalen Woods Modified over 9 years ago
1
Animating Rotations and Using Quaternions
2
What We’ll Talk About Animating Translation Animating 2D Rotation Euler Angle representation 3D Angle problems Quaternions Animating with quaternions
3
Review: Translation P = X Y Z 1 T = 1 tx 1 ty 1tz 1 P’ = TP =x + tx y + ty z + tz 1 Animation: interpolate over tx,ty,tz in T Move from (10,20,30) to (10,50,40), in time = 0 to 10 ∆x = (50-20)/10 ∆y = (40-30)/10 1 10 1 20 130 1 1 10 1 23 131 1 1 10 1 26 132 1 1 10 1 50 140 1 Time = 0 Time = 1Time = 2Time = 10 … Translation 2D Rotation 3D Rotation Euler Problems Quaternions Q. Animation
4
Review: 2D Rotation 2D Rotation 3D Rotation Euler Problems Quaternions Q. Animation R = cos Ө -sin Ө sin Ө cos Ө 1 P’ = RP Ө Animating 2D Rotations timeRotation 00 390 Number of frames: 3 ∆R = (90-0)/3 = 30 cos 0 -sin 0 sin 0 cos 0 1 cos 30 -sin 30 sin 30 cos 30 1 cos 60 -sin 60 sin 60 cos 60 1 cos 90 -sin 90 sin 90 cos 90 1
5
Review: 3D Rotations 3D Rotation Euler Problems Quaternions Q. Animation Rx = 1 cos Ө -sin Ө sin Ө cos Ө 1 Ry = cos Ө sin Ө 1 - sin Ө cos Ө 1 Rz = cos Ө - sin Ө sin Ө cos Ө 1 1 Orientation specified by a combination of rotations in a predetermined order: RxRyRz
6
Euler Angles Euler’s Theorem: any orientation can be expressed as a single rotation about an axis Can lead to Gimbal lock Gives you the basic idea Euler representation is good basis for calculating quaternions, which work well Ideas: –Orientation represented by an angle and an (x,y,z) vector, e.g. (A 1, Ө 1 ) –Axes represent local coordinate system, not global Rotation order is reverse of global, i.e. RzRyRx Euler Quaternions Q. Animation
7
Determine axis of rotation from 1st line a to second line b: cross product a x b Determine angle between lines dot product = |a| |b| cos Ø Ø = acos ( a b/ (|a||b|) ) note: normalized angle Animation with k = 0..1 : axis k = rotate(k Ø ) a angle k = (1-k)Ө 1 +kӨ 2 Euler Quaternions Q. Animation Euler Angles Ø Ө1Ө1 Ө2Ө2
8
Can you do it? Line 1: P1 = (0,1,0) P2 = (1,0,1) Line 2: Q1 = (1,1,1) Q2 = (3,3,3) Cross product: (-4,0,-4) acos ab/|a||b| acos(2/(√3 * 2√3) = acos(1/3) = 70.5 degrees xyz 11 222
9
Motivation We would like to represent 3D rotations about an arbitrary axis We would like to be able to apply a series of arbitrary rotations and have it actually work.. –Direct interpolation of matrices leads to nonsense –Gimbal lock occurs when the axes of two of the three gimbals needed to compensate for rotations in 3D space are driven to the same direction, e.g. (0,90,0) Problems Euler Quaternions Q. Animation
10
What is a quaternion? Alternative to Euler angles for specifying orientation 4-tuple: use 3 numbers for axis of rotation + 1 for angle of rotation Let q be a quaternion: q = s,v = s, v x, v y, v z = s + v x i + v y j + V z k Quaternions Q. Animation
11
Quaternion algebra A.i 2 = j 2 = k 2 = -1 = i-j-k B.ij = k = -ji jk = i = -kj ki = j = -ik C.q 1 + q 2 = (s 1 + s 2, v 1 + v 2 ) D.q 1 *q 2 = q 3 if s 1 = s 2 = 0, then q 3 = (v 1 v 2,v 1 x v 2 ) general: q 3 = (s 1 s 2 - v 1 v 2, s 1 v 2 +s 2 v 1 + v 1 x v 2 ) E.q 1 q 2 = (s 1 s 2 + v 1 v 2 ) Quaternions are like complex numbers, with one normal component and 3 imaginary components, i,j,k. (a+bi)(c+di) = (ac-bd) +(cb-ad)i Quaternions Q. Animation
12
Not all Quaternions Represent Rotations Only unit-length quaternions are rotations || q || = sqrt( s 2 + v v) = 1 q = 1/||q|| [s,v] q -1 = 1/||q|| 2 [s,-v] The inverse rotation is rotation by the same amount by the negative axis Unit quaternion defined by q = (cos Ө/2, sin Ө/2[x,y,z]) Quaternions Q. Animation
13
Suppose I had an Euler Rotation… 1.q = (cos Ө/2, sin Ө/2[x,y,z]) where Ө and (x,y,z) are the Euler angle and axis respectively 2.Normalize using quaternion normalization rules: q
14
Note: q = -q = (-s,-v) = cos (-Ө/2), sin(-Ө/2)[-x,-y,-z] = cos (Ө/2), -sin(Ө/2)[-x,-y,-z] =( cos (Ө/2), sin(Ө/2)[x,y,z] ) Quaternions Q. Animation
15
Convert Q to matrix form M = 1-2y 2 -2z 2 2xy + 2sz 2xy -2sy 2xy + 2sz 1-2x 2 -2z 2 2yz – 2sx 2xz – 2sy 2yz – 2sx 1-2x 2 -2y 2 Quaternions Q. Animation
16
Rotating a point p by q Rq(p) = q p q where q = [s,-v] (conjugate of q) where p = [0,(p x, p y, p z )] Rq(p) = [s,v][0,p][s,-v] =[0,(s 2 -v v)p + 2v(v p) +2s(v x p)] Quaternions Q. Animation
17
Consecutive Rotations R 2 (R 1 (p)) q 2 (q 1 p q 1 )q 2 = (q 2 q 1 ) p (q 2 q 1 ) =R 21 (p) Very convenient…
18
Note about conjugates q = [s,-v] q -1 = 1/|q| 2 q (normalize!!) For unit quaternions, q -1 = q
19
Animating Rotations Using Quaternions How to find intermediate rotations? A.Linear interpolation: lerp( q 1, q 2, u) = q 1 (1-u) + uq 2 Advantage: easier to find q’ vs. animating rotation matrix Problem: will speed up in the midst of rotation Ө q1q1 q2q2 q: point on a 4D unit sphere
20
Animating Rotations Using Quaternions B.Spherical Interpolation s lerp( q 1, q 2, u) = [sin(1-u) Ө/sin Ө ] q 1 + [sin uӨ/sin Ө ] q 2 Where q 1 q 2 = cos Ө (note: use smaller Ө ) Why? Plane trigonometry a = b = c sin sin ß sin a b c ß Spherical Trigonometry Same formula, but a,b,c are arc lengths a b c ß
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.