44
1 Viewing Transformation Tong-Yee Lee

1 Viewing Transformation Tong-Yee Lee. 2 Changes of Coordinate System World coordinate system Camera (eye) coordinate system

  • View
    226

  • Download
    0

Embed Size (px)

Citation preview

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!!!