viewing transformation
DESCRIPTION
Viewing Transformation. Tong-Yee Lee. Changes of Coordinate System. World coordinate system. Camera (eye) coordinate system. 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 - PowerPoint PPT PresentationTRANSCRIPT
1
Viewing TransformationTong-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 theaxis of the pyramid aligned with the z-axis. The eye is lookingdown the negative z-axis.
4
5
6
7
8
9
10
11
12
13
14
15
16
In this equation, a is world coordinate, B will converta to b (in another coordinate system)
17
Why B is orthonormal?
0
0000
000
231322122111
332313222212
11211121
vvvv
vvuu
In above equation, 0 is due to vi.vj=0 i!=j
1
0000
001
131312121111
331313221212
11111111
vvvv
vvuu
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
19
20
Consider a special case as v1=(1,0,0), v2=(0,1,0) and v3(0,0,1)
21
a is coordinate in (v1,v2,v3) system (usually is world coordinate)b is coordinate in (u1,u2,u3) systemB is easily remembered by carefully checking BThe first row: u1 projects on three axes v1,v2,v3The second row: u2 projects on three axes v1,v2,v3The third row: u3 projects on three axes v1,v2,v3How about B’ for c is coordinate in (w1,w2,w3) for b converted toc? (i.e. c=B’b)
332313
322212
312111
uwuwuw
uwuwuw
uwuwuw
BThis is same as previousmatrix composition by way oftransforming to world coordinate
22
23
24
25
26
27
28
X axis vectorY axis vectorZ axis vector
29
30
31
32
Intuitive Camera Specification
33
Not easy for user to pick upexact up vector!!So, we compute v automaticallyfrom up vector.
34
n
a
b
nb’
b
35
n
a
b
Another way ………………..(1) a = b’ x n(2) b = n x a
36
v1=(1,0,0), v2=(0,1,0) and v3(0,0,1)
1
0
0
0
1
).,,(),,(
1000
z
y
x
zyx
zzyx
yzyx
xzyx
eye
eye
eye
V
neyeveyeueyeddd
dnnn
dvvv
duuu
V
37
38
1
0
0
0
1
).,,(),,(
1000
z
y
x
zyx
zzyx
yzyx
xzyx
eye
eye
eye
V
neyeveyeueyeddd
dnnn
dvvv
duuu
V
Note that matrix storage order is column majorin OpenGL
39
Treat yourself (viewer) as a airplane heading to –ZcNote that: as a viewer is moving, the object is moving inopposite direction on the viewing plane!!
u (i.e., x) axis n (i.e.,z) axis v (i.e., y) axis
40
vectorsunitallarevuvuNote
vuv
vuu
,,,:
)cos()sin(
)sin()cos(
This is z-like rotation
41
u’
u
n
n’ n
v
n’v’
vectorsunitallareununNote
unu
unn
,,,:
)cos()sin(
)sin()cos(
This is y-like rotation
This is x-like rotation
42
How about pitch() and yaw()?Same stories as roll().7.3.1. Implementing pitch() and yaw().void Camera :: pitch (float angle){ // pitch the camera through angle degrees around Ufloat cs = cos(3.14159265/180 * angle);float sn = sin(3.14159265/180 * angle);Vector3 t(v); // remember old vv.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 Vfloat cs = cos(3.14159265/180 * angle);float sn = sin(3.14159265/180 * angle);Vector3 t(n); // remember old vn.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);setModelViewMatrix();
}
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 backwardAlong u is left and rightAlong v is up and down
Assume slide(delU, delV, delN)
44
Flythrough a Scene!!!