Hidden Surface Removal
ĐỒ HỌA MÁY TÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuất 1/15KKKKKKKKHHHHHHHHƯƯƯƯƯƯƯƯÛÛÛÛÛÛÛÛMMMMMMMMAAAAAAAẶËËËËËËËTTTTTTTTKKKKKKKKHHHHHHHHUUUUUUUUAAAAAAAẤÁÁÁÁÁÁÁTTTTTTTTHHHHHHHHIIIIIIIIDDDDDDDDDDDDDDDDEEEEEEEENNNNNNNNSSSSSSSSUUUUUUUURRRRRRRRFFFFFFFFAAAAAAAACCCCCCCCEEEEEEEERRRRRRRREEEEEEEEMMMMMMMMOOOOOOOOVVVVVVVVAAAAAAAALLLLLLLLCCaáùccddaạïnnggkkhhaáùccnnhhaauuccuủûaavvaấánnđđeềàkkhhưửûmmaặëttkkhhuuaấáttCCaáùcctthhuuaậättttooaáùnnkkhhưửûmmaặëttkkhhuuaấátt((HHSSRR))• Back-face detection• Painter’s algorithm• Ray casting• Z-buffer• Scan-line• Area subdivision ĐỒ HỌA MÁY TÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuất 2/15DDaẫãnnnnhhaậäpp• Khi chiếu cảnh của ta từ không gian 3 chiều xuốngkhô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 chiểm này. Màu đó phải là màu của đối tượng mà ta thậtsự 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ặtkhuất (xem ví dụ bên dưới) ĐỒ HỌA MÁY TÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuất 3/15CCaáùccddaạïnnggkkhhaáùccnnhhaauuccuủûaavvaấánnđđeềàkkhhưửûmmaặëttkkhhuuaấátt• 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ỌA MÁY TÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuất 4/15• Các mặt có thể cắt nhauBBaacckk--ffaacceeddeetteeccttiioonn• 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ếu0NV >•. ĐỒ HỌA MÁY TÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuất 5/15• Ta có thể áp dụng phép “NORMAL TEST” trên để kiểmtra 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ảiquyế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ồnglên nhau. Ta phải giải quyết bằng cách khác. ĐỒ HỌA MÁY TÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuất 6/15DDeepptthhssoorrttiinngg• 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ầntheo độ 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ếptheo độ sâu (xem hình dưới)• Giải quyết vấn đề này như thế nào ? ĐỒ HỌA MÁY TÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuất 7/15XXưửûllyýùccaáùccvvưươớùnnggmmaắécckkhhiittíínnhhđđoộässaââuu• Khi sắp xếp các mặt theo độ sâu, có nhiều tình huốngxá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 polygon3. 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 polygoncon.♦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ÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuất 8/15RRaayyccaassttiinngg• Từ view point phóng các tia đến mọi điểm trên viewplane.• 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ỌA MÁY TÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuất 9/15ZZ--BBuuffffeerr• 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ỌA MÁY TÍNHDương Anh Đức, Lê Đình Duy Khử mặt khuấ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.LLaàømmtthheếánnaàøođeểåttíínnhhttooaáùnnZZ--BBuuffffeerrhhiieệäuuqquuaảû• Lấy ý tưởng của phép tô màu polygon (theo thuật toánscanline) khi tính giao điểm của scanline với các cạnhcủ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ó zavà zbvới mỗi cạnh, ta có thể tính zptuần tự [...]... { BSP_displayTree(tree->frontChild); /* ignore next line if back-face culling desired */ displayPolygon(tree->root); BSP_displayTree(tree->backChild) } } K K e e á á t t l l u u a a ä ä n 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 . */displayPolygon(tree->root);BSP_displayTree(tree->backChild)}}KKeếáttlluuaậänn• Hidden surface algorithms♦Back-face detection♦Depth sort♦Ray casting♦Z-buffer♦Scan-line♦Area