Giáo trình Đồ họa máy tính - Bài: Khử mặt khuất (Hidden surface removal) - Dương Anh Đức, Lê Đình Huy

ÑOÀ HOÏA MAÙY TÍNH  
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  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 1/15  
ÑOÀ HOÏA MAÙY TÍNH  
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)  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 2/15  
ÑOÀ HOÏA MAÙY TÍNH  
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  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 3/15  
ÑOÀ HOÏA MAÙY TÍNH  
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 V N > 0.  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 4/15  
ÑOÀ HOÏA MAÙY TÍNH  
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.  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 5/15  
ÑOÀ HOÏA MAÙY TÍNH  
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 ?  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 6/15  
ÑOÀ HOÏA MAÙY TÍNH  
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  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 7/15  
ÑOÀ HOÏA MAÙY TÍNH  
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  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 8/15  
ÑOÀ HOÏA MAÙY TÍNH  
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.  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 9/15  
ÑOÀ HOÏA MAÙY TÍNH  
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öï  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 10/15  
ÑOÀ HOÏA MAÙY TÍNH  
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).  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 11/15  
ÑOÀ HOÏA MAÙY TÍNH  
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.  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 12/15  
ÑOÀ HOÏA MAÙY TÍNH  
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ï:  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 13/15  
ÑOÀ HOÏA MAÙY TÍNH  
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:  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 14/15  
ÑOÀ HOÏA MAÙY TÍNH  
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  
Döông Anh Ñöùc, Leâ Ñình Duy  
Khöû maët khuaát 15/15  
pdf 15 trang baolam 09/05/2022 7140
Bạn đang xem tài liệu "Giáo trình Đồ họa máy tính - Bài: Khử mặt khuất (Hidden surface removal) - Dương Anh Đức, Lê Đình Huy", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_do_hoa_may_tinh_bai_khu_mat_khuat_hidden_surface.pdf