Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
679,57 KB
Nội dung
ĐỒHỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 1/15
K
KK
K
K
KK
K
H
HH
H
H
HH
H
Ư
ƯƯ
Ư
Ư
ƯƯ
Ư
Û
ÛÛ
Û
Û
ÛÛ
Û
M
MM
M
M
MM
M
A
AA
A
A
AA
A
Ë
ËË
Ë
Ë
ËË
Ë
T
TT
T
T
TT
T
K
KK
K
K
KK
K
H
HH
H
H
HH
H
U
UU
U
U
UU
U
A
AA
A
A
AA
A
Á
ÁÁ
Á
Á
ÁÁ
Á
T
TT
T
T
TT
T
H
HH
H
H
HH
H
I
II
I
I
II
I
D
DD
D
D
DD
D
D
DD
D
D
DD
D
E
EE
E
E
EE
E
N
NN
N
N
NN
N
S
SS
S
S
SS
S
U
UU
U
U
UU
U
R
RR
R
R
RR
R
F
FF
F
F
FF
F
A
AA
A
A
AA
A
C
CC
C
C
CC
C
E
EE
E
E
EE
E
R
RR
R
R
RR
R
E
EE
E
E
EE
E
M
MM
M
M
MM
M
O
OO
O
O
OO
O
V
VV
V
V
VV
V
A
AA
A
A
AA
A
L
LL
L
L
LL
L
C
C
a
a
ù
ù
c
c
d
d
a
a
ï
ï
n
n
g
g
k
k
h
h
a
a
ù
ù
c
c
n
n
h
h
a
a
u
u
c
c
u
u
û
û
a
a
v
v
a
a
á
á
n
n
đ
đ
e
e
à
à
k
k
h
h
ư
ư
û
û
m
m
a
a
ë
ë
t
t
k
k
h
h
u
u
a
a
á
á
t
t
C
C
a
a
ù
ù
c
c
t
t
h
h
u
u
a
a
ä
ä
t
t
t
t
o
o
a
a
ù
ù
n
n
k
k
h
h
ư
ư
û
û
m
m
a
a
ë
ë
t
t
k
k
h
h
u
u
a
a
á
á
t
t
(
(
H
H
S
S
R
R
)
)
• Back-face detection
• Painter’s algorithm
• Ray casting
• Z-buffer
• Scan-line
• Area subdivision
ĐỒ HỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 2/15
D
D
a
a
ã
ã
n
n
n
n
h
h
a
a
ä
ä
p
p
• Khi chiếu cảnh của ta từ không gian 3 chiều xuống
không gian 2 chiều (screen space) dọc theo trục z, các
điểm nằm trên cùng một tia chiếu sẽ có chung một ảnh.
• Vấn đề là khi hiển thò, ta phải chọn màu thích hợp cho
điểm này. Màu đó phải là màu của đối tượng mà ta thật
sự thấy được (gần ta nhất) chứ không phải đối tượng bò
che khuất (bởi đối tượng khác).
• Khi muốn có hình ảnh thật ta không thể không khử mặt
khuất (xem ví dụ bên dưới)
ĐỒ HỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 3/15
C
C
a
a
ù
ù
c
c
d
d
a
a
ï
ï
n
n
g
g
k
k
h
h
a
a
ù
ù
c
c
n
n
h
h
a
a
u
u
c
c
u
u
û
û
a
a
v
v
a
a
á
á
n
n
đ
đ
e
e
à
à
k
k
h
h
ư
ư
û
û
m
m
a
a
ë
ë
t
t
k
k
h
h
u
u
a
a
á
á
t
t
• Các mặt có thể quay lưng lại với người quan sát (Back-
face)
• Các mặt có thể bò che bởi các mặt khác
• Các mặt có thể chồng lên nhau
ĐỒ HỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 4/15
• Các mặt có thể cắt nhau
B
B
a
a
c
c
k
k
-
-
f
f
a
a
c
c
e
e
d
d
e
e
t
t
e
e
c
c
t
t
i
i
o
o
n
n
• Không hiển thò các mặt hướng ra từ vò trí quan sát
• Một polygon quay lưng lại viewer nếu
0NV >• .
ĐỒ HỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 5/15
• Ta có thể áp dụng phép “NORMAL TEST” trên để kiểm
tra với các phép chiếu khác nhau ?
• Khi nào ta phải áp dụng phép back-face culling ?
• Chi phí cho công việc này trên n polygon là bao nhiêu ?
• Giải quyết xong bài toán back-face culling ta đã giải
quyết xong bài toán HSR chưa ?
• Dó nhiên là chưa. Trong rất nhiều cảnh các mặt chồng
lên nhau. Ta phải giải quyết bằng cách khác.
ĐỒ HỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 6/15
D
D
e
e
p
p
t
t
h
h
s
s
o
o
r
r
t
t
i
i
n
n
g
g
• Còn gọi là Painter’s algorithm
• Sắp xếp các mặt theo thứ tự từ xa đến gần (giảm dần
theo độ sâu) theo vò trí sâu nhất của mỗi mặt.
• Scan convert từng mặt theo thứ tự này.
• Tuy nhiên, không phải bao giờ ta cũng có thể sắp xếp
theo độ sâu (xem hình dưới)
• Giải quyết vấn đề này như thế nào ?
ĐỒ HỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 7/15
X
X
ư
ư
û
û
l
l
y
y
ù
ù
c
c
a
a
ù
ù
c
c
v
v
ư
ư
ơ
ơ
ù
ù
n
n
g
g
m
m
a
a
é
é
c
c
k
k
h
h
i
i
t
t
í
í
n
n
h
h
đ
đ
o
o
ä
ä
s
s
a
a
â
â
u
u
• Khi sắp xếp các mặt theo độ sâu, có nhiều tình huống
xác đònh rất khó.
• Thuật toán sắp xếp theo độ sâu có thể cài đặt như sau:
1. Khởi động việc sắp xếp theo vò trí z nhỏ nhất (xa)
2. Giải quyết các mơ hồ:
(a) So sánh theo toạ độ X
(b) So sánh theo toạ độ Y
(c) Kiểm tra P có hoàn toàn nằm về 1 phía của Q ?
(d) Kiểm tra Q có hoàn toàn nằm về 1 phía của P ?
(e) So sánh hình chiếu lên X-Y (Polygon Intersection)
(f) Hoán vò hoặc tách các polygon
3. Scan convert từ xa đến gần.
• Một số lưu ý về Painter’s Algorithm
♦ Có độ phức tạp O(nlogn)
♦ Các polygon cắt nhau phải được chia thành các polygon
con.
♦ Phải tính toán trên mỗi pixel của mọi polygon.
♦ Việc xác đònh độ sâu của các mặt không đơn giản
ĐỒ HỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 8/15
R
R
a
a
y
y
c
c
a
a
s
s
t
t
i
i
n
n
g
g
• Từ view point phóng các tia đến mọi điểm trên view
plane.
• Xác đònh mặt gần nhất cắt các tia này.
• Một số lưu ý về Ray casting
♦ Có độ phức tạp O(plogn) với p là số pixel trên VP
♦ Đơn giản về mặt khái niệm nhưng không phổ dụng
ĐỒ HỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 9/15
Z
Z
-
-
B
B
u
u
f
f
f
f
e
e
r
r
• Xây dựng 2 buffer:
♦ Intensity Buffer: lưu màu các pixel (init bằng màu nền)
♦ Depth (“Z”) Buffer: lưu độ sâu (init bằng độ sâu max).
• “Vẽ” từng polygon:
♦ Nếu độ sâu của điểm trên polygon nhỏ hơn độ sâu tương
ứng đang lưu trong Z-Buffer thì cập nhật lại Z-Buffer và
Intensity Buffer.
• Các ưu điểm của Z-Buffer
♦ Thích hợp cài đặt trên phần cứng.
♦ Ta có thể scan-convert các polygon theo thứ tự bất kỳ.
♦ Mỗi lần ta chỉ phải xét một polygon
♦ Cho phép tổng hợp nhiều cảnh với nhau hoặc bổ sung các
đối tượng mới vào một cảnh phức tạp.
♦ Có thể áp dụng với các mặt cong, các mặt không có dạng
đa giác.
ĐỒ HỌAMÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 10/15
• Các nhược điểm của Z-Buffer
♦ Đòi hỏi bộ nhớ rất lớn
♦ Có thể mất chính xác khi chuẩn hoá trong qua trình tính
độ sâu.
♦ Không thực hiện được phép xử lý anti-alias
♦ Phải scan-convert tất cả các đối tượng.
L
L
a
a
ø
ø
m
m
t
t
h
h
e
e
á
á
n
n
a
a
ø
ø
o
o
đ
đ
e
e
å
å
t
t
í
í
n
n
h
h
t
t
o
o
a
a
ù
ù
n
n
Z
Z
-
-
B
B
u
u
f
f
f
f
e
e
r
r
h
h
i
i
e
e
ä
ä
u
u
q
q
u
u
a
a
û
û
• Lấy ý tưởng của phép tô màu polygon (theo thuật toán
scanline) khi tính giao điểm của scanline với các cạnh
của polygon.
• Ta có thể thực hiện tương tự để tínhđộ sâu cho từng
điểm trên polygon:
• Khi đã có z
a
và z
b
với mỗi cạnh, ta có thể tính z
p
tuần tự
[...]... cùng một phía, ta chọn một polygon bất kỳ làm chuẩn chia và xử lý đệ qui • Xét một ví dụ: Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 13/15 ĐỒ HỌAMÁYTÍNH • Bắt đầu từ mặt số 3: • Nếu bắt đầu từ mặt số 5 ta có kết quả khác: Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 14/15 ĐỒ HỌAMÁYTÍNH void BSP_displayTree(BSP_tree* tree) { if ( tree is not empty ) if ( viewer is in front of root ) { BSP_displayTree(tree->backChild);...ĐỒ HỌAMÁYTÍNH Scan-line • Mở rộng tư tưởng của thuật toán tô màu scanline • Quét scanline dọc theo VP • Với mỗi scanline xác đònh các đoạn ứng với các mặt: ♦ Xác đònh các giao điểm của scanline với các đường biên ♦ Sắp xếp các giao điểm theo thứ tự tăng dần của x ♦ Với mỗi đoạn tô bằng 1 màu (của mặt gần nhất) Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 11/15 ĐỒHỌAMÁYTÍNH Warnock’s... Algorithm • Bắt đầu với vùng là toàn bộ viewport • Tô một vùng nếu: ♦ Không có mặt nào giao với nó: màu nền ♦ Chỉ có duy nhất 1 mặt giao với nó: đơn giản ♦ Có một mặt che khuất tất cả các mặt khác trong vùng • Ngược lại: chia nhỏ vùng làm 4, tiếp tục qui trình với từng vùng con Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 12/15 ĐỒ HỌAMÁYTÍNH BSP Algorithm • BSP: Binary Space Partitioning • Thuật toán cung cấp... ♦ Back-face detection ♦ Depth sort ♦ Ray casting ♦ Z-buffer ♦ Scan-line ♦ Area subdivision (Warnock’s) ♦ BSP • Hardware ♦ Z-buffer • Software ♦ Depth sort ♦ Scan-line Dương Anh Đức, Lê Đình Duy Khử mặtkhuất 15/15 . dụ:
ĐỒ HỌA MÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặt khuất 14/15
• Bắt đầu từ mặt số 3:
• Nếu bắt đầu từ mặt số 5 ta có kết quả khác:
ĐỒ HỌA MÁY TÍNH
Dương. Phải tính toán trên mỗi pixel của mọi polygon.
♦ Việc xác đònh độ sâu của các mặt không đơn giản
ĐỒ HỌA MÁY TÍNH
Dương Anh Đức, Lê Đình Duy Khử mặt khuất