Wednesday, October 15, 2008

Global Illumination 의 종류와 이해 및 V-Ray의 GI 솔루션


| Eyecg.com tutor





 
아래 글은 http://www.spot3d.com/vray/help/150R1 에 있는 GI 연산방법의 분류에 대한 내용을 번역한 것입니다.


The rendering equation


거의 모든 현대의 GI랜더러들은 1986년 James T.Kajiya의 논문 "The Rendering Equation"에 의해 소개된 랜더링 방정식에 기반하고 있습니다. 이 방정식은 빛이 어떻게 씬 전체에 전파되는가를 기술하고 있습니다. 또한 Kajiya는 그의 논문에서 path tracing이라 불리는 Monte Carlo 방법을 사용하는 랜더링 방정식에 기반하여 이미지를 계산하기 위한 방법을 제안하고 있습니다.

이 방정식은 사실 엔지니어링 분야에서는 오래전부터 알려져 왔으며 서로 다른 환경에서 방사성 열 전달을 계산하기 위해 사용되어 왔습니다. 하지만 Kajiya 가 처음으로 이 방정식을 컴퓨터 그래픽에 적용하였습니다.

또한 이 랜더링 방정식은 단지 "전자기학을 위한 맥스웰 방정식의 근사치"입니다. 이는 모든 광학적 현상을 모형화하기 위한 것이 아닙니다. 단지 기하광학에 기반하고 있으며 따라서 회절(diffraction)이나 간섭(interference), 편광(polarization)과 같은 것들은 시뮬레이션 할 수 없습니다. 하지만 분광(dispersion)과 같은 파장에 의존한 효과는 쉽게 수정하여 적용될 수 있습니다.

또 한가지 더욱 철학적인 점은 이 랜더링 방정식이 빛이 어떻게 행동하는가 하는 수학적 모델로부터 나온다는 점입니다. 컴퓨터 그래픽을 위해서는 매우 좋은 모델이지만, 빛이 실세계에서 행동하는 것을 정확히 설명하지는 못합니다. 예를 들어서 랜더링 방정식은 빛 줄기가 무한히 미세하게 얇으며 빛의 속도가 무한하다고 가정을 합니다. 하지만 이들 가정은 어느 것도 실제 물리세계에서는 사실이 아닙니다.

랜더링 방정식이 기하광학에 기초하고 있기 때문에 레이트레이싱은 랜더링 방정식을 풀기 위한 매우 편리한 방법입니다. 실제로 대부분의 랜더러는 랜더링 방정식을 레이트레이싱에 기반하여 해결하고 있습니다.

랜더링 방정식의 여러 다른 공식이 가능하지만 Kajiya에 의해 제안된 것은 아래와 같습니다 :

 여기서 :
L(x,x1)은 x1지점에서부터 x지점까지 통과하는 빛;
g(x, x1) 는 지오메트리(혹은 visibility term);
e(x, x1) 는 x1포인트에서 x포인트를 향해 빛이 방출되는 세기:
r(x, x1, x2) 는 x2포인트로부터 x1포인트를 통해 x포인트로 가는 분산된 빛;
S는 씬의 모든 표면의 합이며 x,x1과 x2는 S로부터의 지점.

이 방정식이 의미하는 바는 : 씬 내에서 x1지점으로부터 주어진x지점에 도달하는 빛이 모든 다른 x2지점에서 x1지점으로 방출되는 빛과 x를 향해 반사된 빛의 합이라는 의미입니다:



I: Exact vs approximate methods


앞서 언급했듯이, 우리는 이 방정식을 정확히 해결할 수 없습니다 - 비록 매우 작은 것들이라도 언제나 에러들이 존재합니다. 몇몇 랜더링 방법에서는 원하는 수준의 에러가 사용자에 의해 사전에 지정되어지며 이것이 연산의 정확도를 결정합니다 (예를 들면 GI 샘플 밀도, GI ray 갯수나 포톤의 수). 이러한 방법들의 단점은 사용자들이 최종 결과물이 완성될 때까지 전체 연산과정을 기다려야 한다는 점입니다. 또 한가지 단점은 주어진 시간 내에 충분한 퀄리티를 만들어내는 설정방법을 찾기 위해 많은 시행착오를 거쳐야 한다는 점입니다. 하지만 이들 방법의 큰 장점은 지정한 정확도 내에서는 매우 효율적이라는 점입니다. 왜냐하면 알고리즘은 랜더링 방정식의 어려운 부분을 분리하여 해결하는데 집중할 수 있으며 그리고 나서 그 결과를 합칠 수 있기 때문입니다 (예를 들어 독립적인 영역으로 이미지를 분리하여 몇 번의 연산과정을 수행하는 것 등입니다.)

또 다른 방법에서는 이미지가 점진적으로 계산되어집니다 - 초반에는 에러가 크지만 알고리즘이 부가적인 연산을 수행하면서 에러가 점점 작아지는 것입니다. 어느 순간에 우리는 전체 이미지에 대해 적당한 결과를 갖게 됩니다. 그러면 우리는 연산을 종료시킬 수 있으며 그 중간결과를 사용할 수 있게 됩니다.


Exact (unbiased or brute-force) methods.


장점:
* 매우 정확한 결과를 냅니다.
* 이 방법이 만드는 한가지 문제는 노이즈 입니다.
* 이 방법을 사용하는 랜더러들은 이미지품질을 위한 단지 몇 개의 제어옵션을 가집니다.
* 일반적으로 매우 적은 추가메모리를 사용합니다.

단점:
* Unbiased 방법은 adaptive가 아니므로 노이즈가 없는 이미지를 위해서는 매우 느립니다.
* exact 방법에 의해서는 몇가지 효과는 연산될 수 없습니다(예를 들면 포인트 라이트로부터 완벽한 거울을 통해 보여지는 커스틱스)
* 이들 방법에서는 퀄리티 요구수준을 강제하기 힘듭니다.
* Exact 방법은 일반적으로 최종이미지에 직접 적용됩니다. 따라서 Gi솔루션을 저장한 다음 다시 사용할 수 없습니다.

예:
* Path tracing (brute-force GI in some rendereres).
* Bi-directional path tracing.
* Metropolis light transport.


 

Approximate (biased) methods:


장점:
* Adaptive하므로 일반적으로 exact방법에 비해서 많이 빠릅니다.
* exact 방법에서는 불가능한 효과들을 연산할 수 있습니다. (예를 들면 완벽한 거울을 통과하는 포인트라이트의 커스틱스)
* 품질 요구사항이 설정될 수 있으며 그에 맞게 솔루션이 수정될 수 있습니다.
* 일부 approximate 방법에서는 GI솔루션을 저장하고 다시 사용할 수 있습니다.

단점:
* 비록 일반적으로 오류가 매우 작게 만들어지더라도 완전히 정확한 결과를 내지는 못합니다.
* 얇은 벽체아래의 빛샘과 같은 오류들이 가능합니다.
* 품질을 제어하는 복잡한 설정.
* 일부 approximate방법은 많은 부가적인 메모리를 사용한다.

예:
* Photon mapping.
* Irradiance caching.
* Radiosity.
* Light cache in V-Ray.

Hybrid methods:

일부 효과를 위해서는 exact방법을 사용하며 일부를 위해서는 approximate 방법을 사용합니다.

장점:
* 속도와 품질의 결합

단점:
* 설정하는데 더욱 복잡합니다.

예:
* Final gathering with Min/Max radius 0/0 + photon mapping in mental ray.
* brute force GI + photon mapping or light cache in V-Ray.
* Light tracer with Min/Max rate 0/0 + radiosity in 3ds Max.
* 어떠한 방법은 점근적으로 unbiased가 될 수 있습니다 - 이는 처음에는 다소 bias 로 시작했으나 연산이 수행됨에 따라서 점차적으로 감소되는 것입니다.



II: Gathering vs shooting methods


Shooting methods


이는 빛으로부터 시작하며 빛 에너지가 씬 전체에 퍼지는 방법입니다. 슈팅 방법은 exact 나 aporoximate 방식이 될 수 있습니다.

장점:
* 커스틱스와 같은 빛의 특정 효과를 쉽게 흉내 낼 수 있습니다.

단점:
* 카메라뷰를 고려하지 않습니다. 따라서 이미지상에 보이지 않거나 기여하지 않는 씬의 일부분에 대해 많은 시간을 소모합니다 (예를 들어 눈에 보이지 않는 커스틱스가 여전히 연산되어집니다)
* 빛 가까이에 있는 씬의 부분은 보다 정확한 솔루션을 내지만 빛에서 먼 부분은 부정확하게 연산됩니다.
* 오브젝트라이트나 환경라이트(스카이라이트) 와 같은 효과를 효율적으로 흉내내지 못합니다. 비물리적인 광원은 흉내내기 힘듭니다.
 
예:
* photon mapping (approximate).
* particle tracing (approximate).
* light tracing (exact).
* some radiosity methods (approximate).


Gathering methods


이 방법은 카메라와/또는 씬의 지오메트리로부터 시작합니다. 개더링 방법 역시 exact나 approximate 방법이 될 수 있습니다.

장점:
* 우리가 관심 있는 씬의 한 부분에 기반하여 작업을 합니다. 따라서 슈팅법에 비해 더욱 효율적입니다.
* 이미지에서 보이는 모든 부분에 매우 정확한 솔루션을 만듭니다.
* 비물리적인 조명과 같은 다양한 빛 효과를 흉내낼 수 있습니다.

단점:
* 포인트 라이트나 작은 에리어 라이트로부터의 커스틱스와 같은 일부 빛 효과는 흉내내기 어렵거나 불가능합니다.

예:
* path tracing (exact)
* irradiance caching (final gathering in mental ray), (approximate).
* some radiosity methods (approximate).


 

Hybrid methods


이 방법은 슈팅과 개더링을 혼합한 것으로 역시 exact 와 approximate 방법이 될 수 있습니다.

장점:
* 거의 모든 빛 효과를 흉내낼 수 있습니다.

단점:
* 설정이 복잡합니다.

예:
* final gathering + photon mapping in mental ray (approximate).
* irradiance map/brute force GI + photon map in V-Ray (approximate).
* bi-directional path tracing and metropolis light transport (exact).
* some radiosity methods (approximate).



III: Approximate methods: view-dependent vs view-independent solutions


어떠한 approximate방법은 GI솔루션의 저장이 가능합니다. 이 저장된 캐시는 뷰에 대해 독립적이거나 의존적일 수 있습니다.

Shooting methods


장점:
* 슈팅방법은 일반적으로 뷰에 독립적인 솔루션을 만듭니다.

단점:
* 솔루션이 일반적으로 품질이 낮습니다 (흐릿하거나 부족한 디테일). 디테일한 솔루션은 많은 시간과 메모리를 필요로 합니다.
* Adaptive 솔루션을 적용하기 힘듭니다.
* 빛에서 먼 영역은 정확도가 낮습니다.

예:
* photon mapping
* some radiosity methods


 

Gathering methods


개더링 법과 몇몇 하이브리드 방법은 뷰의존법과 뷰독립법 둘 다 사용합니다.

View-dependent solutions

 

장점:
* 씬에서 단지 필요한 부분만 고려합니다 ( 보이지 않는 부분에 대해 시간을 낭비하지 않습니다).
* 지오메트리 종류에 제한이 없이 어떠한 종류의 지오메트리와도 작업할 수 있습니다.
* (모든 자세한 디테일을 유지하면서) 매우 고품질의 결과를 만들어낼 수 있습니다.
* 일부 방법에서는 뷰 의존 부분의 글로시 반사와 굴절 등의 솔루션도 저장할 수 있습니다.
* 뷰독립 솔루션에 비해 적은 메모리를 필요로 합니다.

단점:
* 다른 카메라 위치에 대해 업데이트를 필요로 합니다: 솔루션의 일부 수행된 부분이 재사용 되는 수가 있습니다.

예:
* Irradiance caching (in V-Ray, mental ray, finalRender, Brazil r/s, 3ds Max's light tracer).


View-independent solutions


장점:
* 단지 한번만 솔루션이 수행되면 됩니다.

단점:
* 뷰에서 보이지 않는 부분까지 포함하여 씬 내의 모든 지오메트리가 고려됩니다.
* 씬 내의 지오메트리의 종류가 삼각면이나 사각면의 메쉬로 제한됩니다. (프로시저럴 혹은 무한 지오메트리는 허용되지 않습니다)
* 상세한 솔루션은 많은 메모리를 필요로 합니다.
* 단지 솔루션의 디퓨즈 부분만이 캐시됩니다 : 뷰 의존적 부분 (글로시 반사) 은 여전히 연산되어야 합니다.

예:
* Some radiosity methods.


Hybrid methods


서로다른 뷰 의존적 방법과 뷰 독립적 방법이 조합될 수 있습니다.

예:
* photon mapping and irradiance caching in V-Ray.
* photon mapping and final gathering in mental ray.
* radiosity and light tracer in 3ds Max.



GI methods supported by V-Ray


V-Ray는 GI 방정식을 해결하는 다양한 방법을 제공합니다 - exact, approximate, shooting, gathering. 일부 방법은 특정 종류의 씬에 더욱 적합합니다.


Exact methods



V-Ray는 두가지의 exact 방법을 지원합니다. brute force GI 와 progressive path tracing 입니다. 두 방법의 차이점은 brute force GI는 전통적인 이미지 구성 알고리즘 (버켓 랜더링)을 사용하며 adaptive 하다는 것이고, 반면에 path tracing 은 전체 이미지를 한번에 처리하며 adaptive하지 않다는 점입니다.

Approximate methods



그 외의 모든 방법(irradiance map, lightcache, photon map)은 approximate 방법을 사용합니다.

Shooting methods



Photon map 은 V-Ray에서 유일한 슈팅방법입니다. 커스틱스 또한 gathering 방법과 조합하여 포톤맵핑으로 수행될 수 있습니다.

Gathering methods



그 외의 모든 방법(bruce force GI, irradiance map, light cache) 은 gathering 방법입니다.


Hybrid methods



V-Ray는 서로다른 GI 엔진을 프라이머리와 세컨더리 바운스에 사용할 수 있습니다. 이는 사용자들이 자신의 목적에 맞게 exact 와 approximate, shooting과 gathering 알고리즘을 조합할 수 있게 해줍니다. 조합가능한 방법은  GI examples page.에서 볼 수 있습니다.