Khử các mặt nằm sau (Back-Face Removal)

Một phần của tài liệu Kỹ thuật lập trình vẽ và tô (Trang 135 - 138)

Một vấn đề lớn cần được quan tâm đến trong việc tạo ra các hình ảnh thực là sự

xác định và xóa bỏ các phần của bức ảnh mà ta không nhìn thấy được từ một vị trí quan sát.

Có nhiều tiếp cận chúng ta cần để giải quyết vấn đề này, và cũng có nhiều thuật toán khác nhau đã và đang được phát triển để xóa bỏ các phần bị che khuất một cách hiệu quả cho những loại ứng dụng khác nhau. Vài phương pháp đòi hỏi nhiều bộ nhớ

hơn, một vài cần nhiều thời gian xử lý hơn, một số khác lại chỉ áp dụng được cho những kiểu đối tượng đặc biệt. Phương pháp nào được chọn cho một ứng dụng cụ thể

dựa vào các nhân tố nhưđộ phức tạp của ảnh, kiểu đối tượng được hiển thị, các thiết bị

hiện có, và các hình ảnh cần hiển thị là tĩnh hay động. Trong chương này, chúng ta khảo sát tỉ mỉ một vài trong số các phương pháp được dùng biến nhất để xóa bỏ các

đường khuất và mặt khuất.

Phân loi các thut toán

Các thuật toán về đường khuất và mặt khuất thường được phân loại dựa theo chúng nó được dùng để xử lý trực tiếp định nghĩa đối tượng hay xử lý hình chiếu của các đối tượng đó. Hai tiếp cận này được gọi là các phương pháp không gian đối tượng (object-space) và các phương pháp không gian ảnh (image-space). Phương pháp không gian đối tượng so sánh các đối tượng, cũng như các thành của chúng với mỗi cái khác để xác định xem các mặt và đường nào sẽđược đánh nhãn là không nhìn thấy được. Trong một thuật toán không gian ảnh, tính chất nhìn thấy được của một

điểm được quyết định bởi điểm ở vị trí pixel trên mặt phẳng chiếu. Hầu hết các thuật toán khử mặt khuất dùng phương pháp không gian ảnh, tuy nhiên các phương pháp không gian đối tượng vẫn có thểđược dùng một cách hiệu quả cho một số trường hợp. Các thuật toán khử đường khuất hầu hết dùng phương pháp không gian đối tượng, dù rằng nhiều thuật toán khử mặt khuất không gian ảnh có thể dễ dàng được chỉnh sửa cho việc khửđường khuất.

Dù có có sự khác nhau lớn trong tiếp cận cơ bản được cần bởi các thuật toán khử mặt khuất và đường khuất, nhưng hầu hết chúng đều dùng đến phương pháp sắp xếp (sorting) và cố kết (coherence) để cải thiện sự thực hiện. Sắp xếp sẽ mang đến sự

thứ tự các đường, mặt, và các đối tượng trong ảnh dựa vào khoảng cách từ chúng đến mặt phẳng quan sát. Phương pháp cố kết được dùng để thu được thuận lợi của sự cân

đối trong ảnh. Một đường quét riêng lẻ có thể được dùng để chứa đựng các giá trị về độ sáng của các pixel, và các mẫu đường quét (scan-line patterns) thường thay đổi ít từ đường này đến đường kế tiếp. Các khung nối kết động chứa các thay đổi chỉ trong vùng lân cận của các đối tượng di chuyển. Và các mối quan hệ cố định thường được xây dựng giữa các đối tượng và các mặt trong ảnh.

Một phương pháp không gian đối tượng đơn giản để xác định các mặt sau (back faces )đối tượng là dựa vào các phương trình mặt:

Ax + By + Cz + D = 0 (7-1)

Bất kỳ điểm (x’, y’, z’) trên hệ tọa độ bàn tay trái sẽ ở “phía trong” mặt này nếu nó thỏa bất phương trình:

Ax’ + By’ + Cz’ + D < 0 (7-2)

Nếu điểm (x’, y’, z’) là vị trí quan sát (viewing position), khi đó bất kỳ mặt phẳng nào làm cho bất phương trình 7-2 đúng phải là một mặt ở đằng sau. Tức là, nó là mặt ta không thể nhìn thấy từ vị trí quan sát. Chúng ta có thể thực hiện một cách kiểm tra mặt đằng sau đơn giản hơn bằng cách nhìn ở pháp vector (normal vector) của mặt có phương trình 7-1. Pháp vector

này có tọa độ Descartes (A, B, C). Trong hệ tọa độ bàn tay phải với hướng quan sát cùng chiều với trục zv âm (xem hình 7-1), pháp vector có tham số C song song với hướng quan sát. Nếu C<0, pháp vector chỉ ra xa khỏi vị trí quan sát, và mặt phải là mặt

ởđằng sau.

Hình 7-1

Một mặt phẳng với tham số C < 0 trong hệ quan sát bàn tay phải được xác như mặt ởđằng sau khi hướng quan sát cùng chiều với trục zv âm.

định yv xv zv Điểm quan sát Hướng quan sát N= (A, B, C) •

Các phương pháp tương tự có thể được dùng trong các gói đồ họa, nơi sử dụng hệ quan sát bày tay trái. Trong các gói đồ họa này, các tham số A, B, C, và D có thể được tính từ tọa độ các đỉnh được xét theo chiều kim đồng hồ (thay vì hướng ngược chiều kim đồng hồđược dùng trong hệ tọa độ bàn tay phải). Bất phương trình 7-2 sau

đó cho một kiểm tra hợp lệđối với các điểm nằm phía trong. Cũng như vậy, các mặt ở đằng sau có các pháp vector chỉ ra xa khỏi vị trí quan sát và được xác định bởi C>0 khi hướng quan sát cùng hướng với trục zv dương (xem hình 7-2). Trong tất cả các thảo luận sau này trong chương, chúng ta giả sử rằng hệ quan sát bàn tay trái được dùng.

yv zv Điểm quan sát Hướng quan sát xv N= (A, B, C) • Hình 7-2

Trong hệ quan sát bàn tay trái, khi hướng quan sát cùng chiều với trục zv dương, một mặt ởđằng sau là mặt với tham số C>0.

Bằng việc kiểm tra tham số C ở mỗi mặt của

đối tượng, ta có thể xác định được ngay tất cả các mặt

ở đằng sau. Đối với một khối đa diện lồi đơn lẽ, như

hình kim tự tháp trong hình 7-1, việc kiểm tra này xác

định tất cả các mặt bị che khuất trên đối tượng, bởi vì mỗi mặt thì là hoàn toàn được nhìn thấy hoặc hoàn toàn bị che khuất. Đối với các đối tượng khác, các kiểm tra phức tạp hơn cần được thực hiện để xác định xem các mặt là bị che khuất hoàn toàn hay chỉ bị che

khuất một phần (xem hình 7-3). Tương tự, chúng ta cần xác định xem các đối tượng là có một phần hay toàn bộ bị che khuất bởi các đối tượng khác. Một cách tổng quát, việc khử mặt khuất sẽ loại bỏ khoảng một nữa số mặt trong một ảnh khi thực hiện các phép kiểm tra tính nhìn thấy được sau này.

Hình 7-3

Ảnh một đối tượng với một mặt b che khuất một phần

Một phần của tài liệu Kỹ thuật lập trình vẽ và tô (Trang 135 - 138)

Tải bản đầy đủ (PDF)

(159 trang)