Cách thích hợp để xử lý khuếch tán + khúc xạ + tia phản xạ trong theo dõi đường dẫn?


7

Giả sử chúng ta đang theo dõi đường đi và có một đối tượng có một lượng phản xạ khuếch tán và một số lượng phản xạ gương.

Cách tốt nhất hoặc chính xác để xử lý điều đó trong trình theo dõi đường dẫn là gì?

Nhìn vào smallpt ( http://www.kevinbeason.com/smallpt/ ), nó không cho phép các đối tượng có cả hai, mà thay vào đó, buộc các vật liệu phải khuếch tán hoặc đặc biệt.

Tôi đã thấy mã theo dõi đường dẫn khác cuộn một số ngẫu nhiên để chọn đường đi, sử dụng độ chói của độ phản xạ khuếch tán và đặc trưng làm trọng số trong cuộn ngẫu nhiên.

Tôi cũng đã thấy mã theo cả hai đường dẫn và phân kỳ khi điều này xảy ra và tính tổng các kết quả, trong đó mỗi tia đệ quy được nhân với hệ số phản xạ tương ứng của nó.

Tôi đã thấy khúc xạ xử lý tương tự như tất cả các bên trên.

Có một cách chính xác về thể chất để xử lý các tình huống này?



Tỷ lệ ánh sáng khúc xạ và phản xạ phụ thuộc vào góc tới. Bạn đang tìm cách đưa điều này vào tài khoản? Ví dụ: các phương trình Fresnel hoặc xấp xỉ của Schlick nếu bạn muốn bỏ qua phân cực.
trichoplax

Câu trả lời:


7

Hãy để chúng tôi lùi lại một bước. Khi bạn thực hiện theo dõi đường dẫn, bạn đang thực hiện tích hợp Monte Carlo. Điều đó có nghĩa là gì? Bạn cố gắng giải quyếtf(x)dxbằng cách lấy mẫu. Sự tích hợp Monte Carlo nói cho một sự đủ lớnn: 1ni=0nf(xi)f(x)p(x)dx

Nếu chúng ta thay f(xi)p(xi) chúng tôi nhận được 1ni=0nf(xi)p(xi)f(x)dx. Bây giờ của bạnf(x) là phương trình kết xuất và bạn có cho mình một cách gần đúng phương trình kết xuất.

Bây giờ chúng ta đang ở cùng một trang về những điều cơ bản, hãy xem xét những gì bạn làm. Bạn tạo ra một đường ánh sáng, nó sẽ trở thành một trong những mẫuf(xi)p(xi). Để làm điều này, bạn mô hình hóa sự tương tác của ánh sáng với bề mặt ở mỗi bước dọc theo đường dẫn. Và bạn luôn cập nhật xác suất đường dẫn hiện tại của bạnp(xi).

Bây giờ đâu là cách chính xác để xử lý một vật liệu có nhiều cách khác nhau mà một tia có thể truyền đi? Không có một cách chính xác. Phần quan trọng duy nhất là, giá trị của bạnn, f(xi)p(xi) giữ đúng

Khi bạn phân kỳ đường đi và sinh ra hai tia, bạn phải tăng số lượng ntrong tổng số mẫu phù hợp bởi vì bây giờ bạn đã thực hiện hai mẫu. Sau đó xử lý cả hai con đường như thể chúng tách biệt ngay từ đầu.

Nếu bạn muốn chỉ tiếp tục một con đường, bạn có thể làm điều đó với cách roulette Nga. Xác định ba khoảng (một cách phổ biến là chọn các khoảng là phân vùng của các số từ 0 đến 1). Kích thước tương đối của các khoảng này phải tỷ lệ thuận với vật liệu. Phần khó khăn là làm thế nào để bạn thiết kế này. Trong lớp học của chúng tôi, chúng tôi đã xác định một số phản xạρ. Chúng tôi vẽ một số ngẫu nhiên trong khoảng từ 0 đến 1, nếu nó thấp hơnρcon đường kết thúc. Khác chúng tôi phản ánh. BRDF sẽ chăm sóc để cân trọng lượng của phần chính và phần khuếch tán nếu bạn làm đủ mẫu.

Tất nhiên bạn có thể cải thiện điều này thông qua việc lấy mẫu quan trọng, và đó có lẽ là nơi bạn gặp vấn đề. Đối với một thiết kế bề mặt rất đặc biệt, một phân phối ngẫu nhiên chỉ rút ra nhiều hướng hơn từ hướng phản xạ của gương. Nghỉ ngơi sẽ được khuếch tán. Tôi không có đủ kinh nghiệm với các công cụ theo dõi thực sự phình to để giúp bạn cách thiết kế một, nhưng nguồn của bạn có thể sẽ có một cái gì đó ở đây.

Điều quan trọng ở đây là một lần nữa: Thiết kế nó để bạn biết khả năng của một hướng cụ thể, và sau đó giữ nguyên hướng của bạn p(xi) tùy theo nó, vì vậy cuối cùng bạn có thể chia cho điều này và có được ước tính chính xác của Monte Carlo.

TL; DR Không có cách chính xác. Điều quan trọng là phải giữ xác suất của các mẫu trong tâm trí.

Tôi hy vọng tôi đã không bỏ lỡ điểm hoàn toàn của câu hỏi của bạn.

Bổ sung: Monte Carlo samling, miễn là bạn xác định trọng số theo xác suất, sẽ luôn luôn có các mẫu vô hạn hội tụ với giá trị chính xác. Điều này có nghĩa là ngay cả khi bạn sử dụng một cách hoàn toàn ngu ngốc để tạo mẫu, nếu bạn làm điều đó đủ lâu, điều đó sẽ hiệu quả. Có thể không phải trong cuộc đời của bạn hoặc của cháu chắt của bạn, nhưng nó sẽ.

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.