Khử mặt khuất

15 490 0
Khử mặt khuất

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐỒ HỌA MÁY TÍNH KHỬ MẶT KHUẤT HIDDEN SURFACE REMOVAL Các dạng khác vấn đề khử mặt khuất Các thuật toán khử mặt khuất (HSR) • Back-face detection • Painter’s algorithm • Ray casting • Z-buffer • Scan-line • Area subdivision Dương Anh Đức, Lê Đình Duy Khử mặt khuất 1/15 ĐỒ HỌA MÁY TÍNH Dẫn nhập • Khi chiếu cảnh ta từ không gian chiều xuống không gian chiều (screen space) dọc theo trục z, điểm nằm tia chiếu có chung ảnh • Vấn đề hiển thò, ta phải chọn màu thích hợp cho điểm Màu phải màu đối tượng mà ta thật thấy (gần ta nhất) đố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 khử mặt khuất (xem ví dụ bên dưới) Dương Anh Đức, Lê Đình Duy Khử mặt khuất 2/15 ĐỒ HỌA MÁY TÍNH Các dạng khác vấn đề khử mặt khuất • Các mặt quay lưng lại với người quan sát (Backface) • Các mặt bò che mặt khác • Các mặt chồng lên Dương Anh Đức, Lê Đình Duy Khử mặt khuất 3/15 ĐỒ HỌA MÁY TÍNH • Các mặt cắt Back-face detection • Không hiển thò mặt hướng từ vò trí quan sát • Một polygon quay lưng lại viewer Dương Anh Đức, Lê Đình Duy V • N > Khử mặt khuất 4/15 ĐỒ HỌA MÁY TÍNH • Ta áp dụng phép “NORMAL TEST” để kiểm tra với phép chiếu khác ? • Khi ta phải áp dụng phép back-face culling ? • Chi phí cho công việc n polygon ? • Giải xong toán back-face culling ta giải xong toán HSR chưa ? • Dó nhiên chưa Trong nhiều cảnh mặt chồng lên Ta phải giải cách khác Dương Anh Đức, Lê Đình Duy Khử mặt khuất 5/15 ĐỒ HỌA MÁY TÍNH Depth sorting • Còn gọi Painter’s algorithm • Sắp xếp mặt theo thứ tự từ xa đến gần (giảm dần theo độ sâu) theo vò trí sâu mặt • Scan convert mặt theo thứ tự • Tuy nhiên, ta xếp theo độ sâu (xem hình dưới) • Giải vấn đề ? Dương Anh Đức, Lê Đình Duy Khử mặt khuất 6/15 ĐỒ HỌA MÁY TÍNH Xử lý vướng mắc tính độ sâu • Khi xếp mặt theo độ sâu, có nhiều tình xác đònh khó • Thuật toán xếp theo độ sâu cài đặt sau: Khởi động việc xếp theo vò trí z nhỏ (xa) Giải 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 phía Q ? (d) Kiểm tra Q có hoàn toàn nằm phía P ? (e) So sánh hình chiếu lên X-Y (Polygon Intersection) (f) Hoán vò tách polygon Scan convert từ xa đến gần • Một số lưu ý Painter’s Algorithm ♦ Có độ phức tạp O(nlogn) ♦ Các polygon cắt phải chia thành polygon ♦ Phải tính toán pixel polygon ♦ Việc xác đònh độ sâu mặt không đơn giản Dương Anh Đức, Lê Đình Duy Khử mặt khuất 7/15 ĐỒ HỌA MÁY TÍNH Ray casting • Từ view point phóng tia đến điểm view plane • Xác đònh mặt gần cắt tia • Một số lưu ý Ray casting ♦ Có độ phức tạp O(plogn) với p số pixel VP ♦ Đơn giản mặt khái niệm không phổ dụng Dương Anh Đức, Lê Đình Duy Khử mặt khuất 8/15 ĐỒ HỌA MÁY TÍNH Z-Buffer • Xây dựng buffer: ♦ Intensity Buffer: lưu màu pixel (init màu nền) ♦ Depth (“Z”) Buffer: lưu độ sâu (init độ sâu max) • “Vẽ” polygon: ♦ Nếu độ sâu điểm polygon nhỏ độ sâu tương ứng lưu Z-Buffer cập nhật lại Z-Buffer Intensity Buffer • Các ưu điểm Z-Buffer ♦ Thích hợp cài đặt phần cứng ♦ Ta scan-convert polygon theo thứ tự ♦ Mỗi lần ta phải xét polygon ♦ Cho phép tổng hợp nhiều cảnh với bổ sung đối tượng vào cảnh phức tạp ♦ Có thể áp dụng với mặt cong, mặt dạng đa giác Dương Anh Đức, Lê Đình Duy Khử mặt khuất 9/15 ĐỒ HỌA MÁY TÍNH • Các nhược điểm Z-Buffer ♦ Đòi hỏi nhớ lớn ♦ Có thể xác chuẩn hoá qua trình tính độ sâu ♦ Không thực phép xử lý anti-alias ♦ Phải scan-convert tất đối tượng Làm để tính toán Z-Buffer hiệu • Lấy ý tưởng phép tô màu polygon (theo thuật toán scanline) tính giao điểm scanline với cạnh polygon • Ta thực tương tự để tính độ sâu cho điểm polygon: • Khi có za zb với cạnh, ta tính zp Dương Anh Đức, Lê Đình Duy Khử mặt khuất 10/15 ĐỒ HỌA MÁY TÍNH Scan-line • Mở rộng tư tưởng thuật toán tô màu scanline • Quét scanline dọc theo VP • Với scanline xác đònh đoạn ứng với mặt: ♦ Xác đònh giao điểm scanline với đường biên ♦ Sắp xếp giao điểm theo thứ tự tăng dần x ♦ Với đoạn tô màu (của mặt gần nhất) Dương Anh Đức, Lê Đình Duy Khử mặt khuất 11/15 ĐỒ HỌA MÁY TÍNH Warnock’s Algorithm • Bắt đầu với vùng toàn viewport • Tô vùng nếu: ♦ Không có mặt giao với nó: màu ♦ Chỉ có mặt giao với nó: đơn giản ♦ Có mặt che khuất tất mặt khác vùng • Ngược lại: chia nhỏ vùng làm 4, tiếp tục qui trình với vùng Dương Anh Đức, Lê Đình Duy Khử mặt khuất 12/15 ĐỒ HỌA MÁY TÍNH BSP Algorithm • BSP: Binary Space Partitioning • Thuật toán cung cấp qui trình chia nhỏ không gian xác đònh thứ tự vẽ đối tượng • Dùng chiến lược chia để trò: ♦ Để hiển thò polygon đúng, ta hiển thò polygon phía “xa” trước sau hiển thò polygon phía “gần” (Gần phía chứa View point) ♦ Để hiển thò polygon phía, ta chọn polygon làm chuẩn chia xử lý đệ qui • Xét ví dụ: Dương Anh Đức, Lê Đình Duy Khử mặt khuất 13/15 ĐỒ HỌA MÁY TÍNH • Bắt đầu từ mặt số 3: • Nếu mặt số ta có kết khác: Dương Anh Đức, Lê Đình Duy Khử mặt khuất 14/15 ĐỒ HỌA MÁ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) } } Kết luậ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, Lê Đình Duy Khử mặt khuất 15/15 [...]... 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ặt khuất 11/15 ĐỒ HỌA MÁY TÍ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. .. các polygon ở 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ặt khuất 13/15 ĐỒ HỌA MÁY TÍ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ặt khuất 14/15 ĐỒ HỌA MÁ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);... 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ặt khuất 12/15 ĐỒ HỌA MÁY TÍNH BSP Algorithm • BSP: Binary Space Partitioning • Thuật toán cung cấp một qui trình chia nhỏ không gian... 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, Lê Đình Duy Khử mặt khuất 15/15 ... khuất (bởi đối tượng khác) • Khi muốn có hình ảnh thật ta không khử mặt khuất (xem ví dụ bên dưới) Dương Anh Đức, Lê Đình Duy Khử mặt khuất 2/15 ĐỒ HỌA MÁY TÍNH Các dạng khác vấn đề khử mặt khuất. .. mặt khuất • Các mặt quay lưng lại với người quan sát (Backface) • Các mặt bò che mặt khác • Các mặt chồng lên Dương Anh Đức, Lê Đình Duy Khử mặt khuất 3/15 ĐỒ HỌA MÁY TÍNH • Các mặt cắt Back-face... ví dụ: Dương Anh Đức, Lê Đình Duy Khử mặt khuất 13/15 ĐỒ HỌA MÁY TÍNH • Bắt đầu từ mặt số 3: • Nếu mặt số ta có kết khác: Dương Anh Đức, Lê Đình Duy Khử mặt khuất 14/15 ĐỒ HỌA MÁY TÍNH void BSP_displayTree(BSP_tree*

Ngày đăng: 04/12/2015, 02:18

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan