Đường dẫn truy tìm BRDF Cook-Torrance


27

- Xin lỗi vì bài viết dài, nhưng tôi thích làm theo cách đó vì " Quỷ dữ nằm trong chi tiết. " :)

Tôi đang viết một công cụ kiểm tra đường đi từ vết xước và nó đang hoạt động tốt cho các bề mặt khuếch tán hoàn hảo (Lambertian) ( nghĩa là thử nghiệm lò cho thấy - ít nhất là về mặt trực quan - rằng đó là bảo tồn năng lượng và kết xuất hình ảnh phù hợp với những gì được tạo ra với trình kết xuất Mitsuba cho cùng thông số). Bây giờ tôi đang triển khai hỗ trợ cho thuật ngữ cụ thể của mô hình microfacet Cook-Torrance ban đầu, để hiển thị một số bề mặt kim loại. Tuy nhiên, dường như BRDF này đang phản ánh nhiều năng lượng hơn mức nhận được. Xem hình ảnh ví dụ dưới đây:

Hình ảnh tham khảo Mitsuba.

Ảnh trên: Hình tham chiếu Mitsuba (giả sử là chính xác): Truy tìm đường đi với lấy mẫu ánh sáng trực tiếp, lấy mẫu bán cầu quan trọng, đường dẫn tối đa = 5, 32 spp phân tầng, bộ lọc hộp, độ nhám bề mặt = 0,2, RGB.

Hình ảnh kết xuất

Hình ảnh trên: Hình ảnh hiển thị thực tế: Truy tìm đường dẫn ngây thơ, lấy mẫu bán cầu đồng nhất, đường dẫn tối đa chiều dài = 5, 4096 spp phân tầng, bộ lọc hộp, độ nhám bề mặt = 0,2, RGB. Mặc dù có một số khác biệt về cài đặt kết xuất, rõ ràng hình ảnh được hiển thị sẽ không hội tụ đến tham chiếu được hiển thị trước đó.

Tôi có xu hướng nghĩ rằng đó không phải là một vấn đề triển khai, mà là một vấn đề liên quan đến việc sử dụng đúng mô hình Cook-Torrance trong khung phương trình kết xuất. Dưới đây tôi giải thích cách tôi đánh giá BRDF đầu cơ và tôi muốn biết liệu tôi có làm đúng hay không và nếu không thì tại sao.

Trước khi đi sâu vào các chi tiết khó chịu, hãy lưu ý rằng trình kết xuất khá đơn giản: 1) chỉ thực hiện thuật toán theo dõi đường dẫn ngây thơ - không lấy mẫu ánh sáng trực tiếp, không theo dõi đường đi hai chiều, không MLT; 2) tất cả các mẫu đều đồng nhất trên bán cầu phía trên điểm giao nhau - hoàn toàn không lấy mẫu quan trọng, không cho các bề mặt khuếch tán; 3) đường tia có độ dài tối đa cố định là 5 - không có roulette Nga; 4) độ rạng rỡ / độ phản xạ được thông báo qua các bộ dữ liệu RGB - không hiển thị quang phổ.

Mô hình nấu microfacet nấu ăn

Bây giờ tôi sẽ cố gắng xây dựng đường dẫn mà tôi đã theo dõi để thực hiện biểu thức đánh giá BRDF cụ thể. Mọi thứ bắt đầu với phương trình kết xuất trong đó là điểm giao nhau ở bề mặt, là vectơ xem, là vectơ ánh sáng, là sự tỏa sáng đi dọc theo , là sự cố rạng rỡ trên dọc theo và .p w o

Lo(p,wo)=Le+ΩLi(p,wi)fr(wo,wi)cosθdω
pwo L o w o L i p w i cosθ= n w iwiLowoLipwicosθ=nwi

Tích phân trên ( nghĩa là thuật ngữ phản xạ của phương trình kết xuất) có thể được xấp xỉ bằng công cụ ước tính Monte Carlo sau đây trong đó là hàm mật độ xác suất (PDF) mô tả phân phối lấy mẫu vectơ . pwk

1Nk=1NLi(p,wk)fr(wk,wo)cosθp(wk)
pwk

Để kết xuất thực tế, BRDF và PDF phải được chỉ định. Trong trường hợp thuật ngữ cụ thể của mô hình Cook-Torrance, tôi đang sử dụng BRDF trong đó Trong các phương trình trên, D=1

fr(wi,wo)=DFGπ(nwi)(nwo)
F=cspec+(1-cspec)
D=1m2(nh)4exp((nh)21m2(nh)2)
G = min ( 1 , 2 ( nh ) ( nw o )
F=cspec+(1cspec)(1wih)5
G=min(1,2(nh)(nwo)woh,2(nh)(nwi)woh)
h=wo+wi|wo+wi| và là màu đặc trưng. Tất cả các phương trình, ngoại trừ , được trích từ bài báo gốc. , còn được gọi là xấp xỉ của Schlick , là một xấp xỉ hiệu quả và ít chính xác hơn với thuật ngữ Fresnel thực tế.cspecFF

Nó là bắt buộc để sử dụng lấy mẫu quan trọng trong trường hợp hiển thị các bề mặt đầu cơ trơn. Tuy nhiên, tôi chỉ tạo mô hình cho các bề mặt gồ ghề hợp lý ( ), do đó, tôi đã quyết định giữ mẫu với thống nhất trong một thời gian (với chi phí thời gian kết xuất lâu hơn). Trong trường hợp này, PDF là Bằng cách thay thế PDF thống nhất và Cook-Torrance BRDF vào công cụ ước tính Monte Carlo (lưu ý rằng là được thay thế bởi , biến ngẫu nhiên), tôi nhận được m0.2

p(wk)=12π
wiwk
1Nk=1NLi(p,wk)(DFGπ(nwk)(nwo))cosθ(12π)
Bây giờ chúng tôi có thể hủy và xóa tổng vì chúng tôi chỉ bắn một tia ngẫu nhiên từ điểm giao nhau. Chúng tôi kết thúc với Vì , chúng tôi có thể đơn giản hóa thêm π
2Li(p,wk)(DFG(nwk)(nwo))cosθ
cosθ=nwk
2Li(p,wk)(DFGnwo)

Vì vậy, đó là biểu thức mà tôi đang đánh giá khi một tia chạm vào bề mặt hình dạng có độ phản xạ được mô tả bởi Cook-Torrance BRDF. Đó là biểu hiện dường như đang phản ánh nhiều năng lượng hơn mức nhận được. Tôi gần như chắc chắn rằng có điều gì đó không ổn với nó (hoặc trong quá trình phái sinh), nhưng tôi không thể phát hiện ra điều đó.

Thật thú vị, nếu tôi nhân biểu thức trên với , tôi sẽ nhận được kết quả trông chính xác. Tuy nhiên, tôi đã từ chối làm điều đó bởi vì tôi không thể biện minh cho toán học.1π

Bất kỳ trợ giúp đều rất đáng hoan nghênh! Cảm ơn bạn!

CẬP NHẬT

Như @wolle đã chỉ ra bên dưới, bài viết này trình bày một công thức mới phù hợp hơn với theo dõi đường dẫn, trong đó hàm phân phối bình thường (NDF) bao gồm yếu tố và BRDF bao gồm yếu tố. Do đó, và vào các phương trình trên phương trình kết xuất, tôi đã kết thúc với D1πfr14

Dnew=1πm2(nh)4exp((nh)21m2(nh)2)
frnew(wi,wo)=DFG4(nwi)(nwo)
Dfr
π2Li(p,wk)(DnewFGnwo)
mà làm việc độc đáo! Tái bút: Vấn đề bây giờ là hiểu rõ hơn về cách thức xây dựng mới cho và giúp duy trì việc bảo tồn năng lượng ... nhưng đây là một chủ đề khác.Dfr

CẬP NHẬT 2

Như PeteUK đã chỉ ra , quyền tác giả của công thức Fresnel được trình bày trong văn bản gốc của câu hỏi của tôi đã bị gán sai cho Cook và Torrance. Công thức Fresnel được sử dụng ở trên thực sự được gọi là phép tính gần đúng của Schlick và được đặt theo tên của Barshe Schlick. Các văn bản gốc của câu hỏi đã được sửa đổi cho phù hợp.


Không chắc chắn nếu bạn vẫn truy cập trang web này, nhưng tôi đã có một câu hỏi về phương trình Fresnel của bạn và đã đăng nó ở đây
PeteUK

Câu trả lời:


12

Theo bài viết này , trong của bạn phải là : vì vậy bạn sẽ kết thúc với 1πfr14

fr=DFG4(nwi)(nwo),
π2Li(p,wk)(DFGnwo).

Tôi đã thấy công thức khác này cho Cook-Torrance BRDF, trong đó phương trình được nhân với thay vì . Tuy nhiên, cuối cùng, hiệu quả của việc sửa đổi này là rất nhỏ vì chúng ta sẽ thay thế 2, hiện diện trong phương trình cuối cùng, bằng 1,57 ( ). Tôi đã thực hiện một bài kiểm tra ở đây (chỉ trong trường hợp ...), và thực sự vấn đề vẫn tồn tại. 114 =π1π=π2
Christian Pagot

@Capagot Một yếu tố của đôi khi được tích hợp vào cường độ nguồn sáng (theo quy ước) và bị loại khỏi BRDF; xem thêm câu hỏi này . Nhưng điều đó phổ biến hơn trong kết xuất thời gian thực hơn là theo dõi đường dẫn. Ngoài ra, bạn nói rằng các bài kiểm tra Lambertian của bạn phù hợp hoàn hảo với Mitsuba, vì vậy có vẻ như đây không phải là vấn đề ... vẫn có thể đáng để xem xét. 1/π
Nathan Reed

@Capagot Tôi nghĩ rằng bạn đang bỏ lỡ một trong chức năng phân phối của bạn . Bài báo tôi liên kết để bao gồm yếu tố đó trong bản phân phối Beckmann mà bạn sử dụng, do đó, việc có trong và trong nên thực hiện thủ thuật. D11πD fr114fr D1πD
wolle

@NathanReed Tôi đã đọc bài viết về việc nhúng vào màu sắc. Tuy nhiên, vì lý do mà bạn đã đề cập, tôi đã tin rằng đó không phải là vấn đề. π
Christian Pagot

@wolle Chính xác! Trên thực tế, tôi đã xem nhanh bài báo mà bạn đã đề cập, nhưng tôi không nhận thấy điều đó! Tôi vừa thay đổi cách triển khai của mình để giải thích cho trong và trong và mọi thứ giờ hoạt động như một bùa mê! Tôi sẽ bao gồm một bản cập nhật cho câu hỏi với câu trả lời! Cảm ơn bạn! D11πD fr14fr
Christian Pagot

13

Tôi đang đăng bài này cho bất kỳ ai thắc mắc về sự nhầm lẫn giữa các điều khoản và . 11π14

Thuật ngữ là một lỗi từ tham chiếu Cook-Torrance ban đầu.1π

Trên thực tế, toàn bộ thuật ngữ xuất phát từ Jacobian của phép biến đổi từ góc rắn phản xạ sang góc rắn thông thường.14(nωi)

Theo hầu hết các bài báo, thuật ngữ lần đầu tiên xuất hiện trong [Torrance, 67] .14

Để giải thích rõ về thuật ngữ này, bạn nên kiểm tra [Nayar, 91] , phụ lục D. Đây là một hình ảnh từ cùng một tờ giấy:

dω=dωr4cosθi

Ngoài ra, Joe Stam đồng ý với thuật ngữ của Nayar trong [Stam 01, Mô hình chiếu sáng cho lớp da bị giới hạn bởi các bề mặt thô ráp], phụ lục B.14

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.