Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 6: Biến đổi góc nhìn - Trịnh Thành Trung

Hệ tọa độ thực – World

Coordinate System (WCS)

• Là hệ tọa độ của đối

tượng được các chương

trình ứng dụng sử dụng

để mô tả tọa độ của các

đối tượng trong thế giới

thực.

• Đơn vị trong hệ thống tọa

độ phụ thuộc vào không

gian và kích thước của

đối tượng được mô tả, có

thể từ A0, nm, mm . đến

m, km .

• Modeling Coordinate

Hệ tọa độ thực5

Hệ tọa độ thiết bị (Device Coordinate System)

• Là hệ thống tọa độ của thiết bị nơi hiển thị hình

ảnh và không gian của đối tượng mà ứng dụng

mô tả.

pdf 44 trang kimcuc 4720
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 6: Biến đổi góc nhìn - Trịnh Thành Trung", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 6: Biến đổi góc nhìn - Trịnh Thành Trung

Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 6: Biến đổi góc nhìn - Trịnh Thành Trung
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
Trịnh Thành Trung 
trungtt@soict.hust.edu.vn 
Bài 6 
BIẾN ĐỔI GÓC NHÌN 
1 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
NỘI DUNG 
1. Biến đổi góc nhìn 2D 
2. Biến đổi trục tọa độ 
3. Biến đổi góc nhìn 3D 
4. Di chuyển Camera 
2 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
BIẾN ĐỔI GÓC NHÌN 2 CHIỀU 
1 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
4 
Hệ tọa độ thực – World 
Coordinate System (WCS) 
• Là hệ tọa độ của đối 
tượng được các chương 
trình ứng dụng sử dụng 
để mô tả tọa độ của các 
đối tượng trong thế giới 
thực. 
• Đơn vị trong hệ thống tọa 
độ phụ thuộc vào không 
gian và kích thước của 
đối tượng được mô tả, có 
thể từ A0, nm, mm ... đến 
m, km ... 
• Modeling Coordinate 
Hệ tọa độ thực 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
5 
Hệ tọa độ thiết bị (Device Coordinate System) 
• Là hệ thống tọa độ của thiết bị nơi hiển thị hình 
ảnh và không gian của đối tượng mà ứng dụng 
mô tả. 
Hệ tọa độ thiết bị 
Thiết bị hiển thị 
subselect.me 
Vùng tọa độ thiết bị 
VGA=640x480 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
6 
• Chuyển đổi hệ tọa độ -> Sử dụng hệ tọa độ 
chuẩn – Normalized Coordinate System (NCS) 
• Giải quyết vấn đề khi ứng dụng chạy trên các 
thiết bị khác nhau 
• Có kích thước 1x1 
Hệ tọa độ chuẩn 
WCS chuyển đổi 1 NCS DCS chuyển đổi 2 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
7 
• Phép biến đổi góc nhìn cơ bản là chuyển đổi từ 
hệ tọa độ mô hình sang hệ tọa độ màn hình 
(Modelling co-ordinates to Screen Coordinates) 
• Vấn đề: 
– Thay đổi tỷ lệ hình ảnh 
– Hiệu ứng về tỉ lệ khi Zoom hình ảnh 
– Phần nào của hình vẽ sẽ hiển thị ? 
– Hiển thị tại đâu trên màn hình ? 
– Chuyển đổi sẽ được thực hiện ra sao? 
Phép biến đổi góc nhìn cơ bản 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
8 
• Window : Cửa sổ, Phần hình ảnh của thế giới 
thực sẽ được hiển thị 
• Viewport : Cổng nhìn, vùng màn hình nơi hình 
ảnh thế giới thực sẽ hiển thị 
Trong hệ tọa độ 2 chiều 
(wxmin,wymin) 
(wxmax,wymax) 
(vxmin,vymin) 
(vxmax,vymax) 
(wx,wy) (vx,vy) 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
PHÉP CHUYỂN ĐỔI 
9 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
PHÉP BIẾN ĐỔI THEO 
MA TRẬN 
• Ma trận chuyển vị theo Window 
• Ma trận biến đổi tỉ lệ 
• Ma trận chuyển vị theo tọa độ viewport 
10 
1
010
001
1
YwXw
T ][
100
0
minmax
minmax
0
00
Xwmin-Xwmax
Xvmin-Xvmax
]1[
YwYw
YvYv
S
1
010
001
]2[
YvXv
T
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
11 
Ma trận biến đổi tổng hợp 
1 
min max 
min max 
min min 
Xwmin - Xwmax 
Xvmin - Xvmax 
min min 
0 
min max 
min max 
0 
0 0 
Xwmin - Xwmax 
Xvmin - Xvmax 
] [ 
] 2 [ ] 1 [ ] 1 [ ] [ 
Yw Yw 
Yv Yv 
Yw Yv Xw Xv 
Yw Yw 
Yv Yv 
T 
T x S x T T 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
Ví dụ trong OpenGL 
//set the viewing coordinates 
setWindow(xmin, xmax, ymin, ymax); 
setViewport(0,640,0,480); 
glBegin(GL_POINTS); 
for(GLdouble x = xmin; x < xmax; x+=0.005 ) 
{ 
 glVertex2d(x, pow(2.7183,-x) 
*cos(2*3.14*x)); 
} 
glEnd(); 
12 
//----------- setWindow -------------- 
void setWindow(GLdouble left, Gldouble 
right, GLdouble bottom, GLdouble top) 
{ 
 glMatrixMode(GL_PROJECTION); 
 glLoadIdentity(); 
 gluOrtho2D(left, right, bottom, top); 
} 
//----------- setViewport -------------- 
void setViewport(GLdouble left, Gldouble 
right, GLdouble bottom, GLdouble top) 
{ 
 glViewport(left, bottom, right – left, 
top - bottom); 
} 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
BIẾN ĐỔI HỆ TỌA ĐỘ 
2 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
14 
• Là phép biến đổi trên hệ tọa độ của đối tượng. 
Việc thay đổi hệ tọa độ của đối tượng với hệ 
thống tọa độ chung tao nên sự thay đổi toàn 
cảnh 
Biến đổi hệ tọa độ 
(1,1) 
u’ 
v’ 
(1,1) 
u 
v 
x 
y 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
CÁC PHÉP BIẾN ĐỔI 
15 
x 
y 
x 
y 
P
100
010
001
Q
(1,1) 
u 
v 
(1,1) 
u’ 
v’ 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
16 
Chuyển vị 
1
ty
tx
O
x 
y 
x 
y 
P
100
10
01
Q
 ty
tx
(1,1) 
u 
v 
(1+tx,1+ty) 
u’ 
v’ 
11
0
0
ty
tx
ty
tx
100
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) 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
17 
Xoay 
1
0
0
O
x 
y 
x 
y 
P
100
0
0
Q
 

cossin
sincos
(1,1) 
u 
v 
1
sin
cos


v
1
cos
sin


u
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
Tỉ lệ 
18 
x 
y 
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
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
Phép biến đổi tổng hợp 
19 
100
sin)cos1(cossin
sin)cos1(sincos
11
11


xy
yx
M
x 
y 
x 
y 
(1,1) 
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 = 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
BIẾN ĐỔI GÓC NHÌN 3 CHIỀU 
3 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
21 
• Hiển thị hình ảnh 3D trên 
các thiết bị 2D 
• 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 
• 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 
Quan sát 3D - 3D Viewing 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
GÓC NHÌN 
22 
 xW 
 zW 
 yW 
yM 
xM 
zM 
pM 
pV 
pW 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
23 
• Để 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 
• Chuyển đổi từ đối tượng 3D sang 2D 
• Xác định vùng hiển thị của đố tượng 
• Xác định camera để có thể tạo thành phép chiếu 
từ 3D thành 2D. 
Tiến trình quan sát 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
Khái niệm 
• camera location: Vị trí trong 
thế giới thực 
• viewing direction: Hướng chiếu 
của Camera. 
• up vector: Hướng phía trên của 
Camera 
• aperture size: Vùng nhìn thấy 
của Camera 
Khái quát về camera 
24 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
Tọa độ quan sát 
• 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): xác định góc 
nghiêng của camera 
25 
),,( 321 nnn 
N
N
n
),,( 321 uuu 
NV
NV
u
),,( 321 vvv unv
Các véctơ cơ bản: 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
26 
Camera luôn nhìn về trục âm của trục tọa độ z 
 (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 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
27 
• (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 
• Ma trận biến đổi tọa độ thế giới sang tọa độ quan 
sát 
• MWC,VC = R T 
 27 
. và , , 
3
2
1
3
2
1
3
2
1
n
n
n
v
v
v
u
u
u
nvu
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
28 
• Với điểm quan sát VRPoint (x0, y0, z0) các phép biến đổi góc 
nhìn có thể được xác định bằng tổ hợp của hai biến đổi 
• Phép tính này được sử dụng để xác định vị trí của từng điểm 
trong hệ tọa độ của camera 
3D Viewing Transformation 
1000
100
010
001
0
0
0
z
y
x
T
1000
0
0
0
321
321
321
nnn
vvv
uuu
R
TRM VCWC , xx vcwc
,M 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
29 
• Chúng ta cũng có thể thực hiện được việc này 
qua hai bước 
– Dịch chuyển điểm nhìn về tâm tọa độ của hệ 
trục tọa độ môi trường 
– Thực hiện việc xoay để lần lượt khớp các trục 
xv, yv và zv 
Viewing Transformation 
(x0, y0, z0) 
1000
100
010
001
0
0
0
z
y
x
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
30 
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 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
31 
• 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. 
x
W 
zW 
yW y
M 
x
M 
z
M 
p
M 
pV 
p
W 
x
W 
zW 
y
W 
p
M 
p
W 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
• Các hàm cơ bản 
– glOrtho() and 
gluLookAt() 
– sử dụng để tạo các phép 
chiếu song song 
• gluPerspective 
– viewAngle 
– aspectRatio (W/H) 
– near plane 
– far plane 
Camera trong OpenGL 
32 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
CAMERA TRONG OPENGL 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluPerspective(viewAngle, 
aspectRatio, N, F); 
33 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
34 Demo : Viewing from Nate Robins (Utah) 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
DI CHUYỂN CAMERA 
4 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
36 
• Đặt vị trí Camera 
– Camera được đặt sử dụng kết hợp dịch chuyển và 
xoay 
– Camera được đặt cùng vị trí với mắt của người nhìn 
Camera 
eye(x,y,z) 
lookat(x,y,
z) 
up(x,y,z) 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
CAMERA TRONG OPENGL 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
gluLookAt(eye.x, eye.y, eye.z, 
 look.x, look.y, look.z, 
 up.x, up.y, up.z); 
37 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
38 
• Camera có thể có 
các hướng và vị trí 
tùy ý 
• Do đó chúng ta có 
thể coi như camera 
có các trục tọa độ 
riêng của nó 
Camera 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
39 
• Một camera có thể có 6 hướng di chuyển 
– "trượt" theo 3 hướng 
– "xoay" theo 3 hướng 
• Chuyển động của camera 
– Camera có thể dịch chuyển tịnh tiến theo 3 
hướng 
– Việc này được gọi là "trượt" (slide) camera 
Chuyển động của camera 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
40 
• Chuyển động của camera 
– Để dịch chuyển camera theo trục u đơn giản là ta 
thực hiện 
• eye = eye + Du 
– Di chuyển camera theo trục bất kỳ 
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 
• Chuyển động của camera 
– Bên cạnh việc di chuyển camera sang các vị trí khác, 
camera có thể được xoay nghiêng theo các hướng 
khác nhau để nhìn các vùng khác nhau của khung 
cảnh 
Camera 
u 
v 
n 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
CAMERA MOVEMENT 
41 
– Sử dụng nguyên lý lái máy bay để 
mô tả chuyển động của camera 
• Quay dọc theo chiều dài camera gọi là 
PITCH 
• Quay dọc theo chiều rộng camera gọi 
là ROLL 
• Quay dọc theo trục dọc gọi là YAW 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
CÁC CHUYỂN ĐỘNG CỦA 
CAMERA 
• Pitch 
v’ = cos(θ)v – sin(θ)n 
n’ = sin(θ)n + cos(θ)v 
42 
n 
v 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
CÁC CHUYỂN ĐỘNG CỦA 
CAMERA 
• Roll 
u’ = cos(θ)u + sin(θ)v 
v’ = cos(θ)v - sin(θ)u 
43 
u 
v 
©
 C
o
p
yrigh
t Sh
o
w
eet.co
m
- 
CÁC CHUYỂN ĐỘNG CỦA 
CAMERA 
• Yaw 
– n’ = cos(θ)n - sin(θ)u 
– u’ = sin(θ)n + cos(θ)u 
44 
u 
n 

File đính kèm:

  • pdfbai_giang_cong_nghe_do_hoa_va_hien_thuc_ao_bai_6_bien_doi_go.pdf