2012-03-28 42 views
5

Tôi hiện đang cố gắng hiểu trình theo dõi được phát triển bởi Kevin Beason (smallpt: http://www.kevinbeason.com/smallpt/) và nếu tôi hiểu mã một cách chính xác, anh ấy chọn ngẫu nhiên hoặc phản xạ tia (nếu bề mặt phản xạ và khúc xạ).Ray Tracing: Chỉ sử dụng tia đơn thay vì cả tia phản xạ và khúc xạ

Dòng 71-73:

return obj.e + f.mult(depth>2 ? (erand48(Xi)<P ? // Russian roulette 
radiance(reflRay,depth,Xi)*RP:radiance(Ray(x,tdir),depth,Xi)*TP) : 
radiance(reflRay,depth,Xi)*Re+radiance(Ray(x,tdir),depth,Xi)*Tr); 

Ai có thể vui lòng giải thích những nhược điểm của chỉ đúc một tia duy nhất thay vì cả hai trong số họ? Tôi chưa bao giờ nghe nói về kỹ thuật này và tôi tò mò về sự cân bằng giữa cái gì, cho rằng nó dẫn đến một sự giảm phức tạp lớn.

+2

Bạn đã xem [bản trình bày này] (https://docs.google.com/open?id=0B8g97JkuSSBwUENiWTJXeGtTOHFmSm51UC01YWtCZw) giải thích mọi thứ và được liên kết rõ ràng trên trang web đó chưa? – KillianDS

+0

Có, tôi đã đọc bản trình bày và nó rất tuyệt! Những gì tôi đang tìm kiếm là một giải thích sâu hơn về cách chỉ đúc một tia ảnh hưởng đến hiệu quả của thuật toán. Tại sao ông quyết định rằng đối với độ sâu lên đến 2 cả hai tia nên được đánh giá nhưng không phải sau đó (tức là có bất kỳ lý do nào đằng sau lý do tại sao nó là chính xác 2 hoặc là nó nhiều hơn hoặc ít hơn ngẫu nhiên?). – crapper

+0

nhiều hơn hoặc ít hơn ngẫu nhiên, nhưng ý tưởng có lẽ là bạn sẽ nhận được cường độ màu nhất từ ​​vài phản xạ và hấp thụ đầu tiên của bạn. Bạn càng phản ánh/khúc xạ càng nhiều thì càng có nhiều đóng góp không đáng kể. – KillianDS

Trả lời

3

Đây là bộ theo dõi tia Monte-carlo. Ưu điểm của nó là bạn không sinh ra một số lượng tia tăng theo cấp số nhân - có thể xảy ra ở một số hình học đơn giản .. Mặt bên dưới là bạn cần trung bình trên một số lượng lớn mẫu. Thông thường bạn lấy mẫu cho đến khi độ lệch dự kiến ​​từ giá trị thực là "đủ thấp". Làm việc ra bao nhiêu mẫu được yêu cầu đòi hỏi một số số liệu thống kê - hoặc bạn chỉ cần lấy rất nhiều mẫu.

2

Có lẽ anh ấy dựa vào các pixel siêu mẫu và tin tưởng rằng màu trung bình sẽ hoạt động chính xác, mặc dù không chính xác.

tức là cháy 4 tia qua một pixel và trên trung bình 2 được phản ánh, 2 bị khúc xạ.
Kết hợp chúng để nhận được xấp xỉ một tia phản xạ và khúc xạ.

+0

Từ khi nhìn vào mã này, giao diện này có vẻ đúng về các dòng 83, 84. –