Bài giảng Computer graphics and virtual reality - Bài 4: Các phép biến đổi Đồ hoạ - Lê Tấn Hùng

Phép biến đổi Transformations

z Biến đổi mô hình hoá - Modeling transformations

– build complex models by positioning simple

components

z Biến đổi tạo góc nhìn - Viewing transformations

– placing virtual camera in the world

– transformation from world coordinates to camera

coordinates

z Biến Phép chiếu – Projection Transform

 

pdf16 trang | Chuyên mục: Đồ Họa Máy Tính | Chia sẻ: yen2110 | Lượt xem: 323 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Computer graphics and virtual reality - Bài 4: Các phép biến đổi Đồ hoạ - Lê Tấn Hùng, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
00
10
01
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡ +
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
1
1
1
0
1
ty
tx
ty
tx
100
10
01
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
+=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
1
1
1
1
0
ty
tx
ty
tx
100
10
01
origin v (1, 0, 0) u (0, 1, 0)
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
1
ty
tx
O
52
x
y
Rotation
x
y
P
100
0
0
Q
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡ −
= θθ
θθ
cossin
sincos
(1,1)
u
v
u’
v’
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
1
sin
cos
θ
θ
v
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡−
=
1
cos
sin
θ
θ
u
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
1
0
0
O
53
x
y
Scaling
x
y
P
100
0
0
Q
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
= sy
sx
0
0
(1,1)
u
v
(sx*1,sy*1)
u
v
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
1
0
0
O
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
1
0
syu
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
1
0
sx
v
54
Composite Transformations
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
−−
+−−
=
100
sin)cos1(cossin
sin)cos1(sincos
11
11
θθθθ
θθθθ
xy
yx
M
x
y
x
y
(1,1)
u
v
u’
v
’
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−−
+−
1
sin)cos1(
sin)cos1(
11
11
θθ
θθ
yy
yx
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−−+
+−+
1
sin)cos1(sin
sin)cos1(cos
11
11
θθθ
θθθ
yy
yx
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−−+
+−+−
1
sin)cos1(cos
sin)cos1(sin
11
11
θθθ
θθθ
yy
yx
O = 
v = 
u = 
Khoa CNTT - DDHBK Hà nội
hunglt@it-hut.edu.vn
8682595
10
55
+
=
+
transform +transform
+
transform
Obviously we want 
something more 
versatile
56
Quan sát 3D - 3D Viewing
z Hiển thị hình ảnh 3D trên các thiết bị 
2D
z Mỗi 1 quan sát 3D trên cùng 1 đối 
tượng chỉ ra trạng thái chiếu của 
điểm quan sát đó.
– HÌnh ảnh chiếu 2D của đối tượng 3D
phụ thuộc vào người quan sát
z Các quan sát khác nhau được phân 
biệt bởi thông số: vị trí position, hướng 
orientation, và vùng nhìn field of view
57
Viewing
xW
zW
yW
yM
xM
zM
pM
yV
xV
-zV pV
pW
modeling 
coordinate Modeling 
transformation
world 
coordinate
viewing 
coordinate (eye coordinate)Viewing 
transformation
58
The Viewing Process
z Để tạo 1 cảnh nhìn gồm các bước
– Mô tả biểu diễn hình học 
– Định nghĩa điểm nhìn – Camera
z Chuyển đổi từ đối tượng 3D sang 2D
z Xác định vùng hiển thị của đố tượng
z Xác định camera để có thể tạo thành phép 
chiếu từ 3D thành 2D.
59
Khái quát về - Camera Analogy
z Khái niệm
z camera location: Vị trí trong thế 
giới thực
z viewing direction: Hướng chiếu 
của Camera. 
z up vector: Hướng phía trên của 
Camera
z aperture size: Vùng nhìn thấy của 
Camera
60
Viewing Coordinates
z Có thể sử dụng mô hình hệ 
thống tọa độ quan sát trên các 
thông số gồm:
– Điểm nhìn (VRP View Reference 
Point ): điểm gốc quan sát. Vị trí của 
Camera)
– Vector mặt phẳng quan sát (VPN 
View Plane Normal vector ): viewing 
direction)
– Vector hướng quan sát (VUP View 
UP vector ): establishes orientation of 
“camera”
),,( 321 nnn== N
Nn
),,( 321 uuu=×
×=
NV
NVu
),,( 321 vvv=×= unv
Three mutually orthogonal 
basis vectors:
Khoa CNTT - DDHBK Hà nội
hunglt@it-hut.edu.vn
8682595
11
61 61
Ví dụ: Viewing Transformation
(i) simple cases ( always view along negative z-axis )
(0, 0, z)
Điểm nhìn trên trục Z
zW -axis
zW
xW
yW
n
MWC,VC = T (0, 0, z,)
(a, b, c)
Nhìn ở vị trí (a, b, c) theo trục Z và 
ngược hướng zW-axis 
MWC,VC = T (-a, -b, -c )
zW
xW
yW
62 62
.and , , 
3
2
1
3
2
1
3
2
1
⎟⎟
⎟⎟
⎠
⎞
⎜⎜
⎜⎜
⎝
⎛
=
⎟⎟
⎟⎟
⎠
⎞
⎜⎜
⎜⎜
⎝
⎛
=
⎟⎟
⎟⎟
⎠
⎞
⎜⎜
⎜⎜
⎝
⎛
=
n
n
n
v
v
v
u
u
u
nvu
Ma trận biến đổi tọa độ thế giới sang tọa độ quan sát :
MWC,VC = R T
(xw, yw, zw) and (u, v, n) 2 hệ tọa độ với cùng 1 gốc.
Vector đơn vị (u, v, n) được định nghĩa theo WCS
63
3D Viewing Transformation
z Với điểm quan sát VRPoint (x0, y0, z0) the Viewing 
Transformation can be defined by composition of the 
following two transformations:
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−
−
−
=
1000
100
010
001
0
0
0
z
y
x
T
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
=
1000
0
0
0
321
321
321
nnn
vvv
uuu
R
TRM •=VCWC ,
This is used to determine the location of each vertex in the 
camera co-ordinate system
xx vcwc
rr
,M=′
64
Viewing Transformation
z We might also achieve this in terms of the following 
transformation sequence:
– Translate the view reference point to the origin of the world co-
ordinate system
– Apply Rotations to align xv, yv and zv, axes, respectively
(x0, y0, z0)
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−
−
−
1000
100
010
001
0
0
0
z
y
x
65 65
where ,
1000
0
0
0
321
321
321
⎟⎟
⎟⎟
⎟⎟
⎠
⎞
⎜⎜
⎜⎜
⎜⎜
⎝
⎛
=
nnn
vvv
uuu
R
Verification: etc , ? =
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
= 
1
3
2
1
u
u
u
R uR 
pV = MWC,VC pW
xW
zW
yW
pM
pW
pV
yV
xV -zV
66
• Recall we’ve re-expressed our world geometry in eye’s frame 
reference.
• To do projection, we use a synthetic camera by introducing a 
viewing frustum after the viewing transformation. 
66
xW
zW
yW
yM
xMzM
pM
yV
xV
-zV pV
pW
xW
zW
yW
pM
pW
Khoa CNTT - DDHBK Hà nội
hunglt@it-hut.edu.vn
8682595
12
67
Camera trong OpenGL
z Các hàm cơ bản
– glOrtho() and gluLookAt()
– these created parallel projections
z We now want to modify a scene to give us 
perspective projections.
– lines converge as they get further away
68 68
Demo : Viewing
from Nate Robins 
(Utah)
69
The Camera
z Khởi tạo Camera với phép 
chiếu phối cảnh
– Thay cho glOrtho() bằng:
– gluPerspective()
z gluPerspective
– viewAngle
– aspectRatio (W/H)
– near plane 
– far plane
70
The Camera
z The Perspective Camera
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(viewAngle, aspectRatio, N, F);
71
The Camera
z Positioning the Camera
– The camera is positioned using a combination 
of translations and rotations.
– Think if the camera being in the same location 
as the viewers eye.
72
The Camera
eye(x,y,z)
lookat(x,y,z)
up(x,y,z)
Khoa CNTT - DDHBK Hà nội
hunglt@it-hut.edu.vn
8682595
13
73
The Camera
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(eye.x, eye.y, eye.z, 
look.x, look.y, look.z, 
up.x, up.y, up.z);
74
The Camera
z The camera can have an arbitrary orientation and 
position.
z Therefore we can think of the camera having its own 
axes.
75
Camera Movement
z A camera has six degrees of freedom:
1. slid in 3 directions; and
2. rotated in 3 directions
z Camera Movement
– The camera can move along its axes.
– This is called sliding the camera.
76
The Camera
z Camera Movement
– To move the camera along the u axis you would simply perform 
z eye = eye + Du
– To move slide the camera in any direction:
eye.x = dU*u.x + dV*v.x + dN*n.x
eye.y = dU*u.y + dV*v.y + dN*n.y
eye.z = dU*u.z + dV*v.z + dN*n.z
z Camera Movement
– Besides physically moving the camera to another location
– the camera can be tilted in different directions to look at 
different parts of the scene.
u
v
n
77
The Camera
z Camera Movement
– Besides physically moving the camera to another 
location
– the camera can be tilted in different directions to look 
at different parts of the scene.
78
The Camera - Camera Movement
We use a plane analogy to describe the cameras 
movement.
z a rotation from the horizontal along the length is called PITCH
z a rotation from the horizontal along the width is called ROLL
z a rotation around the vertical is called YAW
Khoa CNTT - DDHBK Hà nội
hunglt@it-hut.edu.vn
8682595
14
79
The Camera
z Pitch
v’ = cos(θ)v – sin(θ)n
n’ = sin(θ)n + cos(θ)v
n
v
80
The Camera
z Roll
u’ = cos(θ)u + sin(θ)v
v’ = cos(θ)v - sin(θ)u
u
v
81
The Camera
z Yaw
n’ = cos(θ)n - sin(θ)u
u’ = sin(θ)n + cos(θ)u
u
n
82
A 3D Scene
z Notice the presence of
the camera, the
projection plane, and 
the world
coordinate axes
z Viewing transformations define how to acquire the image 
on the projection plane
83
Viewing Transformations
z Create a camera-centered view
z Camera is at origin
z Camera is looking along negative z-axis
z Camera’s ‘up’ is aligned with y-axis
84
2 Basic Steps
z Align the two coordinate frames by rotation
Khoa CNTT - DDHBK Hà nội
hunglt@it-hut.edu.vn
8682595
15
85
2 Basic Steps
z Translate to align origins
86
Creating Camera Coordinate 
Space
z Specify a point where the camera is located in world 
space, the eye point
z Specify a point in world space that we wish to become 
the center of view, the lookat point
z Specify a vector in world
space that we wish to 
point up in camera 
image, the up vector
z Intuitive camera 
movement
87
Constructing Viewing 
Transformation, V
z Create a vector from eye-point to lookat-point
z Normalize the vector
z Desired rotation matrix should map this 
vector to [0, 0, -1]T Why?
88
Constructing Viewing 
Transformation, V
z Construct another important vector from the 
cross product of the lookat-vector and the vup-
vector
z This vector, when normalized, should align with 
[1, 0, 0]T Why?
89
Constructing Viewing 
Transformation, V
z One more vector to define
z This vector, when normalized, should align with [0, 1, 0]T
z Now let’s compose the results
90
Compositing Vectors to Form V
z We know the three world axis vectors (x, y, z)
z We know the three camera axis vectors (r, u, l)
z Viewing transformation, V, must convert from world to 
camera coordinate systems
Khoa CNTT - DDHBK Hà nội
hunglt@it-hut.edu.vn
8682595
16
91
Compositing Vectors to Form V
z Remember
– Each camera axis vector is unit length.
– Each camera axis vector is perpendicular to others
z Camera matrix is orthogonal and normalized
– Orthonormal
z Therefore, M-1 = MT
92
Compositing Vectors to Form V
z Therefore, rotation component of viewing 
transformation is just transpose of computed 
vectors
93
Compositing Vectors to Form V
z Translation component too
z Multiply it through
94
Final Viewing Transformation, V
z To transform vertices, use this matrix:
z And you get this:

File đính kèm:

  • pdfbai_giang_computer_graphics_and_virtual_reality_bai_4_cac_ph.pdf