Tôi có thiếu một cái gì đó cho tắc xung quanh?


7

Tôi đang cố gắng thực hiện việc che khuất môi trường xung quanh trong Python 3 và tôi thấy bóng tối bên dưới các quả cầu phản chiếu của mình nhưng chúng có vẻ rất mờ. Tôi không chắc điều đó có nghĩa là tôi đã bỏ lỡ điều gì đó hay tôi chỉ có ấn tượng sai về kết quả bóng tối từ việc che khuất xung quanh.

Kết quả trông như thế này:

4 quả cầu phản chiếu dưới bầu trời trắng đồng đều

Điều này được mô hình hóa như hình cầu (chứ không phải lưới tam giác). 4 quả cầu gương màu vàng đang lơ lửng ngay phía trên một quả cầu rất lớn để xấp xỉ một mặt phẳng, và toàn bộ khung cảnh được bao quanh bởi một quả cầu phát xạ màu trắng rất lớn cung cấp ánh sáng bầu trời xung quanh.

Đối với mỗi tia mẫu pixel được chọn với phân bố Gaussian quanh tâm pixel và nhiều mẫu được chọn cho đến khi phương sai đủ thấp. Tia phản xạ theo hướng phản xạ cơ bản duy nhất từ ​​các mặt cầu gương và theo bất kỳ hướng nào từ bán cầu của các hướng có thể khi chạm sàn. Tất cả các tia cuối cùng chiếu vào quả cầu bầu trời trắng và màu sắc được xác định dựa trên tổn thất trên đường đi.

Có một số bước quan trọng tôi đang xem?


2
Bạn đang sử dụng theo dõi đường dẫn hoặc theo dõi tia chính xác vật lý? Nếu vậy, thì tắc xung quanh đã là một hệ quả tích hợp sẵn của thuật toán và không cần phải được mô hình hóa cụ thể. Theo trực giác, đối với tôi có vẻ đúng là bóng mờ: các quả cầu của bạn là gương và do đó các tia khuếch tán bắn từ mặt đất gần quả cầu sẽ có xu hướng bị phản xạ ra xa và hướng về phía bầu trời thay vì quay ngược xuống mặt đất như xảy ra với các quả cầu khuếch tán .
yuriks

1
Bạn có biết về chỉnh sửa srgb? Nếu không đó có thể là một yếu tố. http.developer.nvidia.com/GPUGems3/gpugems3_ch24.html
Alan Wolfe

Tôi cũng với Alan, gamma có thể gây ra tất cả các vấn đề tương phản. Nhưng một quả cầu phát xạ đồng đều sẽ có xu hướng tạo ra những vết cắn rất mờ. Bạn nên cố gắng sử dụng hệ số dự phòng trong phát thải, sao cho phát thải theo chiều dọc mạnh hơn phát thải chăn thả. Ngoài ra hình cầu của bạn là phản chiếu, làm cho sau đó hấp thụ. nhưng tôi đoán người theo dõi của bạn không tính đến điều đó nếu không chúng ta sẽ thấy nhiều năng lượng hơn trong các quả cầu của bạn.
v.oddou

Bầu trời của bạn có thể đang đúc một cây bút nhỏ thay vì một cái bóng. Giảm nó thành một quả cầu nhỏ để kiểm tra. Ngoài ra, các quả cầu đang gián tiếp chiếu sáng nền.
Yves Daoust

1
Tôi đã tìm thấy một bức ảnh thực sự chứng minh rằng bạn đang thiếu một số tắc nghẽn imgur.com/a/qcxmK
v.oddou

Câu trả lời:


6

Hơi khó để nói từ hình ảnh của bạn, nhưng nó trông hơi mờ nhạt. Khi gỡ lỗi những thứ này, việc loại bỏ cảnh của bạn càng nhiều càng tốt để loại bỏ bất kỳ sự phức tạp không cần thiết nào khỏi ảnh. Trong trường hợp của bạn, hãy thử chỉ tạo một quả cầu khuếch tán duy nhất chạm đất ở một điểm. Đặt mặt đất và hình cầu một suất phản chiếu bằng 1. Nếu việc che giấu xung quanh được thực hiện chính xác, điểm mà quả cầu chạm đất phải có giá trị pixel là 0; Càng ở xa quả cầu bạn nhận được, các giá trị pixel sẽ càng gần 1 (không ở trên - đảm bảo không có gì bị kẹp khi bạn xuất hình ảnh). Hãy chắc chắn để gamma sửa hình ảnh của bạn.

Điều duy nhất rút ra từ mô tả của bạn là

Tia phản xạ [...] theo bất kỳ hướng nào từ bán cầu của các hướng có thể khi chạm sàn

Điều đó tự nó là tốt, nhưng bạn cần đảm bảo nhân các tia với Lambertian BRDF (tức là chấm (bình thường, tia) / Pi). Thậm chí tốt hơn là lấy mẫu trực tiếp từ một bán cầu cosin, trong trường hợp đó tất cả các yếu tố hủy bỏ. Bài đăng blog này có tất cả các thông tin quan trọng ở một nơi.


Giá trị albedo của 1 sẽ không tạo ra hình ảnh không bao giờ hội tụ? Afaik, albedo phải luôn luôn <1 để hội tụ xảy ra. Một suất phản chiếu 1 sẽ đặc biệt không gây ra bóng tiếp xúc vì các tia sẽ bị phản xạ hoàn hảo cho đến khi chúng chạm tới nguồn sáng như bầu trời.
yuriks

Trong chiếu sáng toàn cầu, sẽ không có bóng liên lạc, vâng. Tuy nhiên, câu hỏi là về tắc xung quanh, chỉ thực hiện một lần nảy. Ngoài ra, miễn là cảnh không bị đóng (tức là có thể nhìn thấy bầu trời), cảnh sẽ hội tụ nếu chiếu sáng toàn cầu được sử dụng ngay cả với suất phản chiếu của 1.
Benedikt Bitterli

Thủ thuật đặt quả cầu xuống đất và nhìn vào điểm tiếp xúc là một điều tuyệt vời. Lưu ý rằng nó hoạt động để gỡ lỗi đèn (hình cầu) của bạn quá, nhưng theo hướng ngược lại!
imallett

3

Tôi sẽ thêm một số hướng dẫn để giúp người đọc hiểu câu nói của Benedikt Bitterli "Hãy chắc chắn để gamma chỉnh sửa hình ảnh của bạn".

Gamma sửa ảnh không có nghĩa là áp dụng bộ lọc nguồn ở cuối. Nó có nghĩa là làm việc trong không gian tuyến tính trong tất cả các tính toán, và cuối cùng mã hóa đầu ra vào không gian gamma.

Không gian Gamma là không gian màu mà tất cả các máy hiển thị ở độ tuổi này mong muốn các giá trị RGB được hiển thị cho chúng.

Không gian tuyến tính đối lập, là thực tế làm việc với các giá trị tỷ lệ thuận với phát thải vật lý.

Do đó, khi nghệ sĩ chỉnh sửa các giá trị của màu albedos của bề mặt thế giới và màu của ánh sáng của cảnh, anh ta thực hiện nó trong không gian gamma vì không có phần mềm phiên bản nào dám sửa đổi những gì người dùng đã nhập và chỉ lưu lại Là. Vì vậy, nghệ sĩ đã nhìn vào một cái gì đó có vẻ tốt cho anh ta, trong khi được lưu trữ trong không gian gamma.

Vì vậy, bước đầu tiên của tất cả các công cụ kết xuất, nên là chuyển đổi tất cả đầu vào được chỉnh sửa của con người sang không gian tuyến tính trước tiên. Trong trường hợp của bạn, điều đó có nghĩa là tất cả các màu sắc hình cầu và giá trị khí thải.

Sau đó, bạn thực hiện raytracing thông thường, đánh giá brdf, lấy mẫu monte carlo, bất cứ quy trình nào, trong HDR nếu có thể sử dụng float32các thành phần nếu có thể. (thường hoạt động tốt với 128 bit SIMD dưới dạng r,g,b,avectơ).

Cuối cùng, bạn điều chỉnh bộ lọc hình ảnh HDR theo giá trị phơi sáng bạn chọn, theo phương pháp heuristur hoặc thủ công. Thao tác này có thể rất đơn giản như a clamp. Và sau đó và chỉ sau đó, bạn mã hóa hình ảnh cuối cùng vào không gian gamma.

Cơ sở là: một màn hình sẽ lấy giá trị đầu vào x và áp dụng công thức x ^ 2.2 để tạo ra bức xạ vật lý trên pixel đầu ra.

Do đó, các công thức chuyển đổi diễn ra như sau:

tuyến tính đến gamma: x ^ (1 / 2.2)
gamma thành tuyến tính: x ^ 2.2

Xin lưu ý là câu đố rằng không gian sRGB có công thức phức tạp, a ifvà một số bù. Nhưng nhìn từ xa đường cong rất rất gần với gamma đơn giản.

Điều thứ hai cần tính đến, bạn có chắc chắn việc lấy mẫu của bạn là công bằng?
Bạn có thể lấy mẫu quá nhiều theo hướng cho phép nhiều tia tới bầu trời hơn. kiểm tra tính đồng nhất của mẫu của bạn. Bạn nói rằng bạn sử dụng một gaussian có vẻ như tôi sẽ yêu cầu sự thiên vị. Chỉ cần sử dụng lấy mẫu phân phối Lambert cổ điển: https://pathtracing.wordpress.com/ bằng cách này bạn giảm số lượng mẫu cần thiết để có được phương sai tương đương với hình cầu hoàn toàn đồng nhất. và bạn cũng lưu đánh giá cosine vì nó được nhúng trong bản phân phối.

Cuối cùng, nếu các quả cầu của bạn thực sự là gương và GI của bạn được cho là thực sự hoạt động, nó sẽ tích lũy năng lượng phản xạ trên mặt đất, do đó bù cho bóng của bạn không bị tắc. Tôi thậm chí mong đợi sẽ thấy nhiều năng lượng hơn là tối trong những trường hợp như vậy.


Thú vị - cảm ơn bạn. Đối với ánh sáng bổ sung chiếu xuống sàn từ các quả cầu, tôi hy vọng nó sẽ nhỏ hơn ánh sáng chiếu xuống sàn trực tiếp từ bầu trời nếu các quả cầu không ở đó, vì chúng lồi. Đó là, tôi không thể tưởng tượng ra chất ăn da do chỉ các bề mặt lồi khi ánh sáng chiếu đều từ bầu trời. Ngay cả trong trường hợp cực đoan của tất cả ánh sáng bị phản xạ (không hấp thụ), tôi sẽ mong đợi đơn giản là không có bóng, hơn là một chất ăn da.
trichoplax

1
Tôi hiểu trực giác của bạn. Tôi muốn dám thực hiện một tính toán phân tích cho năng lượng mà chúng ta nên mong đợi trên một pixel nằm ngay dưới tiếp tuyến dọc của quả cầu nhưng tôi rất chậm môn toán nên tôi đã từ bỏ lol. Thật vậy, các bề mặt lồi sẽ chỉ phản ánh thông qua một đường dẫn đến bất kỳ điểm phát xạ đơn lẻ nhất định nào, do đó, tụ quang dường như không hợp lý.
v.oddou
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.