180 likes | 389 Views
Display Pipeline. Viewing pipeline. Viewing Pipeline. Transformation between spaces. Object space. transformations. transformations. World space. Eye space. Map to eye space. perspective. Clipping space. Perspective divide. Image space. Viewport mapping. Screen space. Ray Tracing.
E N D
Display Pipeline Viewing pipeline
Viewing Pipeline Transformation between spaces Object space transformations transformations World space Eye space Map to eye space perspective Clipping space Perspective divide Image space Viewport mapping Screen space
Ray Tracing Object space transformations transformations World space Eye space Map to eye space Trace rays Screen space
Transformations Px a b c d Py e h f i Pz j k l m 1 n o p q
Transformations 1 0 0 Tx Sx 0 0 0 0 0 1 Ty 0 0 Sy 0 0 0 1 Tz 0 0 Sz 0 0 0 0 1 0 0 0 1
Rotation 1 0 0 0 cos(q) -sin(q) 0 sin(q) cos(q) We know how to rotate about the global axes cos(q) 0 sin(q) 0 1 0 -sin(q) 0 cos(q) cos(q) -sin(q) 0 sin(q) cos(q) 0 0 0 1
Transformation round-off errors Rotate 5 degrees every frame M = 5 degree Rotation matrix Apply M to data in world space
Transformation round-off errors Rotate 5 degrees every frame m = 5 degree c = 0 degrees c = c + m M = rotation matrix Of c degrees Apply M to data in world space
Transformation round-off errors Rotate 5 degrees every frame M = 5 degree Rotation matrix C = Identity matrix C = C * M Apply C to data
Transformation round-off errors Rotate 5 degrees every frame m = 5 degree M = 5 degree Rotation matrix M = 5 degree Rotation matrix c = 0 degrees c = c + m C = Identity matrix Apply M to data in world space M = rotation matrix Of c degrees C = C * M Apply M to data in world space Apply C to data
Orientation Rotation about principle axes - fixed angles Rotation about object’s axes - Euler angles Axis-angle rotation Quaternion
Orientation 1 0 0 0 cos(q) -sin(q) 0 sin(q) cos(q) We know how to rotate about the global axes cos(q) 0 sin(q) 0 1 0 -sin(q) 0 cos(q) cos(q) -sin(q) 0 sin(q) cos(q) 0 0 0 1
y x z Fixed angles Rotate about global axes in a fixed order Rotating about global axes is what the rotation matrices do Can use most any triple of axes Rotate about x, then y, then z (10, 90, -45)
y x z Gimbal lock From some orientations, can’t do some rotations (0,90,0) Can’t rotate around x-axis
y x z Euler angles Rotate about axes of object Can use most any triple of axes Roll, Pitch, Yaw (10, 90, -45)
Equivalence of Fixed angles and Euler angles Ru(a) = Rx(a) Rv (b)Ru (a) = Rx(a)Ry (b)Rx (- a)Rx (a) = Rx (a)Ry (b) Rw (g) Rv (b)Ru (a) = Rx (a)Ry (b) Rz (g)
Quaternions Keep axis-angle orientation as 4-tuple Q = (s, x, y, z) = (s,v) Q1*Q2 = (s1,v1)*(s2,v2) = (s1*s2+v1*v2 , s1*v2 + s2*v1 + v1xv2) Q1+Q2 = (s1,v1)+(s2,v2) = (s1+s2, v1+v2)
Quaternions Keep axis-angle orientation as 4-tuple (sin(t/2), cos(t/2)*(x,y,z))