Đèn khu vực trong Truy tìm đường dẫn


7

Tôi đã theo dõi các hướng dẫn truy tìm tia Scratchapixel trực tuyến, rất tuyệt vời trong việc giải thích lý thuyết đằng sau mọi thứ và cách thực hiện nó. Tuy nhiên, tôi đã đạt đến điểm mà tôi muốn triển khai Đèn khu vực nhưng tôi không biết làm thế nào để làm điều đó. Hướng dẫn trên trang web chưa được tải lên (tất cả mặc dù có một liên kết giữ chỗ với một loạt những người khác).

Không có nhiều trực tuyến liên quan đến việc thực hiện vì vậy điều này đã dẫn tôi đến đây. Ai đó có thể vui lòng giải thích làm thế nào tôi có thể triển khai Đèn khu vực với Truy tìm tia trái ngược với Đèn điểm không?

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


Chỉ cần kiểm tra ... đây là theo dõi tia phải không, theo dõi đường dẫn?
Alan Wolfe

Tôi muốn nói là Truy tìm đường dẫn, sẽ thay đổi tiêu đề.
Arjan Singh

Câu trả lời:


7

Tôi sẽ cung cấp câu trả lời đơn giản / ngây thơ / vũ phu cho câu hỏi này, nó không hoạt động, và cho kết quả chính xác.

Tuy nhiên, có những câu trả lời tốt hơn, làm cho kết xuất hội tụ nhanh hơn với ít mẫu hơn, nhưng sử dụng toán học nâng cao hơn. Tôi hy vọng người khác sẽ cung cấp một câu trả lời dọc theo những dòng đó.

Câu trả lời đơn giản là đây: Đèn khu vực chỉ là hình học có giá trị phát xạ.

Để thêm hỗ trợ cho các giá trị phát xạ cho theo dõi đường dẫn là khá dễ dàng may mắn.

Như bạn đã biết, lượng ánh sáng hướng tới một pixel là lượng ánh sáng rời khỏi bề mặt mà một tia xuống pixel đó sẽ giao nhau.

Điều đó được tính toán một cách đệ quy bằng cách xem lượng ánh sáng chiếu vào điểm đó, tích hợp BRDF, nhân với cosin và tất cả nhạc jazz đó.

Ánh sáng phát xạ chỉ được thêm vào kết quả đó. Vì vậy, bất cứ điều gì bạn có bây giờ là "ánh sáng đi ra" từ một bề mặt, chỉ cần thêm vào đó là màu phát ra của bề mặt đó. (Bạn cũng có thể tùy ý làm một cái gì đó tương tự như ánh xạ kết cấu và có các giá trị phát xạ khác nhau trên đối tượng, có thể dựa trên kết cấu).

Đó là tất cả để có nó, nó rất đơn giản và dễ dàng.

Trong phương trình kết xuất bên dưới, đại diện cho thuật ngữ phát xạ (đó là những gì e đại diện cho, phát xạ) và phần còn lại của phương trình là ánh sáng được tích hợp trên bán cầu. Bạn có thể thấy rằng bạn chỉ cần thêm phát xạ vào kết quả mà bạn trả về dưới dạng ánh sáng đi ra từ một điểm ( ) để áp dụng ánh sáng phát xạ đó.Le(ωo)Lo(ωo)

Lo(ωo)=Le(ωo)+Ωf(ωi,ωo)Li(ωi)(ωin)dωi

Bạn có thể đọc thêm về một trình theo dõi đường dẫn đơn giản với đèn khu vực tại liên kết này, cũng đã nhận xét mã nguồn C ++.

http://blog.demofox.org/2016/09/21/path-tracing-getting-started-with-diffuse-and-emissive/

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


Câu trả lời tuyệt vời này thực sự đã làm rõ mọi thứ, mặc dù tôi sẽ lạc đề một chút, bạn có biết bất kỳ nguồn lực tốt nào về cách triển khai độ sâu của trường không?
Arjan Singh

1
Không xin lỗi, nhưng tôi cũng quan tâm. Đặt câu hỏi khác IMO!
Alan Wolfe

Làm cách nào để tính toán hướng ánh sáng để sử dụng trong Ray Tracer để tính toán Ánh sáng trực tiếp trước tiên? Tôi thậm chí có cần phải làm điều đó? Tôi hơi bối rối ở đây.
Arjan Singh

Bạn không cần phải làm điều đó, không. Bạn chỉ cần bắn các tia ngẫu nhiên ở bán cầu, và một số trong số chúng sẽ chiếu sáng, một số trong số chúng sẽ không. Có nhiều kỹ thuật để bắn tia sáng trực tiếp hơn trong khi vẫn tính đến xác suất bạn đã chọn chúng ngẫu nhiên (để làm cho hình ảnh trông giống nhau), nhưng không bắt buộc, không.
Alan Wolfe

Tôi vẫn thực sự bối rối (tôi xin lỗi), nhưng điều này sẽ chỉ hoạt động đối với chiếu sáng gián tiếp chứ không phải chiếu sáng trực tiếp? Bạn có thể thêm một số mã vào câu trả lời của bạn để minh họa rõ ràng hơn không? Tôi đã xem nguồn cho trình theo dõi đường dẫn trong bài đăng trên blog trên GitHub nhưng tôi không thể hiểu chuyện gì đang xảy ra.
Arjan Singh
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.