* Illumination

빛이 어떠한 재질에 닿았을 경우 반사가 이루어진다. 이때 빛이 재질에 어느 정도의 반사가 이루어지는지 결정하게 되며, 반사된 빛은 정반사(specular reflection)된 빛과, 난반사(diffuse reflection)된 빛으로 나뉜다. 정반사된 빛은 재질에 반사된 광원을 나타내고, 난반사된 빛은 재질의 색을 표현하게 된다. 정반사된 부분이 점점 옅어지면서 난반사 부분으로 된다. 이렇게 재질과 빛과의 관계를 수학적으로 계산하여 표현하는 것을 Illumination이라 한다. 
 

다양한 렌더링 기법들 
 

Local Illumination

Z-buffer 알고리즘에 의해 화면에 보여 질 오브젝트들 혹은 그 일부분이 정해지며, 깊이 값이 정의되게 된다. 그럼 이미지로 보여지게 될 면을 표현해야 할 텐데 Local Illumination 기법에서는 우리에게 보여지는 한정된 표면과 이 표면을 직접 비추는 광원만을 고려한다.

오브젝트의 표면이 우리 눈에 보인다는 것은 빛이 오브젝트를 비추고 난 뒤 우리의 눈으로 들어오기 때문이다. 광원으로부터 빛이 오브젝트에 비추어졌을 때, 빛이 오브젝트에 투과하는가, 반사하는가, 반사한다면 그 빛의 강도와 오브젝트의 색상 등은 어떠한가의 요소들을 계산하게 된다.

이때 사용되는 알고리즘이 Local Illumination 기법이다. 이 local illumination 기법은 단순히 빛과 그 빛이 닿는 오브젝트와의 관계만 계산에 고려되기 때문에 ‘local'이라는 단어가 붙는 것이다. 또한 이런 단순한 관계만 고려함으로서 다른 알고리즘에 비해서 짧은 시간 내에 만족할만한 수준의 이미지를 표현할 수 있어 상당시 효율적인 기법이라 할 수 있겠다. 


Global Illumination

'global'이라는 단어에서 알 수 있듯이 local illumination보다 확장된 개념의 illumination 계산 방법이다. local illumination에서는 단순히 빛과 오브젝트 표면과의 상관관계로 재질을 표현했지만, Global Illumination에서는 장면의 모든 오브젝트 표면과 빛들의 상관관계를 계산하여 재질을 표현하게 된다.

Global Illumniation 방식은 광원에서 나온 빛이 오브젝트 표면의 재질에 의해 흡수되거나 공중으로 반사되어 사라지거나 다른 오브젝트로 발산되고 다시 그 오브젝트의 표면에 반사되거나 흡수되거나하여 빛의 에너지가 다 할 때까지 scene의 모든 요소에 영향을 준다. 이를 이용하여 이미지를 표현하는 것이 Global Illumination이다. 이와 같이 Global Illumination은 일일이 빛 하나하나를 쫓아 계산을 해야 함으로 엄청난 렌더링 시간이 걸리게 되어 대중적으로 사용을 하지 못했지만 최근 더욱 향상된 Global Illumination 계산법과 빠른 컴퓨팅 능력으로 계산시간이 감소해 이 기술을 적용한 렌더러들이 속속 등장하고 있다. Global Illumination 기법의 방식에는 raytrace 방식과 Radiosity 방식이 있다. 
 

Ray Tracing

이 기법의 요지는 말 그대로 ‘빛을 추적한다.’ 는 것이다. 이 기법은 1980년 Turner Whitted가 라는 논문을 통해 발표한 기법으로 눈에서부터 각 픽셀을 향해 광선(Ray)을 방출한 다음 이 광선의 굴절, 반사 등을 계산해서 광선이 시작되었던 조명에 이를 때까지의 경로를 역추적해(Trace) 나가고 이 과정을 통해 각 픽셀의 색상을 결정하는 방법으로 특히 광선을 추적하는 과정에서 반사와 굴절이 되풀이(Recursion)해서 일어난다고 해서 ‘Recursive Ray Tracing'이라고 부르기도 한다.

이 기법은 금속구나 유리와 같이 반사와 굴절이 명확하게 일어나는 -정반사의 특성을 가지는- 재질만 ray trace방식으로 계산을 하고 난반사의 특성을 가지는 재질에서는 일반 local illumination으로 계산하여 반사 및 굴절 부분을 제외하고는 일반 local illumination 에 의해 계산된 이미지와 차이가 없다는 것과 반사 및 굴절 부분에 이미지가 한 치의 오차 없이 완벽한 정반사를 나타냄으로서 극사실적인 표현이 오히려 비사실적으로 보인다는 단점을 가지고 있다.

이러한 단점을 극복하기 위해 한 번에 하나의 광선만을 방출하는 방식이 아니라 한 번에 여러 광선을 방출하여 그 값을 종합해 계산하는 Distributed Ray Tracing 기법이 개발되었으며, 또한 caustic 효과를 표현하기 위해 Two-Pass Ray Tracing 기법이 개발되었다.

ray trace 방식은 단순히 빛을 역추적하여 따라감으로 빛이 닿지 않는 부분은 빛이 없다고 계산하여 이 부분을 검은색으로 표현하였다. 이는 오로지 정반사만하여, 난반사부분에서는 추적을 끝내기 때문인데, 과학자들은 이를 해결하기 위해 또 다른 방식을 연구하였다. 

Photon Map Based Global Illumination

이 기법은 가장 최근에 개발된 기법으로 1995년 Henrik Wann Jensen에 의해 처음 소개되었다. 이 기법은 광원으로부터 photon을 방출한 다음 이 photon들이 반사 혹은 굴절되면서 scene에 뿌려지게 되어 photon map을 만들게 된다. 이 photon map을 통해서 각 오브젝트가 가지는 빛의 양을 정한 뒤 이미지를 생성하게 된다.

필요에 따라서는 다른 여러 요소를 위해 photon map을 따로 생성하여 이용할 수 있다. 그럼으로써 volumetric light Soft Shadow, Blurry Reflection, Motion Blur, Depth of Field, Diffuse Inter-reflection등 다양한 효과를 빠른 시간에 구현할 수 있다.

이 photon map은 한 번 계산한 뒤 사라지는 게 아니라 저장이 가능하여 후에 다시 필요할 경우 이를 불러와 사용할 수 있다. 또한 radiosity 방식처럼 건축 시뮬레이션과 같이 보는 시점만 바뀌게 되는 애니메이션의 경우에도 photon map을 그대로 사용할 수 있기 때문에 고품질의 애니메이션을 빠른 시간에 렌더링할 수 있다. 하지만 애니메이션의 경우 오브젝트의 움직임이 있어 photon map이 변화가 있음으로 그때그때마다 photon map을 다시 만들어 주어야하기 때문에 많은 시간이 소요된다.

이 기술은 최근 발표되는 대부분의 렌더러의 주된 기술로 mental ray, finalRender, brazil render system, v-ray, RenderMan 등 다양한 렌더러에 사용되고 있다. 


Radiosity

1960년대 초에 열과 온도를 연구하는 과학자들이 surface간의 방열, 방사, 복사 등에 대한 열전도 시뮬레이션 측정방법을 개발하였다. 이를 1980년대 중반 컴퓨터 그래픽 과학자들이 빛이 전파되는 시뮬레이션에 이 방식을 적용 알고리즘을 개발하였는데, 이것이 바로 Radiosity이다.

Ray trace 계산법은 빛이 직접적으로 영향을 미치는 부분이나 정반사가 일어나는 부분만 보이게 되며, 빛이 미치지 않는 부분은 검은색으로 표현된다는 단점을 가지고 있지만 이를 계산한, Radiosity방식의 경우는 실제와 같이 빛이 들어와 정반사에 의해 모든 방향으로 빛이 전파되고 다시 난반사에 의해 빛이 전파되어 모든 부분에 빛이 닿게 된다. 이때 이 전달은 광 에너지가 평형을 이룰 때까지 계속 일어난다.

Radiosity 방식은 scene의 surface를 일정크기의  mesh elements로 구성한 뒤 광원으로부터의 빛 에너지가 element mesh에 전해지면 인접 mesh elements와 빛의 강도가 명확하게 차이가 나는 부분에서 그 부분을 그보다 작은 mesh element로 나누고, 또 다시 차이가 나면 그 보다 작은 element mesh로 자른다. 물론 제한 값을 두어 계산량을 줄인다. 또한 element mesh에서 재질에 따라 얼마만큼은 흡수를 하고 얼마만큼은 반사를 하여 인접 element mesh에 영향을 주며, 다시 이 element mesh에서도 어느 정도는 흡수하고 어느 정도는 반사하여 다른 element mesh에 영향을 주고, 이런 계산 과정을 되풀이 하게 된다.(역시 어느 정도까지의 제한 값을 정한다.)

이런 과정을 거쳐 scene 전체에 빛 에너지가 골고루 적용이 되는 에너지 평형상태가 되면 각각의 element mesh가 가지고 있는 빛 에너지의 값이 각각의 element mesh에 저장이 된다. 이렇게 surface자체에 명암이 직접 저장됨으로서 한 번만 radiosity 계산이 끝나면 어느 각도에서건 실시간으로 완성된 이미지를 확인할 수 있는 장점이 있다. 하지만 radiosity는 난반사만 취급함으로 인해 반사나 굴절을 표현할 수 없다. 그래서 ray trace방식을 같이 사용을 하여야 포토리얼리스틱한 이미지를 얻을 수 있다.  


NPR(Non Photorealistic Rendering)

NPR이란 이름 그대로 사물을 사진처럼 있는 그대로 표현하지 않는 렌더링 방법으로 최근 관심을 모으고 있는 렌더링 방법이다.

지금까지의 렌더링 기술들은 모두 실제와 같은 빛의 원리를 재현하기 위한 목적으로 개발되었다. 이러한 렌더링 기술들은 ‘Photorealism'이라는 신조어까지 만들어 내며, 그 동안 급속한 발전을 이루어 왔지만, 이제 어느 정도 한계에 봉착하여 렌더링 기법이 거의 완성 단계에 이르게 되자 사람들의 관심은 자연스럽게 새로운 방향으로 돌려지게 되었고, 그래서 개발되기 시작된 것이 바로 NPR(Non Photorealistic Rendering)이다.

NPR렌더러는 이미 유수의 프로덕션들이 인-하우스 소프트웨어로 개발하여 자신들만의 독특한 질감을 표현, 프로덕션과 차별화를 꾀하고 있다.

NPR은 주로 수채화, 유화, 목탄 같은 재료를 사용한 전통회화 기법들을 재현할 수 있다. 이 NPR을 응용하기에 따라서는 이제까지 볼 수 없었던 전혀 다른 새로운 예술적 느낌을 창조할 수 있다. 또한 NPR은 렌더린 과정에서 이런 효과를 내기 때문에 장면안의 다양한 3차원 정보들을 이용할 수 있어 2D필터를 적용하는 것과는 비료할 수 없이 다양한 효과들을 가능하게 해준다. 특히 최근에 셀 애니메이션과 3D애니메이션의 접목이 시도되면서 더욱 많이 활용되고 있다. 대표적인 플러그인으로써 셀화를 표현하는 digimation의 Illustrate, reyes의 cartoon reyes, 그리고 다양한 전통 회화기법을 표현할 수 있는 reyes의 NPR1플러그인이 있다.

렌더러의 종류
pov-ray
RenderMan
mental ray
Brazil Rendering System
finalRender
V-ray
Lightscape
BMRT(Blue Moon Rendering Tools)
Entropy
insight

출처: http://cafe.naver.com/bigmaya/2083


Posted by 영웅기삼
,