Realistic Lighting: Global Illumination 과 Final Gathering (2부)

by Anthony Rossano

글로벌 일루미네이션 효과 미세 조정하기

효과를 조정하는 것은 3가지 주요 부분으로 구성된다: 오브젝트가 포톤을 어떻게 바운스하는지를 조정하는 것, 조명이 포톤을 어떻게 방출하는지를 조정하는 것, 그리고 렌더링 엔진이 이미지를 보다 부드럽게 렌더링하기이해 어떻게 포톤을 사용하는지를 조정하는 것이다.

송신기와 수신기 칼라 조정하기: 앞에서 언급하였듯이, 오브젝트의 값은 포톤의 빛 에너지를 바꾼다. 만일 오브젝트를 어두운 칼라로 만들었다면, 더 어두운 포톤 스팟을 얻게 될 것이다. 송신기 오브젝트의 칼라를 바꾸는 것은 그것으로부터 나오는 포톤의 칼라를 바꾸게 된다. 수신기를 위한 최상의 칼라는 아주 어두운 ambient 값과 50%의 diffuse 값을 갖는 것이며, 따라서 포톤은 좋은 콘트라스트에 의해 명확히 보여진다.

조명으로부터 더 많은 포톤이 나오면 더 부드러운 쉐이딩을 만든다.

다음으로, Photon Emission에 대한 조명 프로퍼티들을 조정한다. Light 프로퍼티 에디터에서 포톤의 수와 각 포톤의 에너지를 조정할 수 있다. 조정하는 동안은 숫자를 낮게 두고, 최종 렌더링에 대해서는 10,000이나 그 이상으로 올린다. 에너지를 바꾸는 것은 더 복잡하다. 포톤 에너지가 너무 낮게 바꾸면, 포톤이 오브젝트를 때릴 때 효과를 볼 수 없게되며 무엇이 일어나는지를 볼 수 없게 된다. 다음과 같은 작업 순서를 사용하라:

먼저 3-4회 바운스되는 동안 빛이 전체적으로 진행하여야만 하는 거리를 대략의 유니트로 측정한다. 여러분의 씬이 가로로 100유니트정도라고 하면, 빛이 진행할 필요가 있는 최대 거리는 300유니트라고 추정할 수 있다.

다음에, Light 프로퍼티 에디터의 Light Attenuation 탭아래의 Light Falloff를 켜고, 모드를 Linear 로 설정하고, end falloff를 빛이 진행할 가장 긴 거리로 설정하고(이 예제에서는 300유니트), start falloff는 그 거리의 10분의 1정도 또는 30유니트로 설정한다

마지막으로, 조명의 밝기(intensity)를 30에서 50 정도로 아주 높게 조정한다. 그리고 조명의 Exponent(프로퍼티 에디터의 General 탭)를 1에서 시작하도록 조정하고, 2정도까지 점진적으로 조정한다. 효과에 만족할 때 멈춘다.

또한 Render Region 프로퍼티 에디터에서 Global Illumination 파라미터를 바꿀 수도 있다. radius를 크게하는 것은 하나의 포톤 각각의 효과를 블러링하고 확장하는 효과를 낸다. accuracy를 크게 하는 것은 렌더링되는 서페이스상의 각 점에 더 많은 포톤을 고려하게 된다.

이제 방안의 모든 것이 포톤을 보낵 받는다.

Accuracy를 50으로 설정하고 Radius를 0.25로 설정하고나서, 서페이스가 보다 부드럽게 쉐이딩될 때까지 반경을 천천히 증가시킨다(한번에 0.1에서 0.5씩). 반경이 더이상 라이팅을 부드럽게 하지 않는 곳에 도달할 때, 반경을 바꾸는 것을 멈추고, Accuracy를 이미지가 좋게 보일 때까지 50에서부터 25정도씩 점진적으로 증가시킨다. accuracy가 더이상 차이를 보이지않는 곳에 도달하면, 더 좋은 퀄리티를 얻기위해 조명에 의해 만들어지는 포톤의 수를 증가시킨다. 가로로 15유니트정도인 씬에 좋은 결과는 10,000 포톤, accuracy 1,000, radius 2.5 유니트에 의해 만들어질 수 있다. 이것은 각 샘플이 직경 2.5 유니트인 영역을 고려하고, 빛 에너지를 계산할 때 1,000개의 포톤을 찾는다는 것을 의미한다.

Final Gathering

본질적으로 글로벌 일루미네이션은 오브젝트상의 빛 에너지를 계산하기위해 반사된 빛을 계속 사용한다. Final Gathering은 이것을 더 많이 취하여, 각 오브젝트를 둘러싸고 있는 영역을 사용하여 빛 에너지를 계산한다. 빛이 버츄얼 카메라로부터 펼쳐져 오브젝트를 때릴 때, 빛 에너지를 감지하기위해 씬의 조명들에 직접 빛을 쏘는 대신에, 빛 에너지를 계산하기위해 오브젝트를 둘러싸고 있는 영역으로 많은 수의 다른 빛들이 랜덤하게 나온다. 그런다음 그런 빛들의 각각은 오브젝트 주위의 2차 서페이스들상의 빛 에너지를 계산한다. 이러한 방법으로 첫번째 오브젝트상의 빛은 실제 조명으로부터가 아니라 씬의 다른 것들의 일루미네이션으로부터 계산된다. 기본적으로 씬의 모든 하나하나의 서페이스는 정교하고, 다양하고, 복잡한 광원이 될 수 있다. 결과는 놀랄만하여, 빛이 씬의 오브젝트사이에서 이리저리 반사될 때, 모든 종류의 정교한 라이팅 상호교신을 만든다. Final Gathering은 또한 보다 더 뛰어난 결과를 만들기 위해 글로벌 일루미네이션과 함께 사용될 수도 있다.

Final Gathering에 대한 간단한 예로 캐릭터의 실외 일루미네이션을 보도록 하자. 하나의 조명을 갖는 캐릭터의 보통 렌더링에서의 효과는 단순하다. 그러나 실생활에서는 캐릭터는 직사광선을 받을 수도 있고,하늘과 땅으로 부터 반사된 빛을 받을 수도 있다. 이러한 효과를 Final Gathering으로 쉽게 만들 수 있다.

Final Gathering이 작용되게 하려면 단 2개의 단계만이 필요하다: 씬을 만들고, Render>Region>Options(또는 최종 렌더링을 위해서는 Render>Options에서)에서 Final Gathering을 켠다.

1 단계: 조명을 설정한다. Final Gathering을 위해서는 칼라가 전체적으로 검게 바뀐 하나 이상의 조명들을 사용하게 된다. 씬에서 직접적인 조명을 바꾸지 않고 Final Gathering 효과에 대해 그 조명들을 사용할 수 있다. 그래야 우리가 보는 무엇이던지 Final Gathering 효과로부터 나오고 있다는 것을 알게 될 것이다. 이러한 검은 조명이 여러분이 만든 씬으로 에너지를 발산할 것이다-하늘의 돔으로 작용할 구에서 주로. 조명을 포톤 방출기로 설정할 필요는 없다. 왜냐하면 Final Gathering 을 시작하는 조명으로부터 포톤을 낼 필요가 없기 때문이다.

나중에 포톤을 발산할 글로벌 일루미네이션 조명을 추가할 수 있다. 그리고 직접 조명을 추가하기위해 나중에 그림자를 만들 일반 조명들을 추가할 수 있다. 마지막으로, Shift-H 키로 ambient 조명을 보이게 한 다음, 지워서 효과가 죽지 않도록 한다.

2 단계: 재질을 설정한다. 캐릭터 모델에 단순한 Lambert 재질을 추가하는데, Ambience를 검게 설정하고 diffuse 칼라도 상당히 자연스럽게(내츄럴하게) 설정한다. 아마 HSV=(0,0,8)정도면 될 것이다. 이러한 간단한 디폴트 재질은 간섭을 최소로 하여 Final Gathering 효과를 가장 명확하게 볼수 있도록 하기위한 것이다.

이것은 Final Gathering이 없이 레이트레이싱만 이 있는 캐릭터이다. 이 캐릭터는 Lambert로부터 순백색의 diffuse 의 멋진 의장을 입고 있다.

돔 하늘이 반사된 빛의 주요 소스가 될 것이다. 구를 만들거나 또는 커브를 회전시켜 돔을 만든다. 구에 단순한 constant 재질을 주고, 칼라를 멋진 블루 칼라고 설정한다(HSV=0.6, 0.25, 0.5). 구의 값은 얼마나 많은 빛이 캐릭터에 반사될 것인지를 직접 콘트롤한다-Final Gathering 효과를 켜기위해 사용했던 조명의 밝기(intensity)가 콘트롤하는 것이 아니다. 

돔은 뒤집어져야(invert) 하는데, 카메라가 안쪽에 있기 때문이다. 그리고 효과가 더 멋지게 되도록 하기위해 하늘 모양의 맵을 프로젝션하는 것이 좋을 것이다. 하늘이 아니고 하늘로부터 오는 조명만을 보기를 원하기 때문에,  돔에 대한 Visibility 프로퍼티 에디터에서 일차 광선(primary ray)를 끈다(이렇게 해도 효과를 바꾸지는 않는다). 돔의 바닥에 땅을 위한 평면을 추가하고, 거기에 다시 단순하고 회색의 Lambert 재질을 준다.

 

 

 

 

 

 

Kiss the sky

이제 캐릭터는 하늘로부터 오는 모든 빛에 의해 과다하게 빛난다. 하늘을 더 어둡게  또는 더 투명하게 만드는 것이 효과를 누그러뜨릴 것이다.

직접 조명과 FInal Gathering 이 균형있게 사용되어 캐릭터에 유연한(supple) 쉐이딩을 주고 있다.

이제 Render Region Options 박스에서 Final Gathering 효과를 켜고, 렌더링 영역을 그린다. 모델상의 믿을 수 없는 쉐이딩을 보라. 씬에 단 하나의 조명만이 있지만(그것도 검은색), 모델은 모든 면이 부드럽게 빛나고 있다. 캐릭터의 팔으로부터 생긴 부드러운 그림자가 바닥면에 생겼다. 구석과 틈에서 그림자가 하늘과 반대로 더 어둡다(태양이 비치지 않는 곳들이라고 할 수 있다). 효과를 정밀 조정하자.

Final Gathering 이 여러분이 원하는 것을 줄 수 있도록 하는데 있어서의 어려움은 빛 에너지를 주로 전송하는 오브젝트(여기에서는 하늘을 나타내는 구이다)로부터 나오는 빛 에너지의 양을 수정하는 것이다. 돔을 선택하고 프로퍼티 에디터를 불러낸다. 결과를 볼 수 있도록 칼라값을 바꾼다. 값을 크게하면, 돔으로부터 씬의 나머지로 더 빛 에너지가 전달된다. 신의 각 오브젝트는 같은 방법으로 활동하여, 재질 칼라의 값을 통해 씬에 에너지를 추가한다. 예를 들면, 바닥면의 값을 낮게 하면, 캐릭터는 그 아래에 반사된 빛을 덜 받게 되어 더 어두운 그림자를 갖게 될 것이다.

Render Region Options 에서 Final Gathering 영역의 Photon 탭하에서 효과의 Accuracy를 조정할 수 있다. Accuracy 값은 XSI에게 오브젝트상의 각 픽셀에 얼마나 많은 샘플들이 만들어져야 하는지를 알려준다. 디폴트 값 30은 다소 낮은 것이다.이 값을 100씩 증가시켜가며 변화하는 것을 본다. Accuracy를 늘려도 더 나아지는 것 같지 않으면 멈추고 약간 뒤로 값을 내린다. 이것은 각 픽셀에서의 조사하는 수를 결정하므로 렌더링 시간에 엄청난 영향을 미친다. 참을성이 좋지 않다면 1,000 이상으로는 가지말라.

minimum radius는 건너뛴다. 이 값은 maximum radius의 10%로 자동적으로 설정된다. 최대 반경은 Final Gathering 효과의 봉쇄성(blockiness)과 chunkiness(풍부성(?))을 콘트롤하는 것이다. 최대 반경은 Final Gathering 효과에서 얼마나 멀리 있는 오브젝트들을 고려할 것인가를 명시한다. 더 큰 값을 주는 것은 더 안좋은 이미지 퀄리티가 되지만, 렌더링 시간을 짧아진다. 최대 반경을 줄이는 것은 렌더링 시간을 길어지게 하지만, 더 많은 빛이 반사된 빛 효과에 기여하는 더 가깝고 더 중요한 오브젝트들을 택하므로 쉐이딩 그라데이션의 smoothness는 좋아진다. 최소와 최대 반경을 둘다 0으로 두는 것이 좋은 생각일 것 같다. 이렇게 하면, 렌더링 엔지니 씬 범위가 얼마나 큰가에 따라 최상이라고 생각하는 수를 택할 수 있도록 한다.

 


Final Gathering 과 Global Illumination 을 함께 사용하기

상형문자의 에지와 뒷면에 라이팅을 추가하기위해 Final Gathering이 사용되었다.

Final Gathering 과 글로벌 일루미네이션은 상호 보완적인 테크닉이다. Final Gathering은 글로벌 일루미네이션 효과를 눈에 띄게 개선시키며, 적은 빛으로 더 좋은 결과를 주게 된다. 또한 직접적인, 그림자를 만드는 조명을 추가하여 씬의 미를 더 향상시킬 수도 있다.