Download presentation
Presentation is loading. Please wait.
1
Viewing Transformation
Tong-Yee Lee
2
Changes of Coordinate System
World coordinate system Camera (eye) coordinate system
3
Default Camera Position and Orientation
The default camera is with eye at the origin (0,0,0) and the axis of the pyramid aligned with the z-axis. The eye is looking down the negative z-axis.
16
In this equation, a is world coordinate, B will convert
a to b (in another coordinate system)
17
Why B is orthonormal? In above equation, 0 is due to vi.vj=0 i!=j
18
b1=Bw->1aw aw=Bw->1Tb1=B-w->1b1 b2=Bw->2aw aw=Bw->2Tb2=B-w->2b2 B-w->1b1=B-w->2b2 Bw->1B-w->1b1= Bw->1B-w->2b2 b1= Bw->1B-w->2 b2= Bw->1B2->w b2
20
Consider a special case as v1=(1,0,0), v2=(0,1,0) and v3(0,0,1)
21
This is same as previous matrix composition by way of
a is coordinate in (v1,v2,v3) system (usually is world coordinate) b is coordinate in (u1,u2,u3) system B is easily remembered by carefully checking B The first row: u1 projects on three axes v1,v2,v3 The second row: u2 projects on three axes v1,v2,v3 The third row: u3 projects on three axes v1,v2,v3 How about B’ for c is coordinate in (w1,w2,w3) for b converted to c? (i.e. c=B’b) This is same as previous matrix composition by way of transforming to world coordinate
28
X axis vector Y axis vector Z axis vector
32
Intuitive Camera Specification
33
Not easy for user to pick up
exact up vector!! So, we compute v automatically from up vector.
34
n a b n b’ b
35
n a b Another way ……………….. a = b’ x n b = n x a
36
v1=(1,0,0), v2=(0,1,0) and v3(0,0,1)
38
Note that matrix storage order is column major
in OpenGL
39
u (i.e., x) axis n (i.e.,z) axis v (i.e., y) axis Treat yourself (viewer) as a airplane heading to –Zc Note that: as a viewer is moving, the object is moving in opposite direction on the viewing plane!!
40
This is z-like rotation
41
n v n’ v’ u n n’ u’ This is x-like rotation This is y-like rotation
42
How about pitch() and yaw()?
Same stories as roll(). Implementing pitch() and yaw(). void Camera :: pitch (float angle) { // pitch the camera through angle degrees around U float cs = cos( /180 * angle); float sn = sin( /180 * angle); Vector3 t(v); // remember old v v.set(cs*t.x + sn*n.x, cs*t.y + sn*n.y, cs*t.z + sn*n.z); n.set(-sn*t.x + cs*n.x, -sn*t.y + cs*n.y, -sn*t.z + cs*n.z); setModelViewMatrix(); } void Camera :: yaw (float angle) { // yaw the camera through angle degrees around V Vector3 t(n); // remember old v n.set(cs*t.x + sn*u.x, cs*t.y + sn*u.y, cs*t.z + sn*u.z); u.set(-sn*t.x + cs*u.x, -sn*t.y + cs*u.y, -sn*t.z + cs*u.z);
43
How about slide() Sliding a camera means to move it along one of its own axes-that is in the u,v,n direction-without rotating it. Along n means forward or backward Along u is left and right Along v is up and down Assume slide(delU, delV, delN)
44
Flythrough a Scene!!!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.