Xử lý răng cưa chiếu trong bản đồ bóng


15

Tôi loay hoay với mô hình 3D thủ tục đơn giản để tạo ra các tòa nhà tuổi teen để in 3D. Một ví dụ:

Tòa nhà


Để làm cho các mô hình dễ đọc hơn trên màn hình, tôi đã triển khai ánh xạ bóng cơ bản cho một ánh sáng định hướng duy nhất. Vì cảnh của tôi không thay đổi, tôi chỉ hiển thị bản đồ bóng một lần bằng cách sử dụng hộp căn chỉnh trục của cảnh để tìm ra giới hạn của bản đồ bóng sẽ là gì. Các bóng và giới hạn trông giống như tôi đã có tất cả các ma trận đúng, nhưng đến gần hơn một chút có vẻ khủng khiếp:

Cận cảnh tháp

Từ bài đọc tôi đã thực hiện, tôi hiểu peter panning và những gì tôi có thể làm về nó, nhưng các cạnh rách rưới, mà tôi tin là một dạng răng cưa chiếu, trông tệ đến mức tôi nghĩ có gì đó không đúng trong quá trình thực hiện cơ bản của mình.

Tôi đã hack pixel shader để hiển thị ranh giới texel bóng:

Hiển thị ranh giới Texel

Tôi đã lọc song tuyến trong kết cấu (không có nó, tôi bị mụn trứng cá nghiêm trọng). Đáng buồn thay, nỗ lực của tôi tại PCF cũng thất bại - nó trông giống như bị rách nát:

nhập mô tả hình ảnh ở đây

Đây là trường hợp mẫu đơn với tính năng lọc song tuyến bị vô hiệu hóa:

nhập mô tả hình ảnh ở đây

Điều này có giống như răng cưa "điển hình" không? Có thể hiển thị động của bản đồ bóng, sử dụng chế độ xem bị cắt xén vào cảnh, có thể với tầng, giải quyết vấn đề không?

Chỉnh sửa: Thêm một cái nhìn cận cảnh về lọc song tuyến, so sánh bóng bài, chỉ để hiển thị những gì tôi nhận được. Mụn trứng cá xấu xuất hiện vì các cạnh bên trong; Tôi đang tạo mô hình với các khối ảo xếp chồng lên nhau và không thực hiện thao tác hợp nhất. Từ việc đọc của tôi, việc thực hiện các thao tác boolean trên khối đa diện không phải là chuyện nhỏ, nhưng cũng sẽ cho phép tôi thực hiện các khối bóng tĩnh cũng như dọn dẹp cho một số phần mềm in 3D.

Lọc nhị phân

Câu trả lời:


10

Bản đồ bóng với chất lượng chấp nhận được là một hành trình. Vì vậy, bạn đã thực hiện bước đầu tiên - bản đồ bóng cơ bản bao gồm toàn bộ cảnh tĩnh. Điều này có nghĩa là kích thước texel của bản đồ bóng trong không gian xem ánh sáng đến kích thước texel của cảnh được hiển thị trong tỷ lệ không gian xem của camera là khá lớn, dẫn đến hiện tượng răng cưa. Để giảm tỷ lệ này gần hơn với 1: 1, có những kỹ thuật bạn đã đề cập như:

  • cách dễ nhất là tăng kích thước bản đồ bóng của bạn, để tìm giá trị với hiệu suất vẫn tối ưu,
  • căn chỉnh bản đồ bóng với máy ảnh xem bực bội. Sau đó, bản đồ bóng bao gồm một phần nhỏ hơn của cảnh, vì vậy nó làm giảm răng cưa,
  • điều này có thể được cải thiện thành CSM, hoạt động tương tự nhưng bạn cần kết xuất cảnh cho từng tầng với vị trí trung tâm khác nhau của ma trận chế độ xem ánh sáng dựa trên điểm trung tâm của mỗi lát cắt.

Một số kỹ thuật cơ bản để làm mịn cạnh của bóng:

  • rõ ràng là PCF, nhưng nên kết hợp triển khai PCF của bạn với PCF phần cứng tích hợp (trong Opengl - bằng cách sử dụng sampler2DShadow). Điều này sẽ dẫn đến việc lặp lại ít vòng lặp hơn từ phía bạn và PCF rẻ hơn,
  • độ chụm của các cạnh có thể được trao đổi với nhiễu bằng cách sử dụng đĩa Poisson xoay. Các mẫu được sử dụng để lấy mẫu từ bản đồ bóng được xoay ngẫu nhiên với mỗi lần lặp của vòng lặp PCF.

Bạn cũng có thể nghiên cứu các kỹ thuật làm mịn cạnh như:

  • kết xuất bản đồ bóng cho bộ đệm khung ứng dụng MSAA,
  • tăng cường hơn nữa PCF bằng cách nội suy ,
  • tăng số lượng mẫu với sự pha trộn thời gian .

Kỹ thuật cơ bản PCF bị mụn trứng cá có thể được khắc phục bằng cách áp dụng một số bù trong thử nghiệm bóng. Tính kích thước của phần bù này cũng là lĩnh vực nghiên cứu .

Các phương pháp bản đồ bóng nâng cao khác bao gồm:

  • Bản đồ bóng theo cấp số nhânBản đồ bóng phương sai - trong hầu hết các trường hợp không bị mụn trứng cá và cung cấp các cạnh mịn mà không bị tắc nghẽn, nhưng phải trả giá cho một số tình huống rò rỉ ánh sáng,
  • Bản đồ bóng phương sai theo hàm mũ - có lẽ là kỹ thuật tiên tiến nhất của ánh xạ bóng bản đồ độ sâu 2D, kết hợp độ mượt của VSM và giải quyết rò rỉ ánh sáng, với chi phí sử dụng bộ nhớ tăng gấp đôi,
  • Percentage Closer Soft Shadows - kỹ thuật cơ bản để nâng cao các bản đồ bóng truyền thống với kích thước bút khác nhau,
  • Bản đồ nhiều bóng - nhiều bản đồ bóng của một số kỹ thuật, được bố trí trên ánh sáng khu vực, để tính toán các bóng mềm thực tế với kích thước bút khác nhau,
  • Bản đồ bóng tối - để tăng cường tán xạ thể tích với bóng,
  • Tia thời gian thực truy tìm bóng tối - có lẽ là tương lai.

Bạn đã không thất bại với PCF, có vẻ như vậy :)

Tôi ước có một cách để áp dụng độ mờ gaussian trên bản đồ bóng trong không gian xem camera, nhưng nó không hoạt động như mong đợi.


Một phần của bình luận này là cảm ơn bạn vì câu trả lời của bạn, vì vậy tôi chỉ nghĩ rằng tôi sẽ cho bạn biết vì bạn sẽ không nhận được thông báo từ đó.
trichoplax

Vâng, tôi đã nhìn thấy nó nhưng cảm ơn.
narthex

1

Bạn đã nói rằng "... song tuyến lọc trong kết cấu ...". Có vẻ như bạn đang nội suy các giá trị độ sâu của bản đồ bóng. Cách chính xác của việc sử dụng phép nội suy với bản đồ bóng là áp dụng nó vào kết quả của các thử nghiệm bóng (theo như tôi nhớ, OpenGL hỗ trợ điều đó). Bạn thậm chí có thể kết hợp nội suy kết quả của các thử nghiệm bóng với PCF, sẽ mang lại kết quả tốt hơn nhiều. Tuy nhiên, như bạn có thể nhận thấy, răng cưa là một bệnh dịch luôn theo đuổi bản đồ bóng :)

Mặc dù tôi hiểu rằng bạn đang tìm kiếm giải pháp liên quan đến ánh xạ bóng (thậm chí vì nó khá đơn giản để thực hiện), bạn đã bao giờ xem xét việc sử dụng khối lượng bóng chưa? Việc thực hiện sẽ phức tạp hơn nhiều, nhưng hoàn toàn không bị răng cưa, và tôi nghĩ sẽ phù hợp với mục đích của bạn.


Cảm ơn rất nhiều cho câu trả lời! Để có kết quả mà tôi đang tìm kiếm, có thể phù hợp để chuyển sang khối lượng bóng. Liên kết codeflow được cung cấp trong "nội suy" rất hữu ích - cảm ơn!
Daniel M Gessel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.