viewing transformation

Post on 20-Jan-2016

39 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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 Presentation

TRANSCRIPT

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

top related