Loại bỏ mặt ẩn Với sự phát triển của các thiết bị hiển thị dẫn đến nhu cầu thể hiện các vật thể một cách thực tế hơn, đòi hỏi các mô hình có rất nhiều đa giác.. Sự hữu hình của các đối t
Trang 1Đồ họa máy tính
Xác định mặt hiện
Trang 2Loại bỏ mặt ẩn
Với sự phát triển của các thiết bị hiển thị dẫn đến nhu cầu
thể hiện các vật thể một cách thực tế hơn, đòi hỏi các mô
hình có rất nhiều đa giác.
Từ đó dẫn đến nhu cầu phát triển các thuật toán để loại
bỏ mặt ẩn (hidden surface removal).
Một số thuật toán được gọi chính xác hơn là các thuật
toán mặt hiện (visible surface algorithms), but tuy nhiên
cả hai tên đều được dùng thay nhau.
Bùi Thế Duy - Bộ môn KHMT
2
Trang 3Sự hữu hình của các đối tượng cơ
bản
Chúng ta không muốn phí thời gian để hiển thị
những đối tượng không đóng góp vào bức ảnh
cuối cùng.
Một đối tượng có thể không hữu hình vì 3 lý do:
– Nằm ngoài vùng hiển thị
– Quay vào trong (back-facing)
– Bị che bởi các đối tượng khác gần người quan sát hơn
Làm thế nào để loại bỏ chúng một cách hiệu quả?
Làm thế nào để xác định chúng một cách hiệu
quả?
Trang 4Vấn đề hữu hình
Hai vấn đề còn lại:
(Chúng ta đã làm quen với clipping)
• Loại bỏ các bề mặt hướng ra phía khác so với người quan sát.
• Loại bỏ các bề mặt che bởi các đối tượng gần hơn.
Trang 5Các thuật toán mặt hiện
Loại bỏ/Xác định Mặt/đoạn Ẩn/hiện
Yêu cầu
– Có thể xử lý các tập đối tượng khác nhau
– Có thể xử lý một lượng lớn các đại lượng hình học
Phân loại: Sutherland, Sproull, Schumacher (1974):
Trang 6Xác định mặt sau
Chúng ta thường thấy trong mô
hình hóa, các đỉnh của một đa
giác thường được tính theo chiều
ngược theo chiều kim đồng hồ
khi nhìn vào từ bên ngoài –
vec-tơ pháp tuyến N trỏ ra ngoài
Kiểm tra thành phần z của vec-tơ
pháp tuyến Nếu âm – quay vào
trong
Trang 7Xử lý sự chồng chéo?
Làm thế nào để vẽ các đa giác theo đúng thứ tự để có được kết
quả đúng?
Có phải đây chỉ là vấn đề sắp xếp? Chỉ đúng với 2D, tuy nhiên
trong 3D các đa giác chồng chéo lên nhau có thể tạo thành một
thứ tự vòng tròn, không sắp xếp được.
Bùi Thế Duy - Bộ môn KHMT
7
Trang 8Thuật toán Z-buffering
Rất đơn giản, có thể ghép vào thuật toán
đường quét.
Nội suy z trong quá trình tính toán.
Lưu trữ một ma trận độ sâu tương ứng với
ảnh đầu ra.
Mỗi khi xử lý một đa giác, so sánh với các
giá trị z đang lưu trữ.
Lưu lại giá trị màu của những điểm gần
nhất.
Trang 9Cài đặt
Khởi tạo bộ đệm ảnh với màu nền.
Khởi tạo bộ đệm độ sâu với z = giá trị
max của mặt phẳng clipping.
Cần tính giá trị z cho mỗi điểm
– Bằng cách nội suy từ các đỉnh đa giác.
Cập nhật cả bộ đệm ảnh và bộ đệm độ sâu.
Trang 10– Kết hợp với thuật toán đường quét.
– Bộ nhớ cho z-buffer không quá đắt
Xử lý được nhiều loại đối tượng hình học – không chỉ đa giác
Có thể xử lý cảnh vật phức tạp đến bất cứ mức nào
Không cần tính toán phần giao giữa các đối tượng
Nhược điểm
Tốn thêm bộ nhớ và băng thông
Tốn thời gian tính toán những đối tượng ẩn
Trang 11đa giác gần hơn sẽ được
vẽ đề lên đa giác xa hơn.
Trang 12•Chia những đa giác nằm ở cả hai nửa không gian.
•Chọn một đa giác ở mỗi nửa – chia đôi cảnh vật 1
3
4 tiếp.
•Tiếp tục chia cho đến khi mỗi phần chỉ còn một đa
giác.
View of scene from above
Bùi Thế Duy - Bộ môn KHMT
12
Trang 13Cây BSP
5 5a Chọn đa giác bất kỳ 2 5b
Chia cảnh vật ra 2 nửa không gian: trước và
2
4 5b 5a
Trang 14Cây BSP
5 5a Chọn đa giác bất kỳ 2 5b
Chia cảnh vật ra 2 nửa không gian: trước và
một đa giác. Trước 2 4
5b 5a 1
Bùi Thế Duy - Bộ môn KHMT
14
Trang 155a Chọn đa giác bất kỳ
Tiếp tục chia cho đến khi mỗi phần chỉ còn
5a 1 5b
Bùi Thế Duy - Bộ môn KHMT
15
Trang 162 Chọn đa giác bất kỳ
Chia cảnh vật ra 2 nửa không gian: trước và
Chọn một đa giác ở mỗi nửa – chia đôi cảnh
vật tiếp. 5 sau4 sau
Cây khác Tiếp tục chia cho đến khi mỗi phần chỉ còn
một đa giác. Trước
1
3 sau 2
Trang 17Hiện thị cây BSP
Once we have the regions – need priority list
BSP tree can be traversed to yield a correct priority list
for an arbitrary viewpoint.
Start at root polygon.
– If viewer is in front half-space, draw polygons behind root first,
then the root polygon, then polygons in front
– If polygon is on edge – either can be used
– Recursively descend the tree
If eye is in rear half-space for a polygon – then can back
face cull.
Bùi Thế Duy - Bộ môn KHMT
17
Trang 18Cây Tree.
Cần một lượng lớn tính toán khi bắt đầu
– Chia đa giác
Nhanh chóng để xác định tính hữu hình khi
cây được tạo ra.
Có thể được sử dụng để tính toán sự hữu
Trang 19Thuật toán Warnock
Lai giữa không gian vật thể và không gian ảnh.
Sử dụng giải pháp đồ họa chuẩn:- nếu tình huống
phức tạp quá, thì chia nhỏ bài toán ra.
Bắt đầu với một cửa sổ gốc:
– Nếu không có hay chỉ có một đa giác giao với cửa sổ, quét đa
giác đó
– Nếu không thì chia cửa sổ ra làm bốn
– Tiếp tục như vậy cho đến khi chỉ có một hoặc không có đa giác
nào giao với cửa sổ, hoặc đạt đến độ sâu nào đó
– Độ sâu có thể là độ phân giải điểm, Hiển thị đa giác gần nhất
Bùi Thế Duy - Bộ môn KHMT
19
Trang 20Ví dụ về thuật toán Warnock
Trang 3712/10/2007
Trang 38Hiệu năng của thuật toán BSP
Xây dựng cây và duyệt cây (thuật toán thứ tự
trong không gian vật thể – tốt với một số lượng
nhỏ các đối tượng, chính xác)
Bộ nhớ làm việc: O(1), O(lg n)
Bộ nhớ lưu trữ: O(n2)
Trang 39Thời gian để xác định tính hữu hình: O(n2)
Vẽ thừa: không
Hiệu suất của Z-buffer
Brute-force image-space algorithm scores
best for complex scenes – not very
accurate but is easy to implement and is
very general.
Trang 40Bộ nhớ làm việc: O(1)
Bộ nhớ lưu trữ: O(1)
Thời gian để xác định tính hữu hình: O(n)
Vẽ thừa: tối đa
Bùi Thế Duy - Bộ môn KHMT
23
Ví dụ Cảnh kiến trúc
Một lượng lớn đối tượng bị che khuất
Trang 41Sự che khuất ở các mức độ khác nhau
Trang 42Bùi Thế Duy - Bộ môn KHMT
25
Tổng kết
Xác định mặt quay vào trong
Thuật toán z-buffer
Thuật toán BSP
Trang 43Thuật toán Warnock