본문 바로가기

3D Graphics

Physically Based Rendering


Physically Based Rendering


1, 서론


Physically Based Rendering 또는 Unbiased Rendering은 정확한 물리 법칙을 이용하여 빛의 경로를 계산하고 물질의 재질을 표현하고자 하는 렌더링 방법이다. 특히 핵심이 되는 것은 광원으로부터 직접 물체에 도달하는 빛 뿐만 아니라 다른 물체로부터 반사되어 오는 빛, 즉 간접 조명을 계산하는 방법이다. 이러한 간접 조명을 표현하여 렌더링하는 것을 Global illumination (GI)이라고도 하며, 오늘날 대부분의 렌더러가 GI를 지원하지만, 피지컬 렌더러에서는 이러한 간접적인 빛을 계산하기 위해 보다 물리적 광학 현상에 가까운 알고리듬을 사용한다. 이렇게 간접 조명을 정확히 표현하기 위한 시도는 오래전부터안 계속되었지만, 실제로 응용될 수 있는 결과물이 나온 것은 1990년대 이후이다.

아래 이미지는 1990년 대 중반 래리 그리츠(Larry Gritz)가 만든 렌더맨 호환 렌더러인 BMRT (Blue Moon Rendering Tools)의 예제에 있는 렌더링 이미지이다, 반사된 빛에 의해 그림자가 만들어지는 장면은 당시에 개인적으로 상당한 충격이었던 것으로 기억된다.




BMRT 예제 중 한 장면



2. BRDF와 랜덤 샘플링

표면에서 빛의 반사를 표현하기 위해서는 BRDF (bidirectional reflectance distribution function)를 사용한다. BRDF는 아래 그림과 같이 입사하는 빛과 관측되는 광도 사이의 관계를 설명하는 함수이다.

광원으로부터 물체에 반사되어 카메라로 들어오는 빛을 계산하기 위해서는 위의 BRDF를 모든 빛의 경로에 대하여 적분해 주어야 한다. 직접적인 광원만을 고려하는 경우, 점 P에서 광원으로 향하는 방향은 유한하며 이들 방향들에 대한 계산을 수행하여 종합하면 된다.

하지만, 피컬 는 원 만 라 터 을 는 든 면의 점들이 른 의 을 기 에 상 의 이 는 이 다. 따라서 무한하게 많은 빛의 경로들을 해석적으로 정확히 계산하는 것은 불가능하며, random sampling을 사용하게 된다. 이러한 random sampling을 위해 확률론적 샘플링 방법들이 사용된다. 확률론적 샘플링 방법이란 샘플링의 횟수가 많을 수록 그 값이 올바른 확률값에 수렴해간다는 성질을 이용하는 것으로서, 예를 들어, 주사위를 던져 1의 눈이 나오는 확률을 실제로 주사위를 던져서 알아내는 방법과 유사하다. 주사위를 10번 던진다면 1의 눈이 나오는 확률이 0이 될 수도 있고, 절반을 넘어갈수도 있지만, 주사위를 던지는 회수가 많아질 수록 그 확률은 1/6에 수렴해가게 된다.

피지컬 렌더링에서의 샘플링도 같은 원리를 이용하며, 샘플링의 초기에는 부정확한 결과가 나타나지만, 시간이 지남에 따라 차차 올바른 이미지로 수렴해가게 된다. 따라서, 대부분의 피지컬 렌더러에서는 사용자가 원하는 시간만큼 누적적으로 렌더링을 수행하게 하고 있다.

이러한 확률론적 시뮬레이션 방법으로는 주로 라스베가스 알고리듬과 몬테 카를로 알고리듬이 쓰이고 있으나, 렌더링 분야에서는 몬테 카를로(Monte Carlo) 시뮬레이션 방법을 사용하고 있다.

또한 실제 샘플링 방법에 있어서, 기존의 샘플에 대한 서브샘플을 추출할 때 이른바 random mutation을 사용하는 Metropolis 방법이 사용된다.



BRDF


또한 피부나 반투명 물질로부터의 스캐터링(Subsurface scattering: SSS)을 표현하기 위해 다음과 같은 BSSRDF(bidirectional scattering-surface reflectance distribution function)가 사용되기도 한다.





















BSSRDF


포톤 매핑(photon mapping)

Light transport를 계산하는 또 다른 방법으로 포톤 매핑(photon mapping)이 있다. 포톤 매핑은 광원으로부터 수 많은 포톤들이 방출되는 것으로 가정하고, 이들 포톤들이 물체와 만나는 점(vertex)에 이들이 축적되어 이로부터 새로운 광원이 생성되는 것으로 간주한다. 원래의 포톤 매핑은 biased rendering에 해당하지만, 이후 PPM(progressive photon mapping)과 SPPM(stochastic progressive photon mapping) 과 같은 unbiased rendering 방법이 개발되었다.



포톤 맵에 저장된 포톤들


위 포톤 맵을 이용한 렌더링 이미지



새로운 시도들

이 와 함께, BPT와 포톤 매핑의 장점을 혼합한 Vertex connection and merging (VCM) 알고리듬까지 제안되어 있다. VCM 알고리듬은 특히 볼룸과 관련된 렌더링에서 기존 BPT에 비해 뛰어난 결과를 보여주고 있다. 아래 그림은 볼룸 렌더링에서 VCM와 기존의 BPT를 사용한 결과이다. VCM은 오픈 소스 피지컬 렌더러인 Luxrender에서 기본적인 알고리듬으로 채택될 예정이다.


























































 

11111

VCM을 사용한 볼룸 렌더링 - Luxrender


 BPT를 사용한 볼룸 렌더링 - Luxrender 


4. Physical Renders


Maxwell render

최근에 3.0 버전이 발표된 Maxwell render는 unbiased renderer의 선구적 제품으로, 편법을 쓰지 않고 물리적으로 올바른 과정으로 이미지를 만들어 내는 것을 목표로 한다. 이로 인해 속도가 느린 단점이 있으나 가장 사실에 가까운 렌더링 결과를 출력할 수 있다.




Arnold

Arnold 또한 unbiased rendering을 추구하지만, 상당히 빠른 렌더링 시간을 제공하며 일반 프로덕션에서도 사용할 수 있는 수준의 렌더링 품질과 시간을 제공한다.


Cycle

Cycle은 오픈 소스 3D 툴인 Blender에 내장된 렌더러이다.


Luxrender

Luxrender는 GPL 기반의 오픈 소스 렌더러이다. 현재 1.31 버전이 발표되었으며, 코드를 전면적으로 개수하여 새로운 버전을 준비하고 있다.



Octane render

Octane render는 GPU 연산 기반의 렌더러이며 CUDA를 사용한 빠른 렌더링 시간을 제공한다. Octane render는 Luxrender를 시작한 Terrence Vergauwen 이 Luxrender 프로젝트에서 나와 새로이 만든 상용 렌더러이며, 현재는 Otoy group에 인수되었다.


Mitsuba render

Mitsuba render는 Manifold 알고리듬을 개발한 Wenzel Jacob이 만든 렌더러이며, 각종 이론적인 알고리듬을 구현하는 실험적인 렌더러이다.




5. 미래의 과제


현재 가장 난제로 남아 있는 것은 표면 내부의 스캐터링(SSS)과 볼룸을 정확히 렌더링하는 것이며, 이에 대한 연구가 활발히 이루어지고 있다.

 



 



'3D Graphics' 카테고리의 다른 글

Meshfusion, 불리언 연산의 혁신  (0) 2015.03.26
Physically Based Rendering  (0) 2013.11.16
나의 3D 모델러  (0) 2012.02.16
LuxRender - 또 하나의 Unbiased Renderer  (0) 2009.10.16
Houdini 10 Pyro solver  (0) 2009.04.28
Uncanny Valley  (0) 2009.04.27