Nếu bạn đang thực hiện một hình ảnh phối cảnh và mô hình của bạn có các giao điểm ngầm thì nếu bạn sử dụng "Z tuyến tính", các giao điểm đó sẽ xuất hiện ở những vị trí sai.
Ví dụ, hãy xem xét một mặt phẳng mặt đất đơn giản với một đường dây điện thoại, lùi dần vào khoảng cách, xuyên qua mặt đất (và tiếp tục bên dưới). Các giao điểm ngầm sẽ được xác định bởi các giá trị độ sâu nội suy. Nếu chúng không được nội suy với 1/Z
, thì khi các đỉnh được chiếu đã được tính toán với phối cảnh, hình ảnh sẽ trông không chính xác.
Tôi xin lỗi vì chất lượng phi thẩm mỹ của các minh họa sau đây nhưng tôi đã thực hiện chúng vào năm 97.
Hình ảnh đầu tiên cho thấy hiệu ứng kết xuất được yêu cầu. (Lưu ý rằng các "giá treo" màu xanh đi một khoảng cách khá dài dưới mặt phẳng mặt đất nên được cắt ở dưới cùng của hình ảnh)
Hình ảnh thứ hai này cho thấy kết quả của việc sử dụng bộ đệm độ sâu không tương hỗ: (Lời xin lỗi cho việc thay đổi tỷ lệ - chúng được sao chép từ tài liệu MS Word cũ và tôi không biết điều gì đã xảy ra với tỷ lệ.)
Như bạn thấy, kết quả không chính xác.
Trên một lưu ý khác, chắc chắn bạn thực sự muốn một đại diện Z tuyến tính? Nếu bạn đang hiển thị phối cảnh, chắc chắn người ta muốn độ chính xác gần máy ảnh hơn ở khoảng cách xa?
Nhận xét sau của bạn:
Nếu tôi không hiểu nội dung đó thì tôi không hiểu. Nội suy đó là gì?
Điều đầu tiên cần lưu ý là, với phép chiếu phối cảnh tiêu chuẩn, các đường thẳng trong không gian thế giới vẫn là các đường thẳng trong không gian phối cảnh. Khoảng cách / chiều dài, tuy nhiên, không được bảo tồn.
XSc r e e n= XWo r l dZWo r l d
YSc r e e n= YWo r l dZWo r l d
ZSc r e e n= 1ZWo r l d
ZSc r e e n= s c a l e ∗ ZWo r l d
⎡⎣⎢001⎤⎦⎥a n d⎡⎣⎢200010⎤⎦⎥
⎡⎣⎢001⎤⎦⎥a n d⎡⎣⎢2000,1⎤⎦⎥
Hệ thống / phần cứng kết xuất sẽ nội suy tuyến tính không gian màn hình z, do đó, tại điểm 1/2 của dòng, khi nó xuất hiện trên màn hình, tức là ở pixel (10, 0), chúng ta sẽ có Z (chiếu) ngược giá trị 0,55, tương ứng với giá trị giá trị Z của không gian thế giới là ~ 1,818. Với các giá trị Z bắt đầu và kết thúc, đây là khoảng 20% dọc theo chiều dài của dòng.
Nếu thay vào đó, chúng tôi đã cố gắng nội suy bằng các giá trị Z ban đầu, chúng tôi sẽ kết thúc với Z tương ứng với giá trị không gian thế giới là 5,5. Miễn là không có gì giao nhau, bạn có thể ổn (Tôi đã không nghĩ về nó quá kỹ lưỡng) nhưng bất cứ điều gì có giao lộ ngầm sẽ không chính xác.
Điều tôi chưa đề cập là một khi bạn giới thiệu kết cấu chính xác phối cảnh (hoặc thậm chí tô bóng chính xác cho phối cảnh), bạn phải thực hiện phép nội suy trên mỗi pixel 1 / w và, ngoài ra, cũng tính toán, trên mỗi pixel, đối ứng của giá trị được nội suy đó.
far / z
, là tiêu chuẩn, không có ý nghĩa. Nó mang lại một bộ đệm độ sâu trở nên tuyến tính hơn khi hai mặt phẳng clip gần nhau hơn. Nó có vẻ như là một sự kết hợp của hai khái niệm: Z tuyến tính không gian màn hình và ánh xạ bộ đệm độ sâu không cố định cho một vụ hack hiệu suất.