Tracer đường dẫn - vật liệu nhiều lớp và lấy mẫu quan trọng


12

Tôi hiện đang cố gắng thực hiện một trình theo dõi đường Monte Carlo. Tôi đã thực hiện một số nghiên cứu và dường như một cách tiếp cận phổ biến đối với vật liệu là sử dụng mô hình lớp. Một cái gì đó như thế này:

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

Khi ánh sáng chiếu vào bề mặt, Fresnel cho chúng ta biết bao nhiêu ánh sáng đó được phản chiếu bởi lớp thứ nhất và bao nhiêu đi đến lớp thứ hai, v.v.

Vì vậy, tôi đã làm một cái gì đó tương tự, nhưng đơn giản hơn: chỉ có một lớp đặc trưng và một lớp khuếch tán. Chưa có truyền qua. Cho đến nay rất tốt, tôi sử dụng một brdf có trọng lượng cosine đơn giản cho khuếch tán của tôi và mô hình vi sợi Cook-Torrance cho đặc điểm của tôi.

Bây giờ đến phần khó: tôi nên làm gì khi một tia chạm vào bề mặt? Thông thường, tôi sẽ chọn brdf tương ứng với vật liệu bề mặt, lấy mẫu hướng ánh sáng tới, đánh giá brdf và chia cho hàm phân phối xác suất đúng.

Nhưng ở đây, một bề mặt đạt hiệu quả tương ứng với nhiều vật liệu. Cách ngây thơ để xử lý việc này sẽ là lấy mẫu một lần cho mỗi lần nhấn. Nhưng đây rõ ràng là nguồn gốc của một hiệu suất lớn, khiến con đường của tôi trở thành một cái cây hiệu quả.

Có một giải pháp tốt hơn?


1
Bạn có thể không 'monte-carlo' các lớp vật liệu? Ví dụ: Trọng lượng mỗi lớp theo độ phản xạ của chúng và chọn ngẫu nhiên một lớp dựa trên đó. Các lớp sâu hơn sẽ cần một số suy giảm dựa trên tổng độ hấp thụ của tất cả các lớp trên chúng.
PaulHK

PaulHK Đó chính xác là những gì tôi đang làm trong trình theo dõi con đường của mình, roulette Nga cho mỗi giao diện giữa các lớp, vì vậy, không có sự phân nhánh nào cả. Thật không may, việc triển khai của tôi vẫn chưa kết thúc, vì vậy tôi không có thông tin liên quan đến hiệu suất thực tế. Tôi đã dựa trên triển khai của mình trên bài báo "Các bề mặt vi mô được sắp xếp một cách tùy tiện" của Andrea Weidlich và Alexander Wilkie, dường như bị hạn chế hơn so với khuôn khổ của Wenzel Jakob (được chỉ ra trong câu trả lời của Stefan), nhưng có khả năng tạo ra kết quả khá tốt và đơn giản hơn nhiều để thực hiện.
Christian Pagot

Câu trả lời:


7

Wenzel Jakob et al đã trình bày một khung cho các Tài liệu được xếp lớp tại SIGGRAPH 2014. Phần 6.2 giải thích việc lấy mẫu quan trọng. Nếu bạn thích mã hơn các phương trình, phương thức được triển khai trong trình kết xuất Mitsuba .


2
Lưu ý rằng phương pháp của Jakob et al. dựa vào kết xuất dữ liệu BSDF được lập bảng trong một số biểu diễn cơ sở Fourier chuyên biệt. Để biết chi tiết, cũng tham khảo các báo cáo kỹ thuật tương ứng . Việc triển khai nguồn mở cũng có sẵn trong phiên bản PBRT mới nhất, thứ 3 . Các tệp BSDF có thể được tạo bằng layerlab trong Python.
tizian
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.