ĐỒ 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
dx
x
x'
,
z
z d
y' y
d
z
dy
y
y'
,
z
z d
zd
• 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