강의/컴퓨터 그래픽스

Global Illumination

SniKuz 2024. 5. 8. 15:33

목차

 

Global Illumination

빛의 성질

빛은 직진하는 특징이 있고, 빛이 물체의 표면에 닿으면 Reflection(반사), Refraction(굴절), Absorption(흡수)됩니다.
I(x,y) : 이 방향으로 들어오는 모든 빛들의 합

Global Illumination

모든 물체의 표면에서 반사/굴절되는 모든 빛들을 고려하는 모델링입니다.

Local illumination : 간단함, rasterization 사용, 물체들간의 상호작용 고려 X
Global illumination : 복잡함, 물체들 간의 상호 작용을 고려한 계산 필요

Global illumination을 구현하기 위해 Ray-tracing method, Reflections, Caustics ... 등 알고리즘이 있습니다.

 

 

Ray - Tracing Algorithm

1. (이론) image-ordered rendering : 광원에서 반사된 image의 각 pixel을 통해 들어오는 빛의 양을 계산합니다.
[광원 → 물체 상호작용  → 눈]

2. (현실) Ray-Tracing : 광원이 아니라, 눈에서 viewing ray가 시작해 scene을 trace합니다.
[눈 → 물체 상호작용 → 종료지점(아무 물체도 닿지 않을 때, 반사/굴절하지 않는 물체일 때, 최대 횟수 도달)]

* viewing ray는 눈 즉 카메라에서 출발하니 카메라와 스크린에 따라 달라집니다.
다음과 같이 평행 투영, 원근 투영에 따라 카메라와 스크린 뷰 내 픽셀 1개마다 관계가 달라집니다.

 

Ray - Object Intersection

○ Ray와 구가 만날 때

Ray p(t)는 직선이니 직선의 방정식  e + td (e : eye, t : 얼마나 갈지, d : 방향벡터)가 구의 방정식(x^2 + y^2 + z^2 - R^2 = 0) 내에 있는지 없는지 체크합니다.

○ Ray와 삼각형이 만날 때

세점 a, b, c로 이루어진 삼각형의 내부의 점 f(u,v) = a + β(b-a) + ϒ(c-a) 가 직선 e+td와 같으면 됩니다.

○ Ray와 polygon이 만날 때

 

Shadows

물체 표면 위의 점 p와 광원 사이에 다른 물체가 존재하면 그림자에 속합니다.

 

Reflection, Refraction

물체에 부딪혔을 때 빛은 일정 부분은 반사되고 일정 부분은 굴절됩니다.

이 때 A < 0이라면 굴절되는 빛 없이 들어온 빛을 모두 반사하는 상태입니다.

* Fresnel Equation은 빛이 다른 매개에서 반사 효과가 얼마나 달라지는지를 설명한다 합니다.
fr = offset(기본값 ≈ 0) + scale(1 + V⋅N)ⁿ (가중치 ≈ 0.1~0.5) (Coefficient n ≈ 0.5~10)

Optimized Ray Tracing

기본적인 ray-tracing 알고리즘은 간단하지만, 매우 계산의 양이 많습니다. 모든 pixel에 대해서, 반복의 깊이가 깊어질수록 계산하는 ray가 기하급수적으로 증가합니다.

이를 위해서는 Trace 하는 ray의 수를 줄이거나, Ray-Object intersection 계산의 수를 줄여야합니다.
많이 쓰이는 방법들은 Boundin Boxes, Object Hierarchies, Spatial Subdivision, Tree Pruning 등이 있습니다.

More

Ray tracer는 Fog, Soft Shadows, Frequency Dependent Light 등을 시뮬레이션 할 수 있습니다.
하지만 diffuse - diffuse interaction 등 표현에 어려움이 있어 Radiosity를 도입했다 합니다.
*Radiosity : 컴퓨터 그래픽스에서 분산광을 계산하는 방법