Hidden Surface Removal

15 527 1
Hidden Surface Removal

Đ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

Hidden Surface Removal

ĐỒ 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 khuaát 15/15 ... 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 ♦

Ngày đăng: 22/08/2012, 09:26

Hình ảnh liên quan

• Khi muốn có hình ảnh thật ta không thể không khử mặt khuất (xem ví dụ bên dưới) - Hidden Surface Removal

hi.

muốn có hình ảnh thật ta không thể không khử mặt khuất (xem ví dụ bên dưới) Xem tại trang 2 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan