Đồ hoạ máy tính - Khử mặt khuất hidden surface removal

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).

 

pdf15 trang | Chia sẻ: thiennga98 | Lượt xem: 488 | Lượt tải: 0download
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:

  • pdfHiddenSurfaceRemoval.pdf
Giáo án liên quan