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).
15 trang |
Chia sẻ: thiennga98 | Lượt xem: 488 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Đồ hoạ máy tính - Khử mặt khuất hidden surface removal, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 1/15
KHÖÛÛ MAËËT KHUAÁÁT
HIDDEN SURFACE REMOVAL
Caùùc daïïng khaùùc nhau cuûûa vaáán ñeàà khöûû maëët khuaáát
Caùùc thuaäät toaùùn khöûû maëët khuaáát (HSR)
• Back-face detection
• Painter’s algorithm
• Ray casting
• Z-buffer
• Scan-line
• Area subdivision
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 2/15
Daããn nhaääp
• Khi chieáu caûnh cuûa ta töø khoâng gian 3 chieàu xuoáng
khoâng gian 2 chieàu (screen space) doïc theo truïc z, caùc
ñieåm naèm treân cuøng moät tia chieáu seõ coù chung moät aûnh.
• Vaán ñeà laø khi hieån thò, ta phaûi choïn maøu thích hôïp cho
ñieåm naøy. Maøu ñoù phaûi laø maøu cuûa ñoái töôïng maø ta thaät
söï thaáy ñöôïc (gaàn ta nhaát) chöù khoâng phaûi ñoái töôïng bò
che khuaát (bôûi ñoái töôïng khaùc).
• Khi muoán coù hình aûnh thaät ta khoâng theå khoâng khöû maët
khuaát (xem ví duï beân döôùi)
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 3/15
Caùùc daïïng khaùùc nhau cuûûa vaáán ñeàà khöûû maëët khuaáát
• Caùc maët coù theå quay löng laïi vôùi ngöôøi quan saùt (Back-
face)
• Caùc maët coù theå bò che bôûi caùc maët khaùc
• Caùc maët coù theå choàng leân nhau
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 4/15
• Caùc maët coù theå caét nhau
Back-face detection
• Khoâng hieån thò caùc maët höôùng ra töø vò trí quan saùt
• Moät polygon quay löng laïi viewer neáu 0NV >• .
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 5/15
• Ta coù theå aùp duïng pheùp “NORMAL TEST” treân ñeå kieåm
tra vôùi caùc pheùp chieáu khaùc nhau ?
• Khi naøo ta phaûi aùp duïng pheùp back-face culling ?
• Chi phí cho coâng vieäc naøy treân n polygon laø bao nhieâu ?
• Giaûi quyeát xong baøi toaùn back-face culling ta ñaõ giaûi
quyeát xong baøi toaùn HSR chöa ?
• Dó nhieân laø chöa. Trong raát nhieàu caûnh caùc maët choàng
leân nhau. Ta phaûi giaûi quyeát baèng caùch khaùc.
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 6/15
Depth sorting
• Coøn goïi laø Painter’s algorithm
• Saép xeáp caùc maët theo thöù töï töø xa ñeán gaàn (giaûm daàn
theo ñoä saâu) theo vò trí saâu nhaát cuûa moãi maët.
• Scan convert töøng maët theo thöù töï naøy.
• Tuy nhieân, khoâng phaûi bao giôø ta cuõng coù theå saép xeáp
theo ñoä saâu (xem hình döôùi)
• Giaûi quyeát vaán ñeà naøy nhö theá naøo ?
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 7/15
Xöûû lyùù caùùc vöôùùng maééc khi tính ñoää saââu
• Khi saép xeáp caùc maët theo ñoä saâu, coù nhieàu tình huoáng
xaùc ñònh raát khoù.
• Thuaät toaùn saép xeáp theo ñoä saâu coù theå caøi ñaët nhö sau:
1. Khôûi ñoäng vieäc saép xeáp theo vò trí z nhoû nhaát (xa)
2. Giaûi quyeát caùc mô hoà:
(a) So saùnh theo toaï ñoä X
(b) So saùnh theo toaï ñoä Y
(c) Kieåm tra P coù hoaøn toaøn naèm veà 1 phía cuûa Q ?
(d) Kieåm tra Q coù hoaøn toaøn naèm veà 1 phía cuûa P ?
(e) So saùnh hình chieáu leân X-Y (Polygon Intersection)
(f) Hoaùn vò hoaëc taùch caùc polygon
3. Scan convert töø xa ñeán gaàn.
• Moät soá löu yù veà Painter’s Algorithm
♦ Coù ñoä phöùc taïp O(nlogn)
♦ Caùc polygon caét nhau phaûi ñöôïc chia thaønh caùc polygon
con.
♦ Phaûi tính toaùn treân moãi pixel cuûa moïi polygon.
♦ Vieäc xaùc ñònh ñoä saâu cuûa caùc maët khoâng ñôn giaûn
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 8/15
Ray casting
• Töø view point phoùng caùc tia ñeán moïi ñieåm treân view
plane.
• Xaùc ñònh maët gaàn nhaát caét caùc tia naøy.
• Moät soá löu yù veà Ray casting
♦ Coù ñoä phöùc taïp O(plogn) vôùi p laø soá pixel treân VP
♦ Ñôn giaûn veà maët khaùi nieäm nhöng khoâng phoå duïng
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 9/15
Z-Buffer
• Xaây döïng 2 buffer:
♦ Intensity Buffer: löu maøu caùc pixel (init baèng maøu neàn)
♦ Depth (“Z”) Buffer: löu ñoä saâu (init baèng ñoä saâu max).
• “Veõ” töøng polygon:
♦ Neáu ñoä saâu cuûa ñieåm treân polygon nhoû hôn ñoä saâu töông
öùng ñang löu trong Z-Buffer thì caäp nhaät laïi Z-Buffer vaø
Intensity Buffer.
• Caùc öu ñieåm cuûa Z-Buffer
♦ Thích hôïp caøi ñaët treân phaàn cöùng.
♦ Ta coù theå scan-convert caùc polygon theo thöù töï baát kyø.
♦ Moãi laàn ta chæ phaûi xeùt moät polygon
♦ Cho pheùp toång hôïp nhieàu caûnh vôùi nhau hoaëc boå sung caùc
ñoái töôïng môùi vaøo moät caûnh phöùc taïp.
♦ Coù theå aùp duïng vôùi caùc maët cong, caùc maët khoâng coù daïng
ña giaùc.
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 10/15
• Caùc nhöôïc ñieåm cuûa Z-Buffer
♦ Ñoøi hoûi boä nhôù raát lôùn
♦ Coù theå maát chính xaùc khi chuaån hoaù trong qua trình tính
ñoä saâu.
♦ Khoâng thöïc hieän ñöôïc pheùp xöû lyù anti-alias
♦ Phaûi scan-convert taát caû caùc ñoái töôïng.
Laøøm theáá naøøo ñeåå tính toaùùn Z-Buffer hieääu quaûû
• Laáy yù töôûng cuûa pheùp toâ maøu polygon (theo thuaät toaùn
scanline) khi tính giao ñieåm cuûa scanline vôùi caùc caïnh
cuûa polygon.
• Ta coù theå thöïc hieän töông töï ñeå tính ñoä saâu cho töøng
ñieåm treân polygon:
• Khi ñaõ coù za vaø zb vôùi moãi caïnh, ta coù theå tính zp tuaàn töï
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 11/15
Scan-line
• Môû roäng tö töôûng cuûa thuaät toaùn toâ maøu scanline.
• Queùt scanline doïc theo VP.
• Vôùi moãi scanline xaùc ñònh caùc ñoaïn öùng vôùi caùc maët:
♦ Xaùc ñònh caùc giao ñieåm cuûa scanline vôùi caùc ñöôøng bieân.
♦ Saép xeáp caùc giao ñieåm theo thöù töï taêng daàn cuûa x.
♦ Vôùi moãi ñoaïn toâ baèng 1 maøu (cuûa maët gaàn nhaát).
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 12/15
Warnock’s Algorithm
• Baét ñaàu vôùi vuøng laø toaøn boä viewport
• Toâ moät vuøng neáu:
♦ Khoâng coù maët naøo giao vôùi noù: maøu neàn.
♦ Chæ coù duy nhaát 1 maët giao vôùi noù: ñôn giaûn
♦ Coù moät maët che khuaát taát caû caùc maët khaùc trong vuøng.
• Ngöôïc laïi: chia nhoû vuøng laøm 4, tieáp tuïc qui trình vôùi
töøng vuøng con.
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 13/15
BSP Algorithm
• BSP: Binary Space Partitioning
• Thuaät toaùn cung caáp moät qui trình chia nhoû khoâng gian
vaø xaùc ñònh thöù töï veõ caùc ñoái töôïng.
• Duøng chieán löôïc chia ñeå trò:
♦ Ñeå hieån thò caùc polygon ñuùng, ta hieån thò caùc polygon ôû
phía “xa” tröôùc sau ñoù môùi hieån thò caùc polygon ôû phía
“gaàn”. (Gaàn laø phía chöùa View point)
♦ Ñeå hieån thò ñuùng caùc polygon ôû cuøng moät phía, ta choïn
moät polygon baát kyø laøm chuaån chia vaø xöû lyù ñeä qui.
• Xeùt moät ví duï:
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 14/15
• Baét ñaàu töø maët soá 3:
• Neáu baét ñaàu töø maët soá 5 ta coù keát quaû khaùc:
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Khöû maët khuaát 15/15
void BSP_displayTree(BSP_tree* tree)
{
if ( tree is not empty )
if ( viewer is in front of root ) {
BSP_displayTree(tree->backChild);
displayPolygon(tree->root);
BSP_displayTree(tree->frontChild)
}
else {
BSP_displayTree(tree->frontChild);
/* ignore next line if back-face culling desired */
displayPolygon(tree->root);
BSP_displayTree(tree->backChild)
}
}
Keáát luaään
• Hidden surface algorithms
♦ Back-face detection
♦ Depth sort
♦ Ray casting
♦ Z-buffer
♦ Scan-line
♦ Area subdivision (Warnock’s)
♦ BSP
• Hardware
♦ Z-buffer
• Software
♦ Depth sort
♦ Scan-line
File đính kèm:
- HiddenSurfaceRemoval.pdf