경로 추적기-다층 재료 및 중요도 샘플링


12

현재 Monte Carlo 경로 추적기를 구현하려고합니다. 몇 가지 연구를 수행했으며 재료에 대한 일반적인 접근 방식은 레이어 모델을 사용하는 것 같습니다. 이 같은:

여기에 이미지 설명을 입력하십시오

빛이 표면에 닿으면 Fresnel은 첫 번째 레이어에서 반사되는 빛의 양과 두 번째 레이어로가는 빛의 양 등을 알려줍니다.

그래서 나는 비슷하지만 더 간단한 것을했습니다 : 단 하나의 거울과 단 하나의 확산 층. 아직 투과율이 없습니다. 지금까지는 확산에 간단한 코사인 가중치 brdf 를 사용하고 스펙 큘러에는 Cook-Torrance 미세면 처리 모델을 사용합니다.

이제 어려운 부분이 생깁니다. 광선이 표면에 닿으면 어떻게해야합니까? 일반적으로 표면 재료에 해당하는 brdf를 선택하고, 입사광 방향을 샘플링하고, brdf를 평가하고, 올바른 확률 분포 함수로 나눕니다.

그러나 여기서 표면 타격은 효과적으로 여러 재료에 해당합니다. 이것을 처리하는 순진한 방법은 각 레이어 적중마다 한 번 샘플링하는 것입니다. 그러나 이것은 분명히 성능에 큰 영향을 미쳐 내 길을 효과적으로 나무로 만듭니다.

더 나은 해결책이 있습니까?


1
재료 층을 '몬테카를로'할 수 없습니까? 예를 들어, 반사율에 따라 각 레이어에 가중치를 부여하고이를 기반으로 임의로 하나를 선택하십시오. 더 깊은 층은 그 위에있는 모든 층의 흡수의 합에 기초하여 약간의 감쇠가 필요합니다.
PaulHK

PaulHK 이것이 바로 경로 추적기, 계층 간 각 인터페이스에 대한 러시아어 룰렛에서 수행하는 작업이므로 분기가 전혀 없습니다. 불행히도 구현이 아직 완료되지 않았으므로 실제 성능에 대한 정보가 없습니다. Andrea Weidlich와 Alexander Wilkie의 논문 "임의 레이어 마이크로 페이스 표면"을 기반으로 구현 한 결과를 기반으로했습니다. 아주 좋은 결과를 생성하고 구현하기가 훨씬 간단합니다.
Christian Pagot

답변:


7

Wenzel Jakob 등 은 SIGGRAPH 2014에서 레이어드 머티리얼대한 프레임 워크를 제시했습니다 . 섹션 6.2는 중요도 샘플링에 대해 설명합니다. 코드보다 방정식을 선호하는 경우이 메소드는 Mitsuba 렌더러 에서 구현됩니다 .


2
Jakob et al. 일부 특수 푸리에 기준 표현으로 표 형식의 BSDF 데이터 렌더링에 의존 자세한 내용은 해당 기술 보고서를 참조하십시오 . 오픈 소스 구현은 최신 PBRT 3 판에서도 사용할 수 있습니다 . BSDF 파일은 Python에서 layerlab을 사용 하여 생성 할 수 있습니다 .
tizian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.