Tải bản đầy đủ (.pdf) (36 trang)

Bài giảng Đồ họa máy tính: Đồ họa ba chiều - Ngô Quốc Việt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.1 MB, 36 trang )

ĐỒ HỌA BA CHIỀU

NGÔ QUỐC VIỆT
2009











Giới thiệu.
Biểu diễn đối tượng đồ họa ba chiều
Một số cơng thức hình học
Các phép chiếu.
Mặt ba chiều có quy luật
Bài tập
Giải đáp thắc mắc

2





OpenGL-GLUT (thư viện đồ họa 3D)
Graphics Gems I, II, III, IV (mã nguồn mở).



3


Modeling
Transformation
Lighting

Biến đổi vô hệ toạ độ thế giới 3D
Chiếu sáng theo ánh sáng và độ phản chiếu

Viewing
Transformation

Biến đổi vô hệ toạ độ 3D camera

Projection
Transformation

Biến đổi vô hệ toạ độ màn hình into 2D

Clipping
Scan
Conversion
Image

Loại bỏ thực thể ngồi vùng nhìn của camera
Vẽ pixel (dán ảnh, khử mặt khuất, …
4





Mơ hình đối tượng ba chiều
 Points
 Wire frame
 Mesh
 Solid



Đồ họa OpenGL với thư viện GLUT.

5




Nguyên tắc bàn tay trái và bàn tay phải



Right-hand được sử dụng trong OpenGL

6




Góc xoay dương


7







Thông qua ma trận chiếu 4x4. Gồm
MODELVIEW và PROJECTIONVIEW.
Model View: Tác động trực tiếp lên đối tượng
(hay scene), vị trí camera. Sử dụng
glMatrixView(GL_MODELVIEW).
Projection View: mô tả kiểu camera. Phép
biến đổi tác động lên camera (lens, field of
view). glMatrixView(GL_PROJECTION).
8





3D Cartesian coordinate system.
Gốc (0,0,0) tại tâm màn hình.

Nguồn -Greg Sidelnikov
9









Toạ độ đối tượng là toạ độ thô chuyển cho OpenGL với
các hàm glVertex*().
Toạ độ đối tượng được chuyển thành toạ độ mắt nhìn
với phép biến đổi qua ma trận ModelView .
Toạ độ mắt nhìn đượ chuyển thành toạ độ Clip qua ma
trận Projection.
Toạ độ clip X, Y, Z được chuyển thành Clip Coordinate W
để tạo ra Normalized Device Coordinates
Normalized Device Coordinates được tỉ lệ và tịnh tiến
qua các tham số viewport để tạo ra toạ độ Window
10








Ma trận ModelView chứa cả hai phép biến đổi
cho mô hình và mắt nhìn. Mắt nhìn tại gốc,
với hướng nhìn dọc theo trục Z âm.
Toạ độ xén do biến đổi toạ độ mắt nhìn qua
ma trận Projection. Miền giá trị toạ độ của 3

trục từ -Wc đến Wc.
Phối cảnh thực hiện trên Clip Coordinates tạo
ra Normalized Device Coordinates, với miền
giá trị -1 to 1 cho cả 3 trục
Ngô Quốc Việt-2010

11


Chiếu song song

Chiếu phối cảnh (Perspective)

12


Mặt xén gần

Mặt xén xa

Mặt phẳng chiếu

Khối nhìn (view volume)

13






Hướng chiếu vng góc với mặt phẳng chiếu
Hướng chiếu đồng nhất ở mọi điểm

Chiếu xuống mặt XY
Tương tự cho chiếu
xuống mặt XA,YZ.

Top

Side

14


glOrtho(GLdouble left, Gldouble right, GLdouble bottom,
GLdouble top, GLdouble nearVal, GLdouble farVal);


Nhân ma trận hiện hành với ma trận trực giao:
2


 right  left

0



0



0


0
2
top  bottom
0
0


tx 
right  left
tx  

right  left

0
ty 
top  bottom
; ty  

top  bottom
2
tz 
farVal  nearVal
t


 x

farVal  nearVal
farVal  nearVal
0
1 
0

15




Hướng chiếu không trực giao với mặt phẳng chiếu

  45

Cavalier
o
(DOP  = 45 )

  63.4

Cabinet
o
(DOP  = 63.4 )

16


x p  x  ( zvp  z )


Vp

V px
V pz


1


0

0
0


0 
1 
0
0

V px
V pz
V py
V pz
1
0

V px 
zvp


V pz 
V py 
zvp

V pz 
0 
1 

HB Matrix 7-13

17





Đối tượng càng gần người xem  càng lớn.
Đường song song hội tụ tại một điểm

• Điểm hội tụ tại tâm màn hình
• Xác định bởi view frustum.

18


• Khi làm việc với đồ họa 3-D graphics, hãy xem màn
hình như cửa sổ hai chiều trong thế giới 3-D:

Thỏ cao bao nhiêu


19


• Sử dụng nguyên tắc tam giác đồng dạng. Xét hình
sau:
View
plane

X

P (x, y, z)

x’ = ?

(0,0,0)

Z
d

• x’ bằng bao nhiêu ?
20


• Kết quả của phép chiếu điểm [x, y, z, 1]T lên mặt
phẳng chiếu là:
x' x
 ,
d
z
dx

x
x' 

,
z
z d

y' y

d
z

dy
y
y' 

,
z
z d

zd

• Có thể biểu diễn dạng ma trận?

21




Xét một công thức chiếu phối cảnh của điểm 3D




Do góc trái trên màn hình là (0,0). Điểm (0,0,-16)
sẽ được chiếu ở tâm màn hình.
Giá trị HALFWIDTH và HALFHEIGHT là nửa độ
rộng và cao màn hình.



22






Giá trị ViewingDistance liên quan đến viewer.
ViewingDistance càng lớn  khối nhìn càng
nhỏ  đối tượng càng nhỏ.
Có mâu thuẫn gì với cơng thức ?

23











Viewing Volume cò được gọi là
Clipping volume hoặc Frustum.
Mặt phẳng gần và mặt xén xa
Mọi thứ sau mặt xén xa thì
invisible
Frustum là khơng gian giữa hai
mặp phẳng.
Viewing Distance là khoảng cách
giữa viewer và mặt gần.
Chỉ nhìn thấy những gì trong
view volumn.

Nguồn -Greg Sidelnikov

24


1
0
Mperspective  
0

0
 x  1
 y  0



 z  0

 
 z d  0

0 0
1
0
0 1
0 1d

0 0
1
0
0 1
0 1d

0
0
0

0

0  x 
0  y 
0  z 
 
0  1 

Trong tọa độ 3-D:


 x

,
z d

y
,
z d


d 

25


×