이것이 맥주 법을 구현하는 올바른 방법입니까?


11

Beer의 법칙 (물체를 통한 거리에 걸친 색 흡수)을 구현할 때 어떤 이유로 든 좋아 보이지 않습니다.

객체 뒤에 색상이 있으면 다음과 같이 조정 된 색상을 계산합니다.

const vec3 c_absorb = vec3(0.2,1.8,1.8);
vec3 absorb = exp(-c_absorb * (distanceInObject));
behindColor *= absorb;

그러면 다음과 같은 내용이 나옵니다 (약간의 굴절 적용). 여기에 이미지 설명을 입력하십시오

그리고 여기에는 굴절이 없습니다. 여기에 이미지 설명을 입력하십시오

이것은 여기서 셰이더 장난감으로 구현됩니다 .

이는 Beer의 법칙에 대한 설명을 충족하지만 다음과 같은 샷과 비교할 때별로 좋지 않습니다. 여기에 이미지 설명을 입력하십시오

스페 큘러 하이라이트는 제쳐두고 차이를 알아 내려고 노력하고 있습니다. 내 지오메트리가 너무 단순해서 실제로 잘 보여줄 수 없을까요? 아니면 잘못 구현하고 있습니까?


2
그러나 큐브를보다 복잡한 메시와 비교하고 있습니다. 왜 같은 시나리오를 복제하지 않습니까? Susan 모델은 쉽게 얻을 수 있습니다.
Bart

셰이더 토이 구현에서는 쉽지 않습니다! (:
Alan Wolfe

2
당신은 큐브가 나에게 맞아 보입니다 : 가장자리에 가까워 질수록 투명 해집니다. 수잔을 완전히 날려 버릴 수 있다면 구체는 적어도 다른 그림의 모양을 더 잘 근사화해야합니다.
yuriks

1
굴절을 감쇠와 분리 할 수 ​​없습니다. IOR = 1.0으로 큐브를 렌더링 할 수 있습니까?
imallett

1
@AlanWolfe 당신의 IOR = 1 렌더는 내가 기대했던대로 정확하게 보이고, 나는 셰이더 장난감 임펄스를 감추었 고 좋아 보인다.
imallett

답변:


12

이미지가 올바르게 보이지 않고 광선을 통해 메쉬를 통과 할 때 광선의 내부 경로를 올바르게 계산하지 않는 것 같습니다. 그것의 외관에서, 뷰 광선이 처음 큐브에 들어가는 지점과 처음으로 내부 벽에 닿는 지점 사이의 거리를 계산하고 그것을 흡수 거리로 사용한다고 말하고 싶습니다. 이것은 본질적으로 빛이 벽에 처음 닿을 때 항상 유리를 빠져 나간다고 가정합니다.

실제로 빛이 공기에서 유리로 들어올 때 종종 유리에서 즉시 빠져 나오지 않습니다. 빛이 유리 / 공기 인터페이스에 부딪히면 내부 전반사 (TIR) 라고하는 현상 이 발생할 수 있기 때문입니다. TIR은 높은 굴절률 (IOR)을 가진 매체에서 낮은 IOR을 가진 매체로 빛이 이동할 때 발생합니다. 이는 빛이 유리 물체의 내벽에 부딪 치는 경우에 정확히 발생합니다. Wikipedia의이 이미지는 발생했을 때의 모습을 시각적으로 잘 보여줍니다.

내부 전반사

기본적으로 빛이 얕은 각도로 닿으면 빛이 매체 내부에서 완전히 반사됩니다. 이를 설명하려면 프레 넬 방정식 을 평가해야합니다.광선이 유리 / 공기 인터페이스 (메시의 내부 표면이라고도 함)에 닿을 때마다. 프레 넬 방정식은 반사 된 빛과 굴절 된 빛의 양의 비율을 알려주며, TIR의 경우 1입니다. 그런 다음 적절한 반사 및 굴절 된 빛의 방향을 계산하고 매체를 통과하거나 외부로 빛의 경로를 계속 추적 할 수 있습니다. 균일 한 산란 계수를 가진 간단한 볼록한 메시를 가정하면 맥주 법칙에 사용할 거리는 매체를 나가기 전에 모든 내부 경로 길이의 합이됩니다. 내부 및 외부 반사 및 굴절을 모두 설명하는 내 경로 추적기를 사용하여 렌더링 된 산란 계수 및 IOR 1.526 (소다 석회 유리)의 큐브 모양은 다음과 같습니다.

경로 추적 유리 큐브

궁극적으로 내부 반사와 굴절은 유리를 유리처럼 보이게하는 주요 부분입니다. 이미 알고 있듯이 간단한 근사값은 실제로 그것을 잘라 내지 않습니다. 내부 반사를 설명 할뿐만 아니라 매체를 떠나 다른 지점으로 들어가는 광선도 고려해야하므로 여러 메시 및 / 또는 볼록하지 않은 메시를 추가하면 더욱 악화됩니다.


1
Here is what a cube looks like (...) using my own path tracer. 우연히 오픈 소스를 했습니까?
wip

2
아니, 아직. 유리 렌더링에 대한 블로그 게시물과 함께이 특정 변형을 마무리하고 릴리스 할 계획이지만 잠시 동안 백로 그에있었습니다.
MJP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.