조명 모델의 선형 감쇠 구성 요소에 물리적 대응 물이 있습니까?


18

같은 OpenGL을 (그리고 다른 시스템)에 포인트 조명의 거리 감쇠 계수는 뭔가 1/(c+kd+sd^2)경우, d빛의 거리이며 c, k그리고 s상수이다.

나는 sd^2실제로 예상되는 잘 알려진 물리적으로 정확한 "역 제곱 법"감쇠를 모델링 하는 구성 요소를 이해합니다 .

나는 상수 c(보통 하나)가 매우 작은 값 d(그리고 0으로 나누기 방어) 을 처리해야한다고 생각합니다 .

kd모델에서 선형 구성 요소의 역할은 무엇입니까 ( kOpenGL에서 기본적 으로 0 임). 언제 다른 값을 사용 k하시겠습니까? 이것을 "선형 감쇠"구성 요소라고하지만 조명 모델에서 어떤 동작을 시뮬레이션합니까? 내가 아는 물리적 인 빛의 모델에는 나타나지 않는 것 같습니다.

[편집하다]

David Gouveia는 선형 요소를 사용하여 장면을 개발자 / 아티스트가 의도 한 것에 더 가깝게 보이게하거나 빛이 떨어지는 속도를보다 잘 제어 할 수 있다고 지적했습니다. 어떤 경우에 제 질문은 "선형 감쇠 계수에 물리 계수가 있습니까? 아니면 장면에서 빛의 품질을 제어하는 ​​데 퍼지 계수로 사용됩니까?"


나는 선형 감쇠 장면을 더 좋게 또는 더 사실적으로 보이게 한다고 말하지 않았습니다 . 내가 말한 것은 그것이 당신의 목적에 더 좋아 보일 있다는 것 입니다. 내 raytracer는 매우 작은 장면을 비추었고 두 모델을 비교할 때 선형이 더 좋아졌습니다. 더 나아 졌다고 말할 물리적 이유가 필요하지 않습니다. 달성하려는 효과에 더 가깝게 보였습니다. 반대로, 역 제곱 법이 현실적으로 보이지는 않았으며 너무 빨리 떨어졌으며 필요한 것보다 장면 조명에 덜 기여했습니다.
David Gouveia

미안 데이비드, 나는 당신의 대답을 잘못 표현하려는 것이 아니 었습니다. 위의 수정 사항을 변경했습니다.
Ken

1
모든 조명은 순수하고 단순하다는 핵을 기억한다는 점을 항상 기억하십시오.
Patrick Hughes

답변:


21

점과 같은 광원에서 나오는 빛은 거리의 제곱에 해당합니다. 그것은 실제 현실입니다.

선형 감쇠는 종종 우수한 것으로 나타납니다. 그러나 이것은 비선형 색 공간 에서 작업 할 때만 해당됩니다 . 즉, 적절한 감마 보정이 활성화되어 있지 않은 경우입니다. 이유는 매우 간단합니다.

감마 보정없이 선형 RGB 값을 비선형 디스플레이에 쓰는 경우 모니터의 내장 감마 램프에 의해 선형 값이 엉망이됩니다. 이것은 실제로 의도 한 것과 비교하여 장면을 효과적으로 어둡게 합니다.

감마 2.2를 가정하면 모니터는 모든 색상을 효과적으로 표시 할 때 2.2의 제곱으로 올립니다.

이것은 선형 감쇠 1/kd입니다. 이것은 모니터의 감마 램프가 적용된 선형 감쇠입니다 1/(kd)^2.2. 그것은 적절한 역 제곱 관계에 아주 가깝습니다.

그러나 실제 역 제곱 1/sd^2은 다음과 같습니다 1/((s^2)(d^4.4)). 이로 인해 빛의 감쇠가 예상보다 훨씬 급격히 떨어집니다 .

일반적으로 적절한 감마 보정을 사용하는 경우 (sRGB 프레임 버퍼로 렌더링하는 경우) 선형 감쇠를 사용하지 않아야합니다. 제대로 보이지 않습니다. 전혀 . 그리고 감마 보정을 사용하지 않으면 ... 무슨 일이;)

어쨌든 현실을 모방하려고하면 역 제곱 (감마 보정)을 원합니다. 그렇지 않다면 장면에 필요한 모든 것을 할 수 있습니다.


4
+1 한동안 감마 올바른 렌더링에 대해 알고 있습니다. 한동안 2 차 및 선형 감쇠에 대해 알고 있습니다. 그리고 이것이 두 사람의 연결을 처음 깨달은 순간입니다. :-)
David Gouveia

-1에 대한 이유가 있습니까?
Nicol Bolas

9

유연성 .

조명이 선형으로 떨어지길 원할 수 있기 때문입니다. 그 정도의 통제력을 제공합니다. 실제로 물리적으로 정확할 필요는 없습니다 (그리고 전체 퐁 쉐이딩 조명 방정식도 물리적으로 정확하지는 않습니다).

때때로 2 차 모형은 광원 근처에서 너무 빨리 빛을 발산하고 근처 표면에 "백색 눈부심"을 남깁니다. 선형 및 상수 계수를 제공하여 원하는대로 결과를 조정할 수있는 유연성

예를 들어, 광선 추적기를 구현할 때 역 제곱 법에 따라 포인트 라이트가 너무 빨리 떨어집니다. 클램프 된 선형 모델 (각 조명이 최소 및 최대 반경을 가지며 선형 보간 사이에 있음)으로 변경했으며 더 좋아 보였습니다.

편집 : 방금 이것을 설명 하는 멋진 자료를 찾았습니다 .


6

좋아, 나는 그것에 대해 추측 할 것이다.

예비 관찰

같은 OpenGL을 (그리고 다른 시스템)에 포인트 조명의 거리 감쇠 계수는 뭔가 1/(c+kd+sd^2)경우, d빛의 거리이며 c, k그리고 s상수이다.

나는 sd^2실제로 예상되는 잘 알려진 물리적으로 정확한 "역 제곱 법"감쇠를 모델링 하는 구성 요소를 이해합니다 .

의 곡선 c+kd+sd^2은 포물선 sd^2이고; 그 차이는 보이는 것처럼 중요하지 않습니다. 그것들은 무한대에서 비슷하게 행동하며, 작은 값에 대해서만 다릅니다. 의미가 무엇이든 k, 그것은 빛에 가까울 때만 의미가 있습니다.

예비 단순화

이것은 감쇠 계수 이므로 식에서 s == 1각 상수를 설정 하거나 나누고 s광원의 힘을로 나눌 수 있습니다 s. 수식에 매개 변수가 너무 많습니다.

당신은 결국 :

1/(c/s+(k/s)d+d^2)

변수의 변화

… 이는 다음과 엄격하게 같습니다.

1/(A + D^2)

A == c/s - k^2/(4s^2), 더 중요한 것은, D == d + k/2s.

이것은 1/(A+D^2)실제로 평소처럼 1/(c+d^2)보이지 않습니까?

결론

k요소 는 광 감쇠를 반경의 시작 지점에서만 시작하도록 지연 시키거나 지연시킵니다-k/2s (예, "음의"반경을 가질 수도 있습니다. 가상의 구형 미러 내부의 가상의 포인트 라이트를 생각하면 두 번째로만 비출 수 있습니다) . 수학이 다시이기는 것 같습니다!

편집 : 잠시 동안 그것이 구형 조명과 동등한 것으로 생각했지만 그렇지 않습니다. 특히, 부드러운 그림자를 생성하지 않습니다.

유용성?

내 생각에이 매개 변수는 예술가가 조명과 관련하여 물체와 더 가깝거나 멀리 떨어져있는 것처럼 보이게 만들지 만 이동하지 않고 사용할 수 있다고 생각합니다. 포인트 라이트는 단단한 그림자를 생성하므로 라이트가 특정 위치에 남아 있어야합니다.


3

선형 감쇠 계수는 매체로 이동하는 빛의 물리적 대응 물입니다. 감쇠가 없으면 빛이 완벽한 공극으로 이동하는 것처럼 보입니다. "현실적인"장면을 렌더링 할 때, 공기가 거리에 따라 빛의 강도를 감쇠 시키길 원하며이 감쇠는 선형입니다.


나는 그것이 사실 일 수 있다고 생각하지 않습니다. 매체를 통해 진행하는 광은 감쇠 될 1/dR좌표 계속하여 1/d^2에서 thetaphi구면 좌표. 그러므로 당신이 설명하는 것은 1/d^3빛의 세기를 약화시키는 것입니다.
sam hocevar

3

선형 감쇠 계수는 조명에 선형 감쇠를 사용하려는 경우에 중요하지만 중요한 것은 를 사용 않아도 됩니다 (또는 그 문제에 대해 다른 감쇠 계수).

이를 통해 조명을 자신의 취향에 맞게 조정할 수 있습니다. 따라서 0으로 원하지 않는 감쇠 계수와 0이 아닌 것으로 원하는 감쇠 계수를 설정하면 완료됩니다.

선형 감쇠를 사용하고자하는 한 가지 구체적인 예는보다 수학적으로 올바른 역 제곱이 너무 빠른 폴 오프를 제공하는 경우입니다. linear를 사용하면 다소 좋게 보일 수 있고 (씬의 조명이 적을 때) 결과를 얻을 수 있습니다. 따라서 0 상수, 1 선형 및 0 지수를 사용합니다.

OpenGL과 D3D의 포인트 스프라이트 (및 OpenGL의 포인트 파라미터)가 동일한 감쇠 공식을 사용한다는 점에 주목하는 것이 흥미 롭습니다 (그러나이 논의와 관련이없는 것은 사실입니다).

또한 OpenGL / D3D 조명은 물리적으로 정확하지는 않습니다. 그것은 허용 가능한 근사치 이상으로 설계되지 않았으며 작동 방식과 관련된 것을 쿼리 할 때 염두에 두어야합니다.

물론, 요즘에는 대부분의 셰이더를 사용하게되므로 오래된 라이트 포뮬러는 주로 학계 / 역사적 관심사에 불과합니다. 원하는 라이트 포뮬러를 작성할 수 있습니다.


1
  • c 광원의 일정한 감쇠 값입니다.
  • l선형 감쇠입니다. 그렇기 때문에 광원과의 거리를 곱한 것입니다.
  • s 2 차 감쇠이므로 거리의 제곱을 곱합니다.

이 링크 에는 더 많은 정보가 있습니다.


고맙지 만 내 질문은 빛 모델링에서 선형 감쇠 구성 요소의 역할은 무엇입니까? 내가 알고있는 물리 모델에는 나타나지 않기 때문에 묻습니다. 제공하는 링크는 선형 감쇠 구성 요소의 용도를 설명하지 않습니다. 그것은 단지 말한다; 다른 설명이없는 "이것은 선형 감쇠"입니다.
Ken

좋아, 나는 당신의 질문을 잘못 해석했습니다. 선형 감쇠는 무한한 1 차원 광원 (형광 튜브 생각)에서 더 잘 관찰되는 반면 2 차법은 구형 광원의 거동을 모델링합니다. 지금까지 물리적 조명 모델과 컴퓨터 그래픽에 사용 된 조명 모델 간의 대응 관계에 대한 설명이있는 곳은 한 곳뿐입니다. imdoingitwrong.wordpress.com/2011/01/31/light-attenuation
r2d2rigo

1

Z 가 존경받는 Eric Lengyel말에 따르면 ,

원근법이 올바른 래스터 화에는 1 / z의 선형 보간이 필요하기 때문에 비선형입니다. z 자체의 선형 보간은 올바른 결과를 생성하지 않습니다. 하드웨어는 각 정점에서 1 / z를 계산하고 삼각형을 가로 질러 보간해야하므로 z를 복구하기 위해 모든 픽셀에서 고가의 분할을 수행하는 대신 해당 값을 깊이 버퍼에 기록하는 것이 편리합니다.

가까운 평면에 가까운 z 정밀도에 더 가깝다는 사실은 부작용 일 뿐이며 1 / z 보간의 동기와는 아무런 관련이 없습니다.

깊이 버퍼는 거리를 저장합니다. 빛은 거리를 사용하여 감쇠합니다. 깊이 버퍼와 조명 구현 사이의 관계 일 수 있지만 조명 알고리즘이 내가 생각한 화면 공간에서 실행 된 경우에만 적용됩니다. 사전 계산 된 (또는 하드웨어 계산 된) 역수를 저장하는 것이 프레임 당 필요한 각각의 op에 대해 나누지 않은 값을 나누는 것보다 항상 더 나은 것을 기억하십시오. 그것은 매우 많은 ops입니다.

이것은 단지 추측입니다.


당신은 거기에 뭔가있을 수 있습니다. 조명이 계산되는 공간과 관련이있을 수 있습니다. 그러나 깊이 버퍼는 빛에서 물체까지의 거리가 아니라 눈 (또는 정면)에서 물체까지 '의사 거리'를 저장하기 때문에 깊이 버퍼가 아니라고 생각합니다. 조명에 사용되는 광 거리입니다.
Ken

@downvoter-댓글을 달거나 트롤링을 원하십니까? (Jonathan 인용)
엔지니어

다운 보팅 또한 감쇠는 정규화 된 공간이 아닌 안구 공간에서 계산됩니다.-> perspective / z는 이와 관련이 없습니다
Oliver Zendel

1

부록과 마찬가지로 : 구면 광원을 근사화하기 위해 openGL 모델을 사용할 때 세 가지 계수가 모두 의미가 있고 유효합니다 ( "오버플로 방지"또는 "예술적 자유"가 아님).

반경이 r 인 구의 경우 :

1 / (d / r + 1) ^ 2

이것은로 번역

c = 1 k = 2 / r s = (1 / r ^ 2)

( http://imdoingitwrong.wordpress.com/2011/01/31/light-attenuation/ 참조 ).

Imho이 근사는 전혀 확장하지 않고 무한히 작은 포인트 라이트를 사용하는 것보다 낫습니다!


공식 1 / (d / r + 1) ^ 2는 어떻게됩니까? 원래 기사는 단지 "일련의 테스트 결과를 본 후에 명백 해졌다"고만 언급하는데, 이는 물리적 모델링에 대한 질문에서 충분히 설득력이 없다.
user1914692

0

수식에 대한 다른 견해 / 답변이 있습니다.

예를 들어, 스폿 라이트를 보면 실제로 산란이 보입니다. 따라서 1 / d ^ 2의 공식은 해당 픽셀의 빛을 방출하기위한 것입니다. 그러나 해당 픽셀의 카메라 밝기는 더 복잡한 공식을 가지며, 이는 산란 이론을 사용합니다. 논문 참조

"단일 산란을 가진 참여 미디어의 그림자 및 어두움 광선에 대한 에피 폴라 샘플링"

Carsten Dachsbacher에 의해 Thomas Engelhardt에 의해 불행히도 그들은 광 산란을위한 간단한 간단한 공식을 가지고 있지 않습니다. 아마도 최종 GPU 모방 효과는 선형 및 2 차 공식과 비슷할 것입니다.

그래서 나는 주장을 생각합니다 :

"현실을 모방하려는 경우 역 제곱 (감마 보정)을 원합니다"가 유효하지 않습니다.

실제로 감마가없는 선형 및 2 차 요인이있는 수식을 사용하면 빛나는 효과를 매우 잘 모방 할 수 있습니다. 리니어는 할 수 없습니다.

간단히 말하면 공식은 빛 산란의 물리적 대응 요소를 갖습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.